[MIRROR] Fantasy redgate map (#7035)
Co-authored-by: Casey <a.roaming.shadow@gmail.com> Co-authored-by: Raeschen <rycoop29@gmail.com>
@@ -263,6 +263,12 @@
|
|||||||
affecting.salve()
|
affecting.salve()
|
||||||
playsound(src, pick(apply_sounds), 25)
|
playsound(src, pick(apply_sounds), 25)
|
||||||
|
|
||||||
|
/obj/item/stack/medical/ointment/simple
|
||||||
|
name = "ointment paste"
|
||||||
|
desc = "A simple thick paste used to salve burns."
|
||||||
|
singular_name = "old-ointment"
|
||||||
|
icon_state = "old-ointment"
|
||||||
|
|
||||||
/obj/item/stack/medical/advanced/bruise_pack
|
/obj/item/stack/medical/advanced/bruise_pack
|
||||||
name = "advanced trauma kit"
|
name = "advanced trauma kit"
|
||||||
singular_name = "advanced trauma kit"
|
singular_name = "advanced trauma kit"
|
||||||
|
|||||||
@@ -23,4 +23,64 @@
|
|||||||
name = "katana"
|
name = "katana"
|
||||||
desc = "Woefully underpowered in D20. This one looks pretty sharp."
|
desc = "Woefully underpowered in D20. This one looks pretty sharp."
|
||||||
icon_state = "katana"
|
icon_state = "katana"
|
||||||
slot_flags = SLOT_BELT | SLOT_BACK
|
slot_flags = SLOT_BELT | SLOT_BACK
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/katana/caneblade
|
||||||
|
name = "cane blade"
|
||||||
|
desc = "Used for making people fall over instead of helping them stand up."
|
||||||
|
icon_state = "caneblade"
|
||||||
|
item_state = "caneblade"
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/rapier
|
||||||
|
name = "rapier"
|
||||||
|
desc = "A slender, fancy and sharply pointed sword."
|
||||||
|
icon_state = "rapier"
|
||||||
|
item_state = "rapier"
|
||||||
|
slot_flags = SLOT_BELT
|
||||||
|
applies_material_colour = 0
|
||||||
|
attack_verb = list("attacked", "stabbed", "prodded", "poked", "lunged")
|
||||||
|
edge = 0 //rapiers are pointy, but not cutty like other swords
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/longsword
|
||||||
|
name = "longsword"
|
||||||
|
desc = "A double-edged large blade."
|
||||||
|
icon_state = "longsword"
|
||||||
|
item_state = "longsword"
|
||||||
|
applies_material_colour = 0
|
||||||
|
slot_flags = SLOT_BELT | SLOT_BACK
|
||||||
|
can_cleave = TRUE
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/sabre
|
||||||
|
name = "sabre"
|
||||||
|
desc = "A sharp curved sword, a favored weapon of pirates far in the past."
|
||||||
|
icon_state = "sabre"
|
||||||
|
item_state = "sabre"
|
||||||
|
applies_material_colour = 0 //messes up the hilt color otherwise
|
||||||
|
slot_flags = SLOT_BELT
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/battleaxe
|
||||||
|
name = "battleaxe"
|
||||||
|
desc = "A one handed battle axe, still a deadly weapon."
|
||||||
|
icon_state = "axe"
|
||||||
|
item_state = "axe"
|
||||||
|
slot_flags = SLOT_BACK
|
||||||
|
attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut")
|
||||||
|
applies_material_colour = 0
|
||||||
|
drop_sound = 'sound/items/drop/axe.ogg'
|
||||||
|
pickup_sound = 'sound/items/pickup/axe.ogg'
|
||||||
|
can_cleave = TRUE
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/battleaxe/handle_shield(mob/user, var/damage, atom/damage_source = null, mob/attacker = null, var/def_zone = null, var/attack_text = "the attack")
|
||||||
|
if(unique_parry_check(user, attacker, damage_source) && prob(10))
|
||||||
|
user.visible_message("<span class='danger'>\The [user] parries [attack_text] with \the [src]!</span>")
|
||||||
|
playsound(src, 'sound/weapons/punchmiss.ogg', 50, 1)
|
||||||
|
return 1
|
||||||
|
return 0
|
||||||
|
|
||||||
|
/obj/item/weapon/material/sword/gladius
|
||||||
|
name = "gladius"
|
||||||
|
desc = "An ancient short sword, designed to stab and cut."
|
||||||
|
icon_state = "gladius"
|
||||||
|
item_state = "gladius"
|
||||||
|
applies_material_colour = 0
|
||||||
|
slot_flags = SLOT_BELT
|
||||||
|
|||||||
@@ -235,3 +235,110 @@
|
|||||||
prob(5);/obj/item/organ/internal/stomach,
|
prob(5);/obj/item/organ/internal/stomach,
|
||||||
prob(5);/obj/item/organ/internal/voicebox,
|
prob(5);/obj/item/organ/internal/voicebox,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/obj/random/potion
|
||||||
|
name = "random potion"
|
||||||
|
desc = "A random potion."
|
||||||
|
icon_state = "potion"
|
||||||
|
spawn_nothing_percentage = 0
|
||||||
|
|
||||||
|
/obj/random/potion/item_to_spawn()
|
||||||
|
return pick(prob(20);/obj/item/weapon/reagent_containers/glass/bottle/potion/healing,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/greater_healing,
|
||||||
|
prob(20);/obj/item/weapon/reagent_containers/glass/bottle/potion/fire_resist,
|
||||||
|
prob(20);/obj/item/weapon/reagent_containers/glass/bottle/potion/antidote,
|
||||||
|
prob(20);/obj/item/weapon/reagent_containers/glass/bottle/potion/water,
|
||||||
|
prob(8);/obj/item/weapon/reagent_containers/glass/bottle/potion/regeneration,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/panacea,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/magic,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/lightness,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/SOP,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/shrink,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/growth,
|
||||||
|
prob(20);/obj/item/weapon/reagent_containers/glass/bottle/potion/pain,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/faerie,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/relaxation,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/speed,
|
||||||
|
prob(10);/obj/item/weapon/reagent_containers/glass/bottle/potion/attractiveness,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/girljuice,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/boyjuice,
|
||||||
|
prob(4);/obj/item/weapon/reagent_containers/glass/bottle/potion/badpolymorph,
|
||||||
|
prob(2);/obj/item/weapon/reagent_containers/glass/bottle/potion/bonerepair,
|
||||||
|
prob(1);/obj/item/weapon/reagent_containers/glass/bottle/potion/truepolymorph
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/random/potion_ingredient
|
||||||
|
name = "random potion ingredient"
|
||||||
|
desc = "A random potion."
|
||||||
|
icon_state = "ingredient"
|
||||||
|
spawn_nothing_percentage = 0
|
||||||
|
|
||||||
|
/obj/random/potion_ingredient/item_to_spawn()
|
||||||
|
return pick(prob(10);/obj/item/weapon/potion_material/blood_ruby,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/ruby_eye,
|
||||||
|
prob(10);/obj/item/weapon/potion_material/golden_scale,
|
||||||
|
prob(10);/obj/item/weapon/potion_material/frozen_dew,
|
||||||
|
prob(10);/obj/item/weapon/potion_material/living_coral,
|
||||||
|
prob(4);/obj/item/weapon/potion_material/rare_horn,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/moldy_bread,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/glowing_gem,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/giant_toe,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/flesh_of_the_stars,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/spinning_poppy,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/salt_mage,
|
||||||
|
prob(10);/obj/item/weapon/potion_material/golden_grapes,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/fairy_house,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/thorny_bulb,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/ancient_egg,
|
||||||
|
prob(5);/obj/item/weapon/potion_material/crown_stem,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/red_ingot,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/soft_diamond,
|
||||||
|
prob(2);/obj/item/weapon/potion_material/solid_mist,
|
||||||
|
prob(1);/obj/item/weapon/potion_material/spider_leg,
|
||||||
|
prob(1);/obj/item/weapon/potion_material/folded_dark
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/random/potion_base
|
||||||
|
name = "random potion base"
|
||||||
|
desc = "A random potion base."
|
||||||
|
icon_state = "base"
|
||||||
|
spawn_nothing_percentage = 0
|
||||||
|
|
||||||
|
/obj/random/potion_base/item_to_spawn()
|
||||||
|
return pick(prob(10);/obj/item/weapon/potion_base/aqua_regia,
|
||||||
|
prob(10);/obj/item/weapon/potion_base/ichor,
|
||||||
|
prob(10);/obj/item/weapon/potion_base/alkahest
|
||||||
|
)
|
||||||
|
|
||||||
|
/obj/random/fantasy_item
|
||||||
|
name = "random fantasy item"
|
||||||
|
desc = "A random fantasy item."
|
||||||
|
icon_state = "fantasy"
|
||||||
|
spawn_nothing_percentage = 0
|
||||||
|
|
||||||
|
/obj/random/fantasy_item/item_to_spawn()
|
||||||
|
return pick(prob(3);/obj/item/device/healthanalyzer/scroll,
|
||||||
|
prob(10);/obj/item/weapon/gun/energy/taser/magic,
|
||||||
|
prob(5);/obj/item/weapon/bluespace_harpoon/wand,
|
||||||
|
prob(10);/obj/item/device/slow_sizegun/magic,
|
||||||
|
prob(10);/obj/item/clothing/gloves/bluespace/magic,
|
||||||
|
prob(30);/obj/item/weapon/coin/gold,
|
||||||
|
prob(30);/obj/item/weapon/coin/silver,
|
||||||
|
prob(30);/obj/item/weapon/coin/platinum,
|
||||||
|
prob(20);/obj/item/weapon/material/sword/rapier,
|
||||||
|
prob(20);/obj/item/weapon/material/sword/longsword,
|
||||||
|
prob(20);/obj/item/clothing/head/helmet/bucket/wood,
|
||||||
|
prob(3);/obj/item/weapon/tool/wirecutters/alien/magic,
|
||||||
|
prob(3);/obj/item/weapon/tool/crowbar/alien/magic,
|
||||||
|
prob(3);/obj/item/weapon/tool/screwdriver/alien/magic,
|
||||||
|
prob(3);/obj/item/weapon/weldingtool/alien/magic,
|
||||||
|
prob(3);/obj/item/weapon/tool/wrench/alien/magic,
|
||||||
|
prob(3);/obj/item/weapon/surgical/bone_clamp/alien/magic,
|
||||||
|
prob(10);/obj/item/stack/material/gold,
|
||||||
|
prob(10);/obj/item/stack/material/silver,
|
||||||
|
prob(3);/obj/item/weapon/bone/skull,
|
||||||
|
prob(20);/obj/item/weapon/material/twohanded/staff,
|
||||||
|
prob(3);/obj/item/weapon/gun/energy/hooklauncher/ring,
|
||||||
|
prob(3);/obj/item/toy/eight_ball,
|
||||||
|
prob(3);/obj/item/device/perfect_tele/magic
|
||||||
|
)
|
||||||
|
|||||||
@@ -1441,6 +1441,10 @@
|
|||||||
decals = null
|
decals = null
|
||||||
color = COLOR_OFF_WHITE
|
color = COLOR_OFF_WHITE
|
||||||
|
|
||||||
|
/decl/closet_appearance/wall_double/wooden
|
||||||
|
decals = null
|
||||||
|
color = WOOD_COLOR_RICH
|
||||||
|
|
||||||
/decl/closet_appearance/wall_double/medical
|
/decl/closet_appearance/wall_double/medical
|
||||||
decals = null
|
decals = null
|
||||||
color = COLOR_OFF_WHITE
|
color = COLOR_OFF_WHITE
|
||||||
|
|||||||
@@ -80,6 +80,27 @@
|
|||||||
/obj/structure/closet/walllocker/medical/east
|
/obj/structure/closet/walllocker/medical/east
|
||||||
pixel_x = 32
|
pixel_x = 32
|
||||||
dir = EAST
|
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
|
//VOREStation Add End
|
||||||
|
|
||||||
//double-size "cabinet" lockers, from Killian
|
//double-size "cabinet" lockers, from Killian
|
||||||
|
|||||||
@@ -730,6 +730,15 @@
|
|||||||
open_sound = 'sound/effects/wooden_closet_open.ogg'
|
open_sound = 'sound/effects/wooden_closet_open.ogg'
|
||||||
close_sound = 'sound/effects/wooden_closet_close.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
|
//Mining Cart
|
||||||
/obj/structure/closet/crate/miningcar
|
/obj/structure/closet/crate/miningcar
|
||||||
name = "mining cart"
|
name = "mining cart"
|
||||||
|
|||||||
@@ -170,6 +170,41 @@
|
|||||||
return FALSE
|
return FALSE
|
||||||
return TRUE
|
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 CUT_TIME
|
||||||
#undef CLIMB_TIME
|
#undef CLIMB_TIME
|
||||||
|
|
||||||
|
|||||||
52
code/game/objects/structures/props/fantasy.dm
Normal file
@@ -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
|
||||||
@@ -388,4 +388,4 @@
|
|||||||
|
|
||||||
if(!anchored)
|
if(!anchored)
|
||||||
to_chat(user,"<span class='notice'> The bed isn't secured.</span>")
|
to_chat(user,"<span class='notice'> The bed isn't secured.</span>")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -124,7 +124,6 @@
|
|||||||
else
|
else
|
||||||
to_chat(user, "<span class='notice'>You need a tighter grip.</span>")
|
to_chat(user, "<span class='notice'>You need a tighter grip.</span>")
|
||||||
|
|
||||||
|
|
||||||
/obj/structure/urinal
|
/obj/structure/urinal
|
||||||
name = "urinal"
|
name = "urinal"
|
||||||
desc = "The HU-452, an experimental urinal."
|
desc = "The HU-452, an experimental urinal."
|
||||||
|
|||||||
@@ -229,3 +229,17 @@ var/list/flesh_overlay_cache = list()
|
|||||||
/turf/simulated/wall/wood
|
/turf/simulated/wall/wood
|
||||||
icon_state = "wood"
|
icon_state = "wood"
|
||||||
icon = 'icons/turf/wall_masks_vr.dmi'
|
icon = 'icons/turf/wall_masks_vr.dmi'
|
||||||
|
|
||||||
|
/turf/simulated/wall/stonebricks
|
||||||
|
icon_state = "stonebrick"
|
||||||
|
icon = 'icons/turf/wall_masks_vr.dmi'
|
||||||
|
|
||||||
|
/turf/simulated/wall/stonebricks/Initialize(mapload)
|
||||||
|
. = ..(mapload, "concrete")
|
||||||
|
|
||||||
|
/turf/simulated/wall/stonelogs
|
||||||
|
icon_state = "stonelogs"
|
||||||
|
icon = 'icons/turf/wall_masks_vr.dmi'
|
||||||
|
|
||||||
|
/turf/simulated/wall/stonelogs/Initialize(mapload)
|
||||||
|
. = ..(mapload, "concrete",MAT_LOG)
|
||||||
@@ -889,3 +889,175 @@
|
|||||||
/area/redgate/train/captain
|
/area/redgate/train/captain
|
||||||
name = "Train Captain's Quarters"
|
name = "Train Captain's Quarters"
|
||||||
icon_state = "purple"
|
icon_state = "purple"
|
||||||
|
|
||||||
|
|
||||||
|
// fantasy areas
|
||||||
|
|
||||||
|
/area/redgate/fantasy
|
||||||
|
name = "Fantasy"
|
||||||
|
icon_state = "red"
|
||||||
|
requires_power = 0
|
||||||
|
|
||||||
|
/area/redgate/fantasy/streets
|
||||||
|
name = "Fantasy outside"
|
||||||
|
icon_state = "red"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/tavern
|
||||||
|
name = "Fantasy tavern"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/shop
|
||||||
|
name = "Fantasy shop"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/alchemist
|
||||||
|
name = "Fantasy alchemist"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/castle
|
||||||
|
name = "Fantasy castle"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/blacksmith
|
||||||
|
name = "Fantasy blacksmith"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/hedgemaze
|
||||||
|
name = "Fantasy hedgemaze"
|
||||||
|
icon_state = "green"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/butcher
|
||||||
|
name = "Fantasy butcher"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/jewler
|
||||||
|
name = "Fantasy jewler"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/restaurant
|
||||||
|
name = "Fantasy restaurant"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/cafe
|
||||||
|
name = "Fantasy cafe"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/house
|
||||||
|
name = "Fantasy house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/gambling
|
||||||
|
name = "Fantasy gambling den"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/washhouse
|
||||||
|
name = "Fantasy wash house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/aliens
|
||||||
|
name = "Fantasy alien house"
|
||||||
|
icon_state = "purple"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/walls
|
||||||
|
name = "Fantasy green"
|
||||||
|
icon_state = "green"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/guardhouse
|
||||||
|
name = "Fantasy guard house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/mininghouse
|
||||||
|
name = "Fantasy mining house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/farmhouse
|
||||||
|
name = "Fantasy farm house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/church
|
||||||
|
name = "Fantasy church"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/churchhouse
|
||||||
|
name = "Fantasy church house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/arena
|
||||||
|
name = "Fantasy arena"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/redgate
|
||||||
|
name = "Fantasy redgate"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/paladinhouse
|
||||||
|
name = "Fantasy paladin house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/druid
|
||||||
|
name = "Fantasy druid house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/bard
|
||||||
|
name = "Fantasy bard house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/rogue
|
||||||
|
name = "Fantasy rogue house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/grocery
|
||||||
|
name = "Fantasy grocery store"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/bakery
|
||||||
|
name = "Fantasy bakery"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/barbarian
|
||||||
|
name = "Fantasy barbarian house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/ranger
|
||||||
|
name = "Fantasy ranger house"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/ratbasement
|
||||||
|
name = "Fantasy rat infested basement"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/underground
|
||||||
|
name = "Fantasy underground"
|
||||||
|
icon_state = "red"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/dungeon
|
||||||
|
name = "Fantasy dungeon"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/underwater
|
||||||
|
name = "Fantasy underwater"
|
||||||
|
icon_state = "bluenew"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/crypt
|
||||||
|
name = "Fantasy crypt"
|
||||||
|
icon_state = "green"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/caves
|
||||||
|
name = "Fantasy caves"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/alienbasement
|
||||||
|
name = "Fantasy alien basement"
|
||||||
|
icon_state = "yellow"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/dark
|
||||||
|
name = "Fantasy dark"
|
||||||
|
icon_state = "green"
|
||||||
|
|
||||||
|
/area/redgate/fantasy/mines
|
||||||
|
name = "Fantasy house"
|
||||||
|
icon_state = "green"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
151
code/modules/food/glass/bottle_potion.dm
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion
|
||||||
|
name = "healing potion"
|
||||||
|
desc = "A small green bottle containing some red liquid that claims to heal injuries."
|
||||||
|
icon = 'icons/obj/chemical.dmi'
|
||||||
|
icon_state = "bottle-5"
|
||||||
|
prefill = list("bicaridine" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/healing
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/greater_healing
|
||||||
|
name = "greater healing potion"
|
||||||
|
desc = "A small green bottle containing some thick red liquid that claims to rapidly heal injuries."
|
||||||
|
prefill = list("vermicetol" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/fire_resist
|
||||||
|
name = "fire resistance potion"
|
||||||
|
desc = "A small green bottle containing some orange liquid that claims to protect the drinker from fire."
|
||||||
|
prefill = list("dermaline" = 15, "kelotane" = 15)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/antidote
|
||||||
|
name = "antidote potion"
|
||||||
|
desc = "A small green bottle containing some green liquid that claims to cure poisoning."
|
||||||
|
prefill = list("anti_toxin" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/water
|
||||||
|
name = "water breathing potion"
|
||||||
|
desc = "A small green bottle containing some blue liquid that claims to allow the drinker to breathe under water."
|
||||||
|
prefill = list("dexalinp" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/regeneration
|
||||||
|
name = "regeneration potion"
|
||||||
|
desc = "A small green bottle containing some purple liquid that claims to regenerate severe wounds."
|
||||||
|
prefill = list("peridaxon" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/panacea
|
||||||
|
name = "panacea potion"
|
||||||
|
desc = "A small green bottle containing some white liquid that claims to cure all ailments."
|
||||||
|
prefill = list("spaceacillin" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/magic
|
||||||
|
name = "magic resistence potion"
|
||||||
|
desc = "A small green bottle containing some dark green liquid that claims to cure magical effects."
|
||||||
|
prefill = list("hyronalin" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/lightness
|
||||||
|
name = "feather weight potion"
|
||||||
|
desc = "A small green bottle containing some mysterious liquid that claims to make you feel lighter."
|
||||||
|
prefill = list("ickypak" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/SOP
|
||||||
|
name = "standard operating potion"
|
||||||
|
desc = "A small green bottle containing some yellow liquid that claims to be important."
|
||||||
|
prefill = list("myelamine" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/shrink
|
||||||
|
name = "diminution potion"
|
||||||
|
desc = "A small green bottle containing some swirling cyan liquid that claims to reduce the drinkers stature."
|
||||||
|
prefill = list("microcillin" = 1)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/growth
|
||||||
|
name = "fire giant potion"
|
||||||
|
desc = "A small green bottle containing some bubbling yellow liquid that claims to turn the drinker into a fire giant."
|
||||||
|
prefill = list("macrocillin" = 1, "capsaicin" = 5)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/pain
|
||||||
|
name = "grit potion"
|
||||||
|
desc = "A small green bottle containing some thin purple liquid that claims to power through even the most perilous injuries."
|
||||||
|
prefill = list("tramadol" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/faerie
|
||||||
|
name = "faerie dance potion"
|
||||||
|
desc = "A small green bottle containing some swishing pink liquid that claims to help you open your mind."
|
||||||
|
prefill = list("psilocybin" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/relaxation
|
||||||
|
name = "relaxation potion"
|
||||||
|
desc = "A small green bottle containing some still green liquid that claims to make everything feel just fine, really."
|
||||||
|
prefill = list("ambrosia_extract" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/speed
|
||||||
|
name = "blinding speed potion"
|
||||||
|
desc = "A small green bottle containing some bubbling orange liquid that claims to make you move at incredible speeds."
|
||||||
|
prefill = list("hyperzine" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/attractiveness
|
||||||
|
name = "love potion"
|
||||||
|
desc = "A small green bottle containing some light mint coloured liquid that claims to make you more attractive to potential partners."
|
||||||
|
prefill = list("menthol" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/girljuice
|
||||||
|
name = "girl transformation potion"
|
||||||
|
desc = "A small green bottle containing some pretty pink liquid that claims to turn the drinker into a woman."
|
||||||
|
prefill = list("gynorovir" = 1)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/boyjuice
|
||||||
|
name = "boy transformation potion"
|
||||||
|
desc = "A small green bottle containing some strong blue liquid that claims to turn the drinker into a man."
|
||||||
|
prefill = list("androrovir" = 1)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/badpolymorph
|
||||||
|
name = "unstable polymorph potion"
|
||||||
|
desc = "A small green bottle containing some uncomfortably green liquid that claims to transform the drinker wildly."
|
||||||
|
prefill = list("mutagen" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/bonerepair
|
||||||
|
name = "mending potion"
|
||||||
|
desc = "A small green bottle containing some pale blue liquid that claims to fix that which is broken."
|
||||||
|
prefill = list("osteodaxon" = 1)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/truepolymorph
|
||||||
|
name = "polymorph potion"
|
||||||
|
desc = "A small green bottle containing some strange purple liquid that claims to transform the drinker."
|
||||||
|
prefill = list("polymorph" = 1)
|
||||||
|
|
||||||
|
//Failed potions
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/plain
|
||||||
|
name = "plain potion"
|
||||||
|
desc = "A small green bottle containing some plain transparent liquid."
|
||||||
|
prefill = list("water" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/ethanol
|
||||||
|
name = "thin potion"
|
||||||
|
desc = "A small green bottle containing some thin transparent liquid with a solvent scent."
|
||||||
|
prefill = list("ethanol" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/sugar
|
||||||
|
name = "sweet potion"
|
||||||
|
desc = "A small green bottle containing some white translucent liquid with a sweet scent."
|
||||||
|
prefill = list("sugar" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/capsaicin
|
||||||
|
name = "warm potion"
|
||||||
|
desc = "A small green bottle containing some red liquid."
|
||||||
|
prefill = list("capsaicin" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/soporific
|
||||||
|
name = "still potion"
|
||||||
|
desc = "A small green bottle containing some calm blue liquid."
|
||||||
|
prefill = list("stoxin" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/lipostipo
|
||||||
|
name = "thick potion"
|
||||||
|
desc = "A small green bottle containing some thick viscous liquid."
|
||||||
|
prefill = list("lipostipo" = 30)
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/phoron
|
||||||
|
name = "volatile potion"
|
||||||
|
desc = "A small green bottle containing some volatile purple liquid."
|
||||||
|
prefill = list("phoron" = 10)
|
||||||
|
|
||||||
@@ -664,4 +664,5 @@
|
|||||||
for(var/M in workingList)
|
for(var/M in workingList)
|
||||||
if(istype(M, circuit)) // Yes, we remove circuit twice. Yes, it's necessary. Yes, it's stupid.
|
if(istype(M, circuit)) // Yes, we remove circuit twice. Yes, it's necessary. Yes, it's stupid.
|
||||||
workingList -= M
|
workingList -= M
|
||||||
return workingList
|
return workingList
|
||||||
|
|
||||||
|
|||||||
@@ -956,6 +956,77 @@
|
|||||||
/datum/say_list/catslug/custom/pilotslug
|
/datum/say_list/catslug/custom/pilotslug
|
||||||
speak = list("In the pipe, five my five.","Kick the tires and light the fires!","Bogeys on my tail!","GOOSE!","I'm really good at the stick.","I'm not doing nothing.","Heh.","Can you keep up?","Can't keep the sky from me.")
|
speak = list("In the pipe, five my five.","Kick the tires and light the fires!","Bogeys on my tail!","GOOSE!","I'm really good at the stick.","I'm not doing nothing.","Heh.","Can you keep up?","Can't keep the sky from me.")
|
||||||
|
|
||||||
|
//Royal slug
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/alienanimals/catslug/custom/royalslug
|
||||||
|
name = "Ruler Purrton"
|
||||||
|
desc = "A golden-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one is adorned with a crown and red cloak, very fancy."
|
||||||
|
tt_desc = "Mollusca Felis Royallis"
|
||||||
|
icon_state = "catslugking"
|
||||||
|
icon_living = "catslugking"
|
||||||
|
icon_rest = "catslugking_rest"
|
||||||
|
icon_dead = "catslugking_dead"
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/royalslug)
|
||||||
|
say_list_type = /datum/say_list/catslug/custom/royalslug
|
||||||
|
|
||||||
|
/datum/category_item/catalogue/fauna/catslug/custom/royalslug
|
||||||
|
name = "Alien Wildlife - Catslug - Ruler Purrton"
|
||||||
|
desc = "Found in a castle beyond the redgate, Ruler Purrton\
|
||||||
|
is a catslug who spends their days presiding over this low \
|
||||||
|
technology town, living a life of luxury. Always seen with \
|
||||||
|
their trademark crown and cloak, this litter critter seems \
|
||||||
|
to just exude raw confidence and superiority. \
|
||||||
|
\
|
||||||
|
The Catslug is an omnivorous terrestrial creature.\
|
||||||
|
Exhibiting properties of both a cat and a slug (hence its name)\
|
||||||
|
it moves somewhat awkwardly. However, the unique qualities of\
|
||||||
|
its body make it exceedingly flexible and smooth, allowing it to\
|
||||||
|
wiggle into and move effectively in even extremely tight spaces.\
|
||||||
|
Additionally, it has surprisingly capable hands, and moves quite\
|
||||||
|
well on two legs or four. Caution is advised when interacting\
|
||||||
|
with these creatures, they are quite intelligent, and proficient\
|
||||||
|
tool users."
|
||||||
|
value = CATALOGUER_REWARD_TRIVIAL
|
||||||
|
|
||||||
|
/datum/say_list/catslug/custom/royalslug
|
||||||
|
speak = list("Let them eat cake. Lots and lots of cake.", "Fetch my good cloak.", "I myself prefer my ancient eggs for breakfast!", "Have you come to pay tribute?", "How dare you intrude?", "Bring me the finest of fine finery.", "HARK!", "With great power comes great dinner.")
|
||||||
|
|
||||||
|
//crypt slug
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/alienanimals/catslug/custom/cryptslug
|
||||||
|
name = "Keeper Sluguloth"
|
||||||
|
desc = "A dark-furred noodley bodied creature with thin arms and legs, and gloomy dark eyes. This one is adorned with a dark cloak that obscures most of it's body."
|
||||||
|
tt_desc = "Mollusca Felis Necrosis"
|
||||||
|
icon_state = "cryptslug"
|
||||||
|
icon_living = "cryptslug"
|
||||||
|
icon_rest = "cryptslug_rest"
|
||||||
|
icon_dead = "cryptslug_dead"
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/fauna/catslug/custom/cryptslug)
|
||||||
|
say_list_type = /datum/say_list/catslug/custom/cryptslug
|
||||||
|
|
||||||
|
/datum/category_item/catalogue/fauna/catslug/custom/cryptslug
|
||||||
|
name = "Alien Wildlife - Catslug - Keeper Sluguloth"
|
||||||
|
desc = "Found in a deep beneath a town beyond the redgate, Sluguloth\
|
||||||
|
is a catslug who spends their days lurking within dark dungeons \
|
||||||
|
alongside monstrous beings of all sorts. Always seen within \
|
||||||
|
their dark cloak, obscuring them, this litter critter seems \
|
||||||
|
to just exude pure menance and up-to-no-goodness. \
|
||||||
|
\
|
||||||
|
The Catslug is an omnivorous terrestrial creature.\
|
||||||
|
Exhibiting properties of both a cat and a slug (hence its name)\
|
||||||
|
it moves somewhat awkwardly. However, the unique qualities of\
|
||||||
|
its body make it exceedingly flexible and smooth, allowing it to\
|
||||||
|
wiggle into and move effectively in even extremely tight spaces.\
|
||||||
|
Additionally, it has surprisingly capable hands, and moves quite\
|
||||||
|
well on two legs or four. Caution is advised when interacting\
|
||||||
|
with these creatures, they are quite intelligent, and proficient\
|
||||||
|
tool users."
|
||||||
|
value = CATALOGUER_REWARD_TRIVIAL
|
||||||
|
|
||||||
|
/datum/say_list/catslug/custom/cryptslug
|
||||||
|
speak = list("I have a lot of nasty friends.", "Do not test me.", "I shall rise again!", "How dare you step foot in my domain?", "Dare you indluge in dark desires?", "I am become death, one day.", "Foul creature!", "I used to think my life was a tragedy, but now I realize it's kind of okay actually.")
|
||||||
|
|
||||||
|
|
||||||
//=============================
|
//=============================
|
||||||
//Admin-spawn only catslugs end
|
//Admin-spawn only catslugs end
|
||||||
//=============================
|
//=============================
|
||||||
|
|||||||
55
code/modules/mob/living/simple_mob/subtypes/vore/bat.dm
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
/mob/living/simple_mob/vore/bat
|
||||||
|
name = "giant bat"
|
||||||
|
desc = "Blimey, that's a big sky fox."
|
||||||
|
tt_desc = "Homo paramour"
|
||||||
|
|
||||||
|
icon_state = "bat"
|
||||||
|
icon = 'icons/mob/vore.dmi'
|
||||||
|
|
||||||
|
harm_intent_damage = 5
|
||||||
|
melee_damage_lower = 2
|
||||||
|
melee_damage_upper = 5
|
||||||
|
|
||||||
|
response_help = "nuzzles"
|
||||||
|
response_disarm = "flaps at"
|
||||||
|
response_harm = "bites"
|
||||||
|
|
||||||
|
attacktext = list("bites","scratches")
|
||||||
|
|
||||||
|
say_list_type = /datum/say_list/bat
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
|
||||||
|
|
||||||
|
faction = "vampire"
|
||||||
|
|
||||||
|
// Activate Noms!
|
||||||
|
/mob/living/simple_mob/vore/bat
|
||||||
|
vore_active = 1
|
||||||
|
vore_bump_chance = 50
|
||||||
|
vore_pounce_chance = 50
|
||||||
|
vore_standing_too = 1
|
||||||
|
vore_ignores_undigestable = 0
|
||||||
|
vore_default_mode = DM_DRAIN // They just want to drain you!
|
||||||
|
vore_digest_chance = 25 // But don't you dare try to escape...
|
||||||
|
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||||
|
|
||||||
|
/datum/say_list/bat
|
||||||
|
speak = list("Chirp!")
|
||||||
|
emote_hear = list("chirps","pings","clicks")
|
||||||
|
emote_see = list("flaps","grooms itself")
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/bat/init_vore()
|
||||||
|
..()
|
||||||
|
var/obj/belly/B = vore_selected
|
||||||
|
B.name = "stomach"
|
||||||
|
B.desc = "The giant bat has managed to swallow you alive, which is particularly impressive given that it's still a rather small creature. It's belly bulges out as you're squeezed into the oppressively tight stomach, and it lands to manage the weight, wings curling over your form beneath. The body groans under your strain, burbling and growling as it gets to work on it's feed. However, at least for now, it seems to do you no physical harm. Instead, the damp walls that squelch across your body try to leech out your energy through some less direct means."
|
||||||
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
|
B.belly_fullscreen = "yet_another_tumby"
|
||||||
|
B.digest_brute = 2
|
||||||
|
B.digest_burn = 2
|
||||||
|
B.digest_oxy = 1
|
||||||
|
B.digestchance = 25
|
||||||
|
B.absorbchance = 0
|
||||||
|
B.escapechance = 15
|
||||||
|
B.selective_preference = DM_DRAIN
|
||||||
|
B.escape_stun = 5
|
||||||
|
|
||||||
132
code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
/mob/living/simple_mob/vore/cryptdrake
|
||||||
|
name = "crypt drake"
|
||||||
|
desc = "A massive drake-like creature with dark purple scales and a seemingly exposed skull."
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/fauna/greatwolf)
|
||||||
|
tt_desc = "Draconis necrotis"
|
||||||
|
icon = 'icons/mob/vore128x64.dmi'
|
||||||
|
icon_dead = "cryptdrake-dead"
|
||||||
|
icon_living = "cryptdrake"
|
||||||
|
icon_state = "cryptdrake"
|
||||||
|
icon_rest = "cryptdrake"
|
||||||
|
faction = "dragon"
|
||||||
|
old_x = -48
|
||||||
|
old_y = 0
|
||||||
|
vis_height = 92
|
||||||
|
melee_damage_lower = 20
|
||||||
|
melee_damage_upper = 15
|
||||||
|
friendly = list("nudges", "sniffs on", "rumbles softly at", "nuzzles")
|
||||||
|
default_pixel_x = -48
|
||||||
|
pixel_x = -48
|
||||||
|
pixel_y = 0
|
||||||
|
response_help = "bumps"
|
||||||
|
response_disarm = "shoves"
|
||||||
|
response_harm = "bites"
|
||||||
|
movement_cooldown = -1
|
||||||
|
harm_intent_damage = 10
|
||||||
|
melee_damage_lower = 10
|
||||||
|
melee_damage_upper = 20
|
||||||
|
maxHealth = 1000
|
||||||
|
attacktext = list("mauled")
|
||||||
|
see_in_dark = 8
|
||||||
|
minbodytemp = 0
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/vore
|
||||||
|
max_buckled_mobs = 1
|
||||||
|
mount_offset_y = 32
|
||||||
|
mount_offset_x = -16
|
||||||
|
can_buckle = TRUE
|
||||||
|
buckle_movable = TRUE
|
||||||
|
buckle_lying = FALSE
|
||||||
|
max_tox = 0 // immune to poison
|
||||||
|
|
||||||
|
special_attack_min_range = 2
|
||||||
|
special_attack_max_range = 4
|
||||||
|
special_attack_cooldown = 30 SECONDS
|
||||||
|
|
||||||
|
var/leap_warmup = 2 SECOND // How long the leap telegraphing is.
|
||||||
|
var/leap_sound = 'sound/weapons/spiderlunge.ogg'
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/cryptdrake
|
||||||
|
|
||||||
|
vore_bump_chance = 25
|
||||||
|
vore_digest_chance = 50
|
||||||
|
vore_escape_chance = 5
|
||||||
|
vore_pounce_chance = 100
|
||||||
|
vore_active = 1
|
||||||
|
vore_icons = 2
|
||||||
|
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||||
|
vore_capacity = 2
|
||||||
|
swallowTime = 50
|
||||||
|
vore_ignores_undigestable = TRUE
|
||||||
|
vore_default_mode = DM_DIGEST
|
||||||
|
vore_pounce_maxhealth = 125
|
||||||
|
vore_bump_emote = "tries to devour"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/cryptdrake/Login()
|
||||||
|
. = ..()
|
||||||
|
if(!riding_datum)
|
||||||
|
riding_datum = new /datum/riding/simple_mob(src)
|
||||||
|
verbs |= /mob/living/simple_mob/proc/animal_mount
|
||||||
|
verbs |= /mob/living/proc/toggle_rider_reins
|
||||||
|
movement_cooldown = -1
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/cryptdrake/init_vore()
|
||||||
|
. = ..()
|
||||||
|
var/obj/belly/B = vore_selected
|
||||||
|
B.name = "stomach"
|
||||||
|
B.desc = "The enormous beast snaps it's boney jaws around your form, effortlessly lifting you from the ground. Throwing it's head backwards, your body is tossed up momentarily as the maw parts wider, only for you to descend rapidly moments later. You're caught in the creature's throat for a moment, contracting dark purple flesh holding tightly onto you, there's no going back at this point. The peristaltic motions squeeze you down this tunnel towards your final destination, where you're soon relieved of the intense squelching to be pushed into a move flexible, stretching chamber. Immediately coated in caustic oozes, the world around you seems more than eager to ensure that you're soaked over every inch, wrinkled walls twisting and grinding around your body. The drake's stomach clenches and compresses over you rhythmically, attempting to eagerly add you to the soup of fluids that fill this sloshing gut. Omnipresent sounds of groaning, gurgling and burbling bodily functions signify just how active this process already is."
|
||||||
|
B.vore_sound = "Tauric Swallow"
|
||||||
|
B.release_sound = "Pred Escape"
|
||||||
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
|
B.fancy_vore = 1
|
||||||
|
B.selective_preference = DM_DIGEST
|
||||||
|
B.vore_verb = "devour"
|
||||||
|
B.digest_brute = 3
|
||||||
|
B.digest_burn = 2
|
||||||
|
B.digest_oxy = 0
|
||||||
|
B.digestchance = 50
|
||||||
|
B.absorbchance = 0
|
||||||
|
B.escapechance = 3
|
||||||
|
B.escape_stun = 5
|
||||||
|
B.contamination_color = "grey"
|
||||||
|
B.contamination_flavor = "Wet"
|
||||||
|
B.emote_lists[DM_DIGEST] = list(
|
||||||
|
"The drake growls in annoyance before clenching those wrinkled walls tight against your form, grinding away at you!",
|
||||||
|
"As the beast wanders about, you're forced to slip and slide around amidst a pool of thick digestive goop, sinking briefly into the thick, heavy walls!",
|
||||||
|
"You can barely hear the drake let out a pleased rumble as its stomach eagerly gurgles around its newfound meal!",
|
||||||
|
"As the thinning air begins to make you feel dizzy, menacing bworps and grumbles fill that dark, constantly shifting organ!",
|
||||||
|
"The constant, rhythmic kneading and massaging starts to take its toll along with the muggy heat, making you feel weaker and weaker!",
|
||||||
|
"The drake happily wanders around while digesting its meal, almost like it is trying to show off the hanging gut you've given it. Not like it made much of a difference on his already borderline obese form anyway~")
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/cryptdrake/do_special_attack(atom/A) //Mostly copied from hunter.dm
|
||||||
|
set waitfor = FALSE
|
||||||
|
if(!isliving(A))
|
||||||
|
return FALSE
|
||||||
|
var/mob/living/L = A
|
||||||
|
if(!L.devourable || !L.allowmobvore || !L.can_be_drop_prey || !L.throw_vore || L.unacidable)
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
set_AI_busy(TRUE)
|
||||||
|
visible_message(span("warning","\The [src]'s eyes flash ominously!"))
|
||||||
|
to_chat(L, span("danger","\The [src] focuses on you!"))
|
||||||
|
// Telegraph, since getting stunned suddenly feels bad.
|
||||||
|
do_windup_animation(A, leap_warmup)
|
||||||
|
sleep(leap_warmup) // For the telegraphing.
|
||||||
|
|
||||||
|
if(L.z != z) //Make sure you haven't disappeared to somewhere we can't go
|
||||||
|
set_AI_busy(FALSE)
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
// Do the actual leap.
|
||||||
|
status_flags |= LEAPING // Lets us pass over everything.
|
||||||
|
visible_message(span("critical","\The [src] leaps at \the [L]!"))
|
||||||
|
throw_at(get_step(L, get_turf(src)), special_attack_max_range+1, 1, src)
|
||||||
|
playsound(src, leap_sound, 75, 1)
|
||||||
|
|
||||||
|
sleep(5) // For the throw to complete. It won't hold up the AI ticker due to waitfor being false.
|
||||||
|
|
||||||
|
if(status_flags & LEAPING)
|
||||||
|
status_flags &= ~LEAPING // Revert special passage ability.
|
||||||
|
|
||||||
|
set_AI_busy(FALSE)
|
||||||
|
if(Adjacent(L)) //We leapt at them but we didn't manage to hit them, let's see if we're next to them
|
||||||
|
L.Weaken(2) //get knocked down, idiot
|
||||||
72
code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
/mob/living/simple_mob/vore/peasant
|
||||||
|
name = "peasant"
|
||||||
|
desc = "They're just about getting by."
|
||||||
|
tt_desc = "Homo Sapiens"
|
||||||
|
|
||||||
|
icon_state = "peasantfa"
|
||||||
|
icon = 'icons/mob/vore.dmi'
|
||||||
|
|
||||||
|
harm_intent_damage = 2
|
||||||
|
melee_damage_lower = 1
|
||||||
|
melee_damage_upper = 2
|
||||||
|
|
||||||
|
response_help = "pats"
|
||||||
|
response_disarm = "pushes"
|
||||||
|
response_harm = "punches"
|
||||||
|
|
||||||
|
attacktext = list("punched","kicked")
|
||||||
|
|
||||||
|
say_list_type = /datum/say_list/peasant
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
|
||||||
|
|
||||||
|
var/random_skin = 1
|
||||||
|
var/list/skins = list(
|
||||||
|
"peasantfa",
|
||||||
|
"peasantfb",
|
||||||
|
"peasantfc",
|
||||||
|
"peasantma",
|
||||||
|
"peasantmb"
|
||||||
|
)
|
||||||
|
|
||||||
|
faction = "peasant"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/peasant/New()
|
||||||
|
..()
|
||||||
|
if(random_skin)
|
||||||
|
icon_living = pick(skins)
|
||||||
|
icon_rest = "[icon_living]asleep"
|
||||||
|
icon_dead = "[icon_living]-dead"
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
// Activate Noms!
|
||||||
|
/mob/living/simple_mob/vore/peasant
|
||||||
|
vore_active = 1
|
||||||
|
vore_bump_chance = 10
|
||||||
|
vore_pounce_chance = 20
|
||||||
|
vore_standing_too = 1
|
||||||
|
vore_ignores_undigestable = 0
|
||||||
|
vore_default_mode = DM_HOLD
|
||||||
|
vore_digest_chance = 25 // But don't you dare try to escape...
|
||||||
|
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||||
|
|
||||||
|
/datum/say_list/peasant
|
||||||
|
speak = list("Fine day!","What was I doing again? Oh yeah, nothing.","How are ya?","I sure do love bread.","Where did I leave my scraps of cloth?","Sure is a good time to exist, I guess.")
|
||||||
|
emote_hear = list("yawns","'s stomach grumbles","shuffles")
|
||||||
|
emote_see = list("exists","just stands there","smiles","looks around")
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/peasant/init_vore()
|
||||||
|
..()
|
||||||
|
var/obj/belly/B = vore_selected
|
||||||
|
B.name = "stomach"
|
||||||
|
B.desc = "You've somehow managed to get yourself eaten by one of the local peasants. After jamming you down into their stomach, you find yourself cramped up tight in a space that clearly shouldn't be able to accept you. They let out a relieved sigh as they heft around their new found weight, giving it a hearty pat, clearly content to get a good meal for once. The world around you groans and grumbles, but the gut is far from harmful to you right now, even as the walls clench down on your body."
|
||||||
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
|
B.belly_fullscreen = "yet_another_tumby"
|
||||||
|
B.digest_brute = 1
|
||||||
|
B.digest_burn = 1
|
||||||
|
B.digest_oxy = 0
|
||||||
|
B.digestchance = 25
|
||||||
|
B.absorbchance = 0
|
||||||
|
B.escapechance = 15
|
||||||
|
B.selective_preference = DM_HOLD
|
||||||
|
B.escape_stun = 5
|
||||||
|
|
||||||
73
code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
/mob/living/simple_mob/vore/succubus
|
||||||
|
name = "succubus"
|
||||||
|
desc = "She's giving you the 'come hither' look."
|
||||||
|
tt_desc = "Homo paramour"
|
||||||
|
|
||||||
|
icon_state = "succubus"
|
||||||
|
icon = 'icons/mob/vore.dmi'
|
||||||
|
|
||||||
|
harm_intent_damage = 5
|
||||||
|
melee_damage_lower = 2
|
||||||
|
melee_damage_upper = 5
|
||||||
|
|
||||||
|
response_help = "strokes"
|
||||||
|
response_disarm = "pushes"
|
||||||
|
response_harm = "bites"
|
||||||
|
|
||||||
|
attacktext = list("swatted","bapped")
|
||||||
|
|
||||||
|
say_list_type = /datum/say_list/succubus
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/retaliate
|
||||||
|
|
||||||
|
var/random_skin = 1
|
||||||
|
var/list/skins = list(
|
||||||
|
"succubus",
|
||||||
|
"succubusbob",
|
||||||
|
"succubusginger",
|
||||||
|
"succubusclothed",
|
||||||
|
"succubusbobclothed",
|
||||||
|
"succubusgingerclothed"
|
||||||
|
)
|
||||||
|
|
||||||
|
faction = "succubus"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/succubus/New()
|
||||||
|
..()
|
||||||
|
if(random_skin)
|
||||||
|
icon_living = pick(skins)
|
||||||
|
icon_rest = "[icon_living]asleep"
|
||||||
|
icon_dead = "[icon_living]-dead"
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
// Activate Noms!
|
||||||
|
/mob/living/simple_mob/vore/succubus
|
||||||
|
vore_active = 1
|
||||||
|
vore_bump_chance = 100
|
||||||
|
vore_pounce_chance = 50
|
||||||
|
vore_standing_too = 1
|
||||||
|
vore_ignores_undigestable = 0
|
||||||
|
vore_default_mode = DM_DRAIN // They just want to drain you!
|
||||||
|
vore_digest_chance = 25 // But don't you dare try to escape...
|
||||||
|
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||||
|
|
||||||
|
/datum/say_list/succubus
|
||||||
|
speak = list("Come here cutie!","Let me get a good look at you!","Want to spend a little quality time together?","I don't bite. Much.","Like what you see?","Feel free to sample the goods.")
|
||||||
|
emote_hear = list("makes a kissing sound","giggles","lets out a needy whine")
|
||||||
|
emote_see = list("gestures for you to come over","winks","smiles","stretches")
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/succubus/init_vore()
|
||||||
|
..()
|
||||||
|
var/obj/belly/B = vore_selected
|
||||||
|
B.name = "stomach"
|
||||||
|
B.desc = "You find yourself tightly compressed into the stomach of the succubus, with immense pressure squeezing down on you from every direction. The wrinkled walls of the gut knead over you, like a swelteringly hot, wet massage. You can feel movement from the outside, as though the demoness is running her hands over your form with delight. The world around you groans and gurgles, but the fluids that ooze into this place don't seem harmful, yet. Instead, you feel your very energy being steadily depleted, much to the joy of the woman who's claiming it all for herself."
|
||||||
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
|
B.belly_fullscreen = "yet_another_tumby"
|
||||||
|
B.digest_brute = 2
|
||||||
|
B.digest_burn = 2
|
||||||
|
B.digest_oxy = 1
|
||||||
|
B.digestchance = 25
|
||||||
|
B.absorbchance = 0
|
||||||
|
B.escapechance = 15
|
||||||
|
B.selective_preference = DM_DRAIN
|
||||||
|
B.escape_stun = 5
|
||||||
|
|
||||||
85
code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/mob/living/simple_mob/vore/vampire
|
||||||
|
name = "vampire"
|
||||||
|
desc = "A large creature with a humanoid upperbody and more feral formed lower body, with four legs and two arms."
|
||||||
|
|
||||||
|
icon_state = "count"
|
||||||
|
icon = 'icons/mob/vore.dmi'
|
||||||
|
|
||||||
|
harm_intent_damage = 8
|
||||||
|
melee_damage_lower = 3
|
||||||
|
melee_damage_upper = 7
|
||||||
|
|
||||||
|
response_help = "caresses"
|
||||||
|
response_disarm = "wafts"
|
||||||
|
response_harm = "bites"
|
||||||
|
|
||||||
|
attacktext = list("bites","sucks","drinks from")
|
||||||
|
|
||||||
|
say_list_type = /datum/say_list/count
|
||||||
|
ai_holder_type = /datum/ai_holder/simple_mob/vore
|
||||||
|
|
||||||
|
var/random_skin = 1
|
||||||
|
var/list/skins = list(
|
||||||
|
"count",
|
||||||
|
"countess",
|
||||||
|
"countnude",
|
||||||
|
"countessnude"
|
||||||
|
)
|
||||||
|
|
||||||
|
faction = "vampire"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/vampire/New()
|
||||||
|
..()
|
||||||
|
if(random_skin)
|
||||||
|
icon_living = pick(skins)
|
||||||
|
icon_rest = "[icon_living]asleep"
|
||||||
|
icon_dead = "[icon_living]-dead"
|
||||||
|
update_icon()
|
||||||
|
|
||||||
|
// Activate Noms!
|
||||||
|
/mob/living/simple_mob/vore/vampire
|
||||||
|
vore_active = 1
|
||||||
|
vore_bump_chance = 10
|
||||||
|
vore_pounce_chance = 50
|
||||||
|
vore_standing_too = 1
|
||||||
|
vore_ignores_undigestable = 0
|
||||||
|
vore_default_mode = DM_DRAIN
|
||||||
|
vore_digest_chance = 25
|
||||||
|
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||||
|
|
||||||
|
/datum/say_list/count
|
||||||
|
speak = list("I vant to suck your-","I'm going to get a bite to drink.","All I have is time.","Your presence here is crypt-ic.","I like my coffee decoffinated.","There is bad blood between us.")
|
||||||
|
emote_hear = list("laughs maniacally","croans","hisses")
|
||||||
|
emote_see = list("wafts about","licks their lips","flaps a bit")
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/vampire/init_vore()
|
||||||
|
..()
|
||||||
|
var/obj/belly/B = vore_selected
|
||||||
|
B.name = "stomach"
|
||||||
|
B.desc = "Having been rapidly gulped up by the vampire, you find yourself tightly contained with a set of groaning, wrinkled walls. It seems that the beast has decided against draining your lifeforce through you blood, and instead taking a more direct approach as it saps your strength from all around you. Your attacker seems content to just take that essence for now, but it is a gut afterall and struggling may set it off."
|
||||||
|
B.mode_flags = DM_FLAG_THICKBELLY
|
||||||
|
B.belly_fullscreen = "yet_another_tumby"
|
||||||
|
B.digest_brute = 3
|
||||||
|
B.digest_burn = 0
|
||||||
|
B.digest_oxy = 1
|
||||||
|
B.digestchance = 25
|
||||||
|
B.absorbchance = 0
|
||||||
|
B.escapechance = 10
|
||||||
|
B.selective_preference = DM_DRAIN
|
||||||
|
B.escape_stun = 5
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/vampire/count
|
||||||
|
random_skin = 0
|
||||||
|
icon_state = "count"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/vampire/countess
|
||||||
|
random_skin = 0
|
||||||
|
icon_state = "countess"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/vampire/count_nude
|
||||||
|
random_skin = 0
|
||||||
|
icon_state = "countnude"
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/vampire/countess_nude
|
||||||
|
random_skin = 0
|
||||||
|
icon_state = "countessnude"
|
||||||
@@ -221,4 +221,28 @@
|
|||||||
icon_state = "big_flamp-construct-stage2"
|
icon_state = "big_flamp-construct-stage2"
|
||||||
if(3)
|
if(3)
|
||||||
icon_state = "big_flamp-empty"
|
icon_state = "big_flamp-empty"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/obj/item/weapon/light/bulb/torch
|
||||||
|
brightness_range = 6
|
||||||
|
color = "#fabf87"
|
||||||
|
brightness_color = "#fabf87"
|
||||||
|
init_brightness_range = 6
|
||||||
|
|
||||||
|
/obj/machinery/light/small/torch
|
||||||
|
icon = 'icons/obj/lighting_vr.dmi'
|
||||||
|
name = "wall torch"
|
||||||
|
icon_state = "torch1"
|
||||||
|
base_state = "torch"
|
||||||
|
desc = "A small torch held in a wall sconce."
|
||||||
|
light_type = /obj/item/weapon/light/bulb/torch
|
||||||
|
shows_alerts = FALSE
|
||||||
|
anchored = TRUE
|
||||||
|
plane = ABOVE_MOB_PLANE
|
||||||
|
layer = ABOVE_MOB_LAYER
|
||||||
|
construct_type = null
|
||||||
|
overlay_color = LIGHT_COLOR_INCANDESCENT_BULB
|
||||||
|
overlay_above_everything = TRUE
|
||||||
|
|
||||||
|
/obj/machinery/light/small/torch/attackby()
|
||||||
|
return
|
||||||
|
|||||||
315
code/modules/reagents/machinery/alembic.dm
Normal file
@@ -0,0 +1,315 @@
|
|||||||
|
/obj/machinery/alembic
|
||||||
|
name = "Alembic"
|
||||||
|
desc = "A piece of glass chemical apparatus that is used to distill and concentrate chemicals."
|
||||||
|
icon = 'icons/obj/chemical.dmi'
|
||||||
|
icon_state = "alembic"
|
||||||
|
use_power = FALSE
|
||||||
|
anchored = TRUE
|
||||||
|
density = FALSE
|
||||||
|
layer = ABOVE_WINDOW_LAYER
|
||||||
|
vis_flags = VIS_HIDE
|
||||||
|
unacidable = TRUE
|
||||||
|
clicksound = "button"
|
||||||
|
clickvol = 60
|
||||||
|
|
||||||
|
var/potion_reagent = 0
|
||||||
|
var/bubbling = 0
|
||||||
|
var/base_reagent = 0
|
||||||
|
var/product_potion = 0
|
||||||
|
var/expected_base = 0
|
||||||
|
|
||||||
|
/obj/machinery/alembic/update_icon()
|
||||||
|
if(potion_reagent == 0 && base_reagent == 0) //Empty
|
||||||
|
icon_state = "alembic"
|
||||||
|
else if(potion_reagent != 0 && base_reagent == 0) //Has potion reagent but not base
|
||||||
|
icon_state = "alembic-base"
|
||||||
|
else if(potion_reagent == 0 && base_reagent != 0) //Has a base but no reagent
|
||||||
|
icon_state = "alembic-base"
|
||||||
|
else if(potion_reagent != 0 && base_reagent != 0 && !bubbling ) //Has a reagent but is not turned on
|
||||||
|
icon_state = "alembic-full"
|
||||||
|
else if(bubbling == 1) //is actively bubbling
|
||||||
|
icon_state = "alembic-bubble"
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/alembic/attackby(var/obj/item/weapon/potion_material/O as obj, var/mob/user as mob)
|
||||||
|
if(istype(O,/obj/item/weapon/potion_material))
|
||||||
|
if(potion_reagent != 0 )
|
||||||
|
to_chat(user, SPAN_WARNING("There is already a reagent in the alembic!"))
|
||||||
|
return
|
||||||
|
else
|
||||||
|
src.potion_reagent = O
|
||||||
|
src.expected_base = O.base_reagent
|
||||||
|
src.product_potion = O.product_potion
|
||||||
|
user.drop_item()
|
||||||
|
O.loc = src
|
||||||
|
update_icon()
|
||||||
|
to_chat(user, SPAN_NOTICE("You place the [O] in the alembic."))
|
||||||
|
src.updateUsrDialog()
|
||||||
|
return
|
||||||
|
else if(istype(O,/obj/item/weapon/potion_base))
|
||||||
|
if(base_reagent != 0 )
|
||||||
|
to_chat(user, SPAN_WARNING("There is already a base in the alembic!"))
|
||||||
|
return
|
||||||
|
else
|
||||||
|
src.base_reagent = O
|
||||||
|
user.drop_item()
|
||||||
|
O.loc = src
|
||||||
|
update_icon()
|
||||||
|
to_chat(user, SPAN_NOTICE("You place the [O] in the alembic."))
|
||||||
|
src.updateUsrDialog()
|
||||||
|
return
|
||||||
|
else
|
||||||
|
to_chat(user, SPAN_WARNING("This item is no use in the alembic."))
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/alembic/attack_hand(mob/user as mob)
|
||||||
|
|
||||||
|
if(potion_reagent == 0 || base_reagent == 0) //If there is nothing in there
|
||||||
|
to_chat(user, SPAN_WARNING("The alembic is not yet full!"))
|
||||||
|
return
|
||||||
|
else if(potion_reagent != 0 && base_reagent != 0 && !bubbling) //if there is something in there and it's not bubbling yet
|
||||||
|
bubbling = 1
|
||||||
|
update_icon()
|
||||||
|
to_chat(user, SPAN_NOTICE("The alembic begins boiling the [potion_reagent] in the [base_reagent]."))
|
||||||
|
sleep(30)
|
||||||
|
bubbling = 0
|
||||||
|
to_chat(user, SPAN_NOTICE("The alembic finishes brewing the potion!"))
|
||||||
|
spawn_potion()
|
||||||
|
potion_reagent = 0
|
||||||
|
base_reagent = 0
|
||||||
|
update_icon()
|
||||||
|
return
|
||||||
|
else if(bubbling)
|
||||||
|
to_chat(user, SPAN_WARNING("The alembic is already boiling!"))
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/alembic/AltClick(mob/user)
|
||||||
|
if(potion_reagent == 0)
|
||||||
|
to_chat(user, SPAN_WARNING("There is nothing in the alembic!"))
|
||||||
|
return
|
||||||
|
else if(potion_reagent != 0 && !bubbling) //if there is something in there and it's not bubbling yet
|
||||||
|
if(!user.incapacitated() && Adjacent(user))
|
||||||
|
user.put_in_hands(potion_reagent)
|
||||||
|
potion_reagent = 0
|
||||||
|
update_icon()
|
||||||
|
else
|
||||||
|
return
|
||||||
|
else if(bubbling)
|
||||||
|
to_chat(user, SPAN_WARNING("The alembic is already boiling, it's too late to get your reagent back!"))
|
||||||
|
return
|
||||||
|
|
||||||
|
/obj/machinery/alembic/proc/spawn_potion()
|
||||||
|
if(istype(base_reagent,expected_base))
|
||||||
|
new product_potion(loc)
|
||||||
|
else
|
||||||
|
var/failed_product = pick(/obj/item/weapon/reagent_containers/glass/bottle/potion/plain,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/ethanol,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/sugar,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/capsaicin,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/soporific,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/lipostipo,
|
||||||
|
/obj/item/weapon/reagent_containers/glass/bottle/potion/phoron)
|
||||||
|
new failed_product(loc)
|
||||||
|
|
||||||
|
//The actual ingredients!
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material
|
||||||
|
name = "blood ruby"
|
||||||
|
desc = "An extremely hard but oddly brittle gem with a beautiful red colouration."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "blood_ruby"
|
||||||
|
var/base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
var/product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/healing
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/blood_ruby
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/ruby_eye
|
||||||
|
name = "ruby eye"
|
||||||
|
desc = "An odd gem in the shape of an eye, it has a strange static charge to the surface."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "ruby_eye"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/greater_healing
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/golden_scale
|
||||||
|
name = "golden scale"
|
||||||
|
desc = "A reptilian scale with an almost metalic texture and a shining gold surface."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "golden_scale"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/fire_resist
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/frozen_dew
|
||||||
|
name = "frozen dew"
|
||||||
|
desc = "A bitter leaf with a small droplet of crystalised dew attached to it."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "frozen_dew"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/antidote
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/living_coral
|
||||||
|
name = "living coral"
|
||||||
|
desc = "Some coral that appears to be friving outside of the water, it has an oddly metallic scent."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "living_coral"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/water
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/rare_horn
|
||||||
|
name = "rare horn"
|
||||||
|
desc = "A sharp, straight horn from some unknown animal."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "rare_horn"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/regeneration
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/moldy_bread
|
||||||
|
name = "moldy bread"
|
||||||
|
desc = "A slice of bread that's clearly been left out for far too long."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "moldy_bread"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/panacea
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/glowing_gem
|
||||||
|
name = "glowing gem"
|
||||||
|
desc = "An pretty but rough gem that is literally glowing green, it tingles to touch."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "glowing_gem"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/magic
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/giant_toe
|
||||||
|
name = "giant toe"
|
||||||
|
desc = "One really large severed toe, in some state of suspended decomposition. It's gross and stinks."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "giant_toe"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/lightness
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/flesh_of_the_stars
|
||||||
|
name = "flesh of the stars"
|
||||||
|
desc = "A rare slab of meat with an unknown origin, said to have fallen from the sky."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "flesh_of_the_stars"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/bonerepair
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/spinning_poppy
|
||||||
|
name = "spinning poppy"
|
||||||
|
desc = "A small poppy flower that seems inclined to twirl without aid."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "spinning_poppy"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/pain
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/salt_mage
|
||||||
|
name = "salt mage"
|
||||||
|
desc = "A statuette made from salt crystals, it's adorned with a little mages hat."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "salt_mage"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/shrink
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/golden_grapes
|
||||||
|
name = "golden grapes"
|
||||||
|
desc = "A bunch of grapes with a shining golden skin, they smell strongly of some sort of solvent."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "golden_grapes"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/growth
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/fairy_house
|
||||||
|
name = "fairy house"
|
||||||
|
desc = "A moderately large mushroom with a speckled red cap and... a door on the front?"
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "fairy_house"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/faerie
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/thorny_bulb
|
||||||
|
name = "thorny bulb"
|
||||||
|
desc = "A flesh green plant bulb covered in thorns, it has a sulfur rich aroma."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "thorny_bulb"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/relaxation
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/ancient_egg
|
||||||
|
name = "ancient egg"
|
||||||
|
desc = "An egg, but seemingly really really old and long past rotten."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "ancient_egg"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/speed
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/crown_stem
|
||||||
|
name = "crown stem"
|
||||||
|
desc = "An odd little flower that looks like a crown, the leaves have a minty aroma."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "crown_stem"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/attractiveness
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/red_ingot
|
||||||
|
name = "red ingot"
|
||||||
|
desc = "An oddly red coloured block of iron, it seems rather brittle and wouldn't make for a good smithing material."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "red_ingot"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/alkahest
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/boyjuice
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/soft_diamond
|
||||||
|
name = "soft diamond"
|
||||||
|
desc = "A gem that looks much like a diamond, but is squishy to the touch."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "soft_diamond"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/girljuice
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/solid_mist
|
||||||
|
name = "solid mist"
|
||||||
|
desc = "A small purple stone that seems to be radiating some sort of mist."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "solid_mist"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/badpolymorph
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/spider_leg
|
||||||
|
name = "spider leg"
|
||||||
|
desc = "A severed limb from a spider, it seems to be oozing with green... something."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "spider_leg"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/aqua_regia
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/SOP
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_material/folded_dark
|
||||||
|
name = "folded dark"
|
||||||
|
desc = "A folded material that appears to be made of pure dark."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "folded_dark"
|
||||||
|
base_reagent = /obj/item/weapon/potion_base/ichor
|
||||||
|
product_potion = /obj/item/weapon/reagent_containers/glass/bottle/potion/truepolymorph
|
||||||
|
|
||||||
|
//base ingredients
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_base/aqua_regia
|
||||||
|
name = "aqua regia"
|
||||||
|
desc = "A mixture of concentrated acids, be careful not to spill it! A base ingredient of many potions."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "aqua_regia"
|
||||||
|
w_class = ITEMSIZE_TINY
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_base/ichor
|
||||||
|
name = "ichor"
|
||||||
|
desc = "A thick and heavy red reagent said to be tinged with the blood of gods. A base ingredient of many potions."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "ichor"
|
||||||
|
w_class = ITEMSIZE_TINY
|
||||||
|
|
||||||
|
/obj/item/weapon/potion_base/alkahest
|
||||||
|
name = "alkahest"
|
||||||
|
desc = "Also known as the universal solvent, said to be capable of dissolving metal rapidly. A base ingredient of many potions."
|
||||||
|
icon = 'icons/obj/chemical_potionreagents.dmi'
|
||||||
|
icon_state = "alkahest"
|
||||||
|
w_class = ITEMSIZE_TINY
|
||||||
@@ -103,6 +103,11 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
reagents.add_reagent("water", 4000)
|
reagents.add_reagent("water", 4000)
|
||||||
|
|
||||||
|
/obj/structure/reagent_dispensers/watertank/barrel
|
||||||
|
name = "water barrel"
|
||||||
|
desc = "A barrel for holding water."
|
||||||
|
icon_state = "waterbarrel"
|
||||||
|
|
||||||
//Fuel
|
//Fuel
|
||||||
/obj/structure/reagent_dispensers/fueltank
|
/obj/structure/reagent_dispensers/fueltank
|
||||||
name = "fuel tank"
|
name = "fuel tank"
|
||||||
@@ -463,6 +468,20 @@
|
|||||||
. = ..()
|
. = ..()
|
||||||
reagents.add_reagent("beer",1000)
|
reagents.add_reagent("beer",1000)
|
||||||
|
|
||||||
|
/obj/structure/reagent_dispensers/beerkeg/wood
|
||||||
|
name = "beer keg"
|
||||||
|
desc = "A beer keg with a tap on it."
|
||||||
|
icon_state = "beertankfantasy"
|
||||||
|
|
||||||
|
/obj/structure/reagent_dispensers/beerkeg/wine
|
||||||
|
name = "wine barrel"
|
||||||
|
desc = "A wine casket with a tap on it."
|
||||||
|
icon_state = "beertankfantasy"
|
||||||
|
|
||||||
|
/obj/structure/reagent_dispensers/beerkeg/wine/Initialize()
|
||||||
|
. = ..()
|
||||||
|
reagents.add_reagent("redwine",1000)
|
||||||
|
|
||||||
/obj/structure/reagent_dispensers/beerkeg/fakenuke
|
/obj/structure/reagent_dispensers/beerkeg/fakenuke
|
||||||
name = "nuclear beer keg"
|
name = "nuclear beer keg"
|
||||||
desc = "A beer keg in the form of a nuclear bomb! An absolute blast at parties!"
|
desc = "A beer keg in the form of a nuclear bomb! An absolute blast at parties!"
|
||||||
@@ -492,3 +511,15 @@
|
|||||||
reagents.splash_area(get_turf(src), 3)
|
reagents.splash_area(get_turf(src), 3)
|
||||||
visible_message(span("danger", "The [src] bursts open, spreading oil all over the area."))
|
visible_message(span("danger", "The [src] bursts open, spreading oil all over the area."))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
/obj/structure/reagent_dispensers/bloodbarrel
|
||||||
|
name = "blood barrel"
|
||||||
|
desc = "A beer keg."
|
||||||
|
icon = 'icons/obj/chemical_tanks.dmi'
|
||||||
|
icon_state = "bloodbarrel"
|
||||||
|
amount_per_transfer_from_this = 10
|
||||||
|
|
||||||
|
/obj/structure/reagent_dispensers/bloodbarrel/Initialize()
|
||||||
|
. = ..()
|
||||||
|
reagents.add_reagent("blood", 1000, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"="O-","resistances"=null,"trace_chem"=null))
|
||||||
|
|
||||||
|
|||||||
@@ -380,3 +380,12 @@
|
|||||||
amount_per_transfer_from_this = 20
|
amount_per_transfer_from_this = 20
|
||||||
possible_transfer_amounts = list(10,20,30,60,120)
|
possible_transfer_amounts = list(10,20,30,60,120)
|
||||||
volume = 120
|
volume = 120
|
||||||
|
|
||||||
|
/obj/item/weapon/reagent_containers/glass/pint_mug
|
||||||
|
desc = "A rustic pint mug designed for drinking ale."
|
||||||
|
name = "pint mug"
|
||||||
|
icon = 'icons/obj/drinks.dmi'
|
||||||
|
icon_state = "pint_mug"
|
||||||
|
matter = list(MAT_WOOD = 50)
|
||||||
|
drop_sound = 'sound/items/drop/wooden.ogg'
|
||||||
|
pickup_sound = 'sound/items/pickup/wooden.ogg'
|
||||||
|
|||||||
@@ -141,3 +141,177 @@
|
|||||||
M.adjust_nutrition(-20 * removed)
|
M.adjust_nutrition(-20 * removed)
|
||||||
if(M.weight < 500)
|
if(M.weight < 500)
|
||||||
M.weight += 0.3
|
M.weight += 0.3
|
||||||
|
|
||||||
|
/datum/reagent/polymorph
|
||||||
|
name = "Transforitine"
|
||||||
|
id = "polymorph"
|
||||||
|
description = "A chemical that instantly transforms the consumer into another creature."
|
||||||
|
taste_description = "luck"
|
||||||
|
reagent_state = LIQUID
|
||||||
|
color = "#a754de"
|
||||||
|
scannable = 1
|
||||||
|
var/tf_type = /mob/living/simple_mob/animal/passive/mouse
|
||||||
|
var/tf_possible_types = list(
|
||||||
|
"mouse" = /mob/living/simple_mob/animal/passive/mouse,
|
||||||
|
"rat" = /mob/living/simple_mob/animal/passive/mouse/rat,
|
||||||
|
"giant rat" = /mob/living/simple_mob/vore/aggressive/rat,
|
||||||
|
"dust jumper" = /mob/living/simple_mob/vore/alienanimals/dustjumper,
|
||||||
|
"woof" = /mob/living/simple_mob/vore/woof,
|
||||||
|
"corgi" = /mob/living/simple_mob/animal/passive/dog/corgi,
|
||||||
|
"cat" = /mob/living/simple_mob/animal/passive/cat,
|
||||||
|
"chicken" = /mob/living/simple_mob/animal/passive/chicken,
|
||||||
|
"cow" = /mob/living/simple_mob/animal/passive/cow,
|
||||||
|
"lizard" = /mob/living/simple_mob/animal/passive/lizard,
|
||||||
|
"rabbit" = /mob/living/simple_mob/vore/rabbit,
|
||||||
|
"fox" = /mob/living/simple_mob/animal/passive/fox,
|
||||||
|
"fennec" = /mob/living/simple_mob/vore/fennec,
|
||||||
|
"cute fennec" = /mob/living/simple_mob/animal/passive/fennec,
|
||||||
|
"fennix" = /mob/living/simple_mob/vore/fennix,
|
||||||
|
"red panda" = /mob/living/simple_mob/vore/redpanda,
|
||||||
|
"opossum" = /mob/living/simple_mob/animal/passive/opossum,
|
||||||
|
"horse" = /mob/living/simple_mob/vore/horse,
|
||||||
|
"goose" = /mob/living/simple_mob/animal/space/goose,
|
||||||
|
"sheep" = /mob/living/simple_mob/vore/sheep,
|
||||||
|
"space bumblebee" = /mob/living/simple_mob/vore/bee,
|
||||||
|
"space bear" = /mob/living/simple_mob/animal/space/bear,
|
||||||
|
"voracious lizard" = /mob/living/simple_mob/vore/aggressive/dino,
|
||||||
|
"giant frog" = /mob/living/simple_mob/vore/aggressive/frog,
|
||||||
|
"jelly blob" = /mob/living/simple_mob/vore/jelly,
|
||||||
|
"wolf" = /mob/living/simple_mob/vore/wolf,
|
||||||
|
"direwolf" = /mob/living/simple_mob/vore/wolf/direwolf,
|
||||||
|
"great wolf" = /mob/living/simple_mob/vore/greatwolf,
|
||||||
|
"sect queen" = /mob/living/simple_mob/vore/sect_queen,
|
||||||
|
"sect drone" = /mob/living/simple_mob/vore/sect_drone,
|
||||||
|
"panther" = /mob/living/simple_mob/vore/aggressive/panther,
|
||||||
|
"giant snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
|
||||||
|
"deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw,
|
||||||
|
"otie" = /mob/living/simple_mob/vore/otie,
|
||||||
|
"mutated otie" =/mob/living/simple_mob/vore/otie/feral,
|
||||||
|
"red otie" = /mob/living/simple_mob/vore/otie/red,
|
||||||
|
"defanged xenomorph" = /mob/living/simple_mob/vore/xeno_defanged,
|
||||||
|
"catslug" = /mob/living/simple_mob/vore/alienanimals/catslug,
|
||||||
|
"monkey" = /mob/living/carbon/human/monkey,
|
||||||
|
"wolpin" = /mob/living/carbon/human/wolpin,
|
||||||
|
"sparra" = /mob/living/carbon/human/sparram,
|
||||||
|
"saru" = /mob/living/carbon/human/sergallingm,
|
||||||
|
"sobaka" = /mob/living/carbon/human/sharkm,
|
||||||
|
"farwa" = /mob/living/carbon/human/farwa,
|
||||||
|
"neaera" = /mob/living/carbon/human/neaera,
|
||||||
|
"stok" = /mob/living/carbon/human/stok,
|
||||||
|
"weretiger" = /mob/living/simple_mob/vore/weretiger,
|
||||||
|
"dragon" = /mob/living/simple_mob/vore/bigdragon/friendly,
|
||||||
|
"leopardmander" = /mob/living/simple_mob/vore/leopardmander
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/reagent/polymorph/affect_blood(var/mob/living/carbon/target, var/removed)
|
||||||
|
var/mob/living/M = target
|
||||||
|
log_debug("polymorph start")
|
||||||
|
if(!istype(M))
|
||||||
|
log_debug("polymorph istype")
|
||||||
|
return
|
||||||
|
if(M.tf_mob_holder)
|
||||||
|
log_debug("polymorph tf_holder")
|
||||||
|
var/mob/living/ourmob = M.tf_mob_holder
|
||||||
|
if(ourmob.ai_holder)
|
||||||
|
log_debug("polymorph ai")
|
||||||
|
var/datum/ai_holder/our_AI = ourmob.ai_holder
|
||||||
|
our_AI.set_stance(STANCE_IDLE)
|
||||||
|
M.tf_mob_holder = null
|
||||||
|
ourmob.ckey = M.ckey
|
||||||
|
var/turf/get_dat_turf = get_turf(target)
|
||||||
|
ourmob.loc = get_dat_turf
|
||||||
|
ourmob.forceMove(get_dat_turf)
|
||||||
|
ourmob.vore_selected = M.vore_selected
|
||||||
|
M.vore_selected = null
|
||||||
|
for(var/obj/belly/B as anything in M.vore_organs)
|
||||||
|
log_debug("polymorph belly")
|
||||||
|
B.loc = ourmob
|
||||||
|
B.forceMove(ourmob)
|
||||||
|
B.owner = ourmob
|
||||||
|
M.vore_organs -= B
|
||||||
|
ourmob.vore_organs += B
|
||||||
|
|
||||||
|
ourmob.Life(1)
|
||||||
|
if(ishuman(M))
|
||||||
|
log_debug("polymorph human")
|
||||||
|
for(var/obj/item/W in M)
|
||||||
|
log_debug("polymorph items")
|
||||||
|
if(istype(W, /obj/item/weapon/implant/backup) || istype(W, /obj/item/device/nif))
|
||||||
|
log_debug("polymorph implants")
|
||||||
|
continue
|
||||||
|
M.drop_from_inventory(W)
|
||||||
|
|
||||||
|
qdel(target)
|
||||||
|
return
|
||||||
|
else
|
||||||
|
log_debug("polymorph else")
|
||||||
|
if(M.stat == DEAD) //We can let it undo the TF, because the person will be dead, but otherwise things get weird.
|
||||||
|
log_debug("polymorph dead")
|
||||||
|
return
|
||||||
|
log_debug("polymorph not dead")
|
||||||
|
var/mob/living/new_mob = spawn_mob(M)
|
||||||
|
new_mob.faction = M.faction
|
||||||
|
|
||||||
|
if(new_mob && isliving(new_mob))
|
||||||
|
log_debug("polymorph new_mob")
|
||||||
|
for(var/obj/belly/B as anything in new_mob.vore_organs)
|
||||||
|
log_debug("polymorph new_mob belly")
|
||||||
|
new_mob.vore_organs -= B
|
||||||
|
qdel(B)
|
||||||
|
new_mob.vore_organs = list()
|
||||||
|
new_mob.name = M.name
|
||||||
|
new_mob.real_name = M.real_name
|
||||||
|
for(var/lang in M.languages)
|
||||||
|
new_mob.languages |= lang
|
||||||
|
M.copy_vore_prefs_to_mob(new_mob)
|
||||||
|
new_mob.vore_selected = M.vore_selected
|
||||||
|
if(ishuman(M))
|
||||||
|
log_debug("polymorph ishuman part2")
|
||||||
|
var/mob/living/carbon/human/H = M
|
||||||
|
if(ishuman(new_mob))
|
||||||
|
log_debug("polymorph ishuman(newmob)")
|
||||||
|
var/mob/living/carbon/human/N = new_mob
|
||||||
|
N.gender = H.gender
|
||||||
|
N.identifying_gender = H.identifying_gender
|
||||||
|
else
|
||||||
|
log_debug("polymorph gender else")
|
||||||
|
new_mob.gender = H.gender
|
||||||
|
else
|
||||||
|
log_debug("polymorph gender else 2")
|
||||||
|
new_mob.gender = M.gender
|
||||||
|
if(ishuman(new_mob))
|
||||||
|
var/mob/living/carbon/human/N = new_mob
|
||||||
|
N.identifying_gender = M.gender
|
||||||
|
|
||||||
|
for(var/obj/belly/B as anything in M.vore_organs)
|
||||||
|
B.loc = new_mob
|
||||||
|
B.forceMove(new_mob)
|
||||||
|
B.owner = new_mob
|
||||||
|
M.vore_organs -= B
|
||||||
|
new_mob.vore_organs += B
|
||||||
|
|
||||||
|
new_mob.ckey = M.ckey
|
||||||
|
if(M.ai_holder && new_mob.ai_holder)
|
||||||
|
var/datum/ai_holder/old_AI = M.ai_holder
|
||||||
|
old_AI.set_stance(STANCE_SLEEP)
|
||||||
|
var/datum/ai_holder/new_AI = new_mob.ai_holder
|
||||||
|
new_AI.hostile = old_AI.hostile
|
||||||
|
new_AI.retaliate = old_AI.retaliate
|
||||||
|
M.loc = new_mob
|
||||||
|
M.forceMove(new_mob)
|
||||||
|
new_mob.tf_mob_holder = M
|
||||||
|
target.bloodstr.clear_reagents() //Got to clear all reagents to make sure mobs don't keep spawning.
|
||||||
|
target.ingested.clear_reagents()
|
||||||
|
target.touching.clear_reagents()
|
||||||
|
|
||||||
|
/datum/reagent/polymorph/proc/spawn_mob(var/mob/living/target)
|
||||||
|
log_debug("polymorph proc spawn mob")
|
||||||
|
var/choice = pick(tf_possible_types)
|
||||||
|
tf_type = tf_possible_types[choice]
|
||||||
|
log_debug("polymorph [tf_type]")
|
||||||
|
if(!ispath(tf_type))
|
||||||
|
log_debug("polymorph tf_type fail")
|
||||||
|
return
|
||||||
|
log_debug("polymorph tf_type pass")
|
||||||
|
var/new_mob = new tf_type(get_turf(target))
|
||||||
|
return new_mob
|
||||||
|
|||||||
@@ -31,4 +31,18 @@
|
|||||||
|
|
||||||
/obj/structure/table/rack/gun_rack/steel/New()
|
/obj/structure/table/rack/gun_rack/steel/New()
|
||||||
material = get_material_by_name(MAT_STEEL)
|
material = get_material_by_name(MAT_STEEL)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
/obj/structure/table/rack/wood
|
||||||
|
color = "#A1662F"
|
||||||
|
|
||||||
|
/obj/structure/table/rack/wood/New()
|
||||||
|
material = get_material_by_name(MAT_WOOD)
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/structure/table/rack/shelf/wood
|
||||||
|
color = "#A1662F"
|
||||||
|
|
||||||
|
/obj/structure/table/rack/shelf/wood/New()
|
||||||
|
material = get_material_by_name(MAT_WOOD)
|
||||||
|
..()
|
||||||
|
|||||||
@@ -218,4 +218,4 @@
|
|||||||
|
|
||||||
/obj/item/device/slow_sizegun/proc/color_box(list/box_segments, new_color, new_time)
|
/obj/item/device/slow_sizegun/proc/color_box(list/box_segments, new_color, new_time)
|
||||||
for(var/i in box_segments)
|
for(var/i in box_segments)
|
||||||
animate(i, color = new_color, time = new_time)
|
animate(i, color = new_color, time = new_time)
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 353 KiB After Width: | Height: | Size: 411 KiB |
|
Before Width: | Height: | Size: 665 KiB After Width: | Height: | Size: 727 KiB |
|
Before Width: | Height: | Size: 264 KiB After Width: | Height: | Size: 266 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 61 KiB |
BIN
icons/obj/chemical_potionreagents.dmi
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.7 KiB |
BIN
icons/obj/closets/chest.dmi
Normal file
|
After Width: | Height: | Size: 685 B |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
|
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 131 KiB |
BIN
icons/obj/props/fantasy.dmi
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 25 KiB |
@@ -238,7 +238,8 @@
|
|||||||
list("Redgate - Hotsprings"),
|
list("Redgate - Hotsprings"),
|
||||||
list("Redgate - Rain City"),
|
list("Redgate - Rain City"),
|
||||||
list("Redgate - Islands Underwater","Redgate - Islands"),
|
list("Redgate - Islands Underwater","Redgate - Islands"),
|
||||||
list("Redgate - Moving Train", "Redgate - Moving Train Upper Level")
|
list("Redgate - Moving Train", "Redgate - Moving Train Upper Level"),
|
||||||
|
list("Redgate - Fantasy Dungeon", "Redgate - Fantasy Town")
|
||||||
)
|
)
|
||||||
|
|
||||||
lateload_gb_north = list(
|
lateload_gb_north = list(
|
||||||
|
|||||||
@@ -314,7 +314,18 @@
|
|||||||
/obj/effect/landmark/map_data/train
|
/obj/effect/landmark/map_data/train
|
||||||
height = 2
|
height = 2
|
||||||
|
|
||||||
|
/datum/map_template/common_lateload/redgate/fantasy
|
||||||
|
name = "Redgate - Fantasy Town"
|
||||||
|
desc = "A fantasy town full of low tech stuff."
|
||||||
|
mappath = 'maps/redgate/fantasy.dmm'
|
||||||
|
|
||||||
|
/datum/map_template/common_lateload/redgate/fantasy_dungeon
|
||||||
|
name = "Redgate - Fantasy Dungeon"
|
||||||
|
desc = "A fantasy dungeon with lots of monsters and loot."
|
||||||
|
mappath = 'maps/redgate/fantasy_dungeon.dmm'
|
||||||
|
|
||||||
|
/obj/effect/landmark/map_data/fantasy
|
||||||
|
height = 2
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Admin-use z-levels for loading whenever an admin feels like
|
// Admin-use z-levels for loading whenever an admin feels like
|
||||||
|
|||||||
28108
maps/redgate/fantasy.dmm
Normal file
22358
maps/redgate/fantasy_dungeon.dmm
Normal file
538
maps/redgate/fantasy_items.dm
Normal file
@@ -0,0 +1,538 @@
|
|||||||
|
|
||||||
|
/obj/item/device/healthanalyzer/scroll //reports all of the above, as well as name and quantity of nonmed reagents in stomach
|
||||||
|
name = "scroll of divination"
|
||||||
|
desc = "An unusual scroll that appears to report all of the details of a person's health when waved near them. Oddly, it seems to have a little metal chip up near the handles..."
|
||||||
|
advscan = 3
|
||||||
|
origin_tech = list(TECH_MAGNET = 7, TECH_BIO = 8)
|
||||||
|
icon_state = "health_scroll"
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/weapon/tool/crowbar/alien/magic
|
||||||
|
name = "sentient crowbar"
|
||||||
|
desc = "A crowbar with a green gem set in it and a green ribbon tied to it, it floats lightly by itself and appears to be able to pry on its own. It almost feels like there is some sort of anti gravity generator running in it..."
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_crowbar)
|
||||||
|
icon_state = "crowbar_sentient"
|
||||||
|
|
||||||
|
/obj/item/weapon/tool/screwdriver/alien/magic
|
||||||
|
name = "vintage screwdriver of revolving"
|
||||||
|
desc = "A vintage screwdriver that spins as fast as a drill with little aid, it has a red gem on the handle. It oddly sounds like a drill too..."
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_screwdriver)
|
||||||
|
icon = 'icons/obj/abductor.dmi'
|
||||||
|
icon_state = "screwdriver_old"
|
||||||
|
|
||||||
|
/obj/item/weapon/weldingtool/alien/magic
|
||||||
|
name = "bellows of flame"
|
||||||
|
desc = "A set of bellows that have a yellow gem on the spout, they emit flames when pressed. Oddly seems to have a faint phoron smell to it..."
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_welder)
|
||||||
|
icon = 'icons/obj/abductor.dmi'
|
||||||
|
icon_state = "bellows"
|
||||||
|
|
||||||
|
/obj/item/weapon/tool/wirecutters/alien/magic
|
||||||
|
name = "secateurs of organisation"
|
||||||
|
desc = "Extremely sharp secateurs, fitted with a glowing blue gem, said to be magically enhanced for speed. There seems to be a little whirring sound coming from beneath that gem..."
|
||||||
|
icon = 'icons/obj/abductor.dmi'
|
||||||
|
icon_state = "cutters_magic"
|
||||||
|
|
||||||
|
/obj/item/weapon/tool/wrench/alien/magic
|
||||||
|
name = "pliers of molding"
|
||||||
|
desc = "A set of pliers that seems to mold to the shape of their target, housing a pink gem. Oddly seems to have a slightly slimey texture at the metal..."
|
||||||
|
catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_wrench)
|
||||||
|
icon = 'icons/obj/abductor.dmi'
|
||||||
|
icon_state = "pliers"
|
||||||
|
|
||||||
|
/obj/item/weapon/surgical/bone_clamp/alien/magic
|
||||||
|
icon = 'icons/obj/abductor.dmi'
|
||||||
|
toolspeed = 0.75
|
||||||
|
icon_state = "bone_boneclamp"
|
||||||
|
name = "bone bone clamp"
|
||||||
|
desc = "A bone clamp made of bones for fixing bones using bones, it feels strangely adept. In fact, it doesn't really feel like actual bone at all..."
|
||||||
|
|
||||||
|
// 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)
|
||||||
|
..()
|
||||||
|
|
||||||
|
//oven
|
||||||
|
|
||||||
|
/obj/machinery/appliance/cooker/oven/yeoldoven
|
||||||
|
name = "oven"
|
||||||
|
desc = "Old fashioned cookies are ready, dear."
|
||||||
|
icon_state = "yeoldovenopen"
|
||||||
|
|
||||||
|
/obj/machinery/appliance/cooker/oven/yeoldoven/update_icon()
|
||||||
|
if(!open)
|
||||||
|
if(!stat)
|
||||||
|
icon_state = "yeoldovenclosed_on"
|
||||||
|
if(cooking == TRUE)
|
||||||
|
icon_state = "yeoldovenclosed_cooking"
|
||||||
|
if(oven_loop)
|
||||||
|
oven_loop.start(src)
|
||||||
|
else
|
||||||
|
icon_state = "yeoldovenclosed_on"
|
||||||
|
if(oven_loop)
|
||||||
|
oven_loop.stop(src)
|
||||||
|
else
|
||||||
|
icon_state = "yeoldovenclosed_off"
|
||||||
|
if(oven_loop)
|
||||||
|
oven_loop.stop(src)
|
||||||
|
else
|
||||||
|
icon_state = "yeoldovenopen"
|
||||||
|
if(oven_loop)
|
||||||
|
oven_loop.stop(src)
|
||||||
|
|
||||||
|
//toilet
|
||||||
|
|
||||||
|
/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
|
||||||
|
|
||||||
|
//cooking pot
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot
|
||||||
|
name = "cooking pot"
|
||||||
|
icon_state = "cookingpot"
|
||||||
|
desc = "An old fashioned cooking pot above some logs."
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/start()
|
||||||
|
src.visible_message("<span class='notice'>The cooking pot starts cooking.</span>", "<span class='notice'>You hear a fire roar.</span>")
|
||||||
|
src.operating = TRUE
|
||||||
|
src.icon_state = "cookingpot1"
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/abort()
|
||||||
|
operating = FALSE // Turn it off again aferwards
|
||||||
|
if(icon_state == "cookingpot1")
|
||||||
|
icon_state = "cookingpot"
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/stop()
|
||||||
|
operating = FALSE // Turn it off again aferwards
|
||||||
|
if(icon_state == "cookingpot1")
|
||||||
|
icon_state = "cookingpot"
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||||
|
if(src.broken > 0)
|
||||||
|
if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver
|
||||||
|
user.visible_message( \
|
||||||
|
"<b>\The [user]</b> starts to fix part of the cooking pot.", \
|
||||||
|
"<span class='notice'>You start to fix part of the cooking pot.</span>" \
|
||||||
|
)
|
||||||
|
playsound(src, O.usesound, 50, 1)
|
||||||
|
if (do_after(user,20 * O.toolspeed))
|
||||||
|
user.visible_message( \
|
||||||
|
"<b>\The [user]</b> fixes part of the cooking pot.", \
|
||||||
|
"<span class='notice'>You have fixed part of the cooking pot.</span>" \
|
||||||
|
)
|
||||||
|
src.broken = 1 // Fix it a bit
|
||||||
|
else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench
|
||||||
|
user.visible_message( \
|
||||||
|
"<b>\The [user]</b> starts to fix part of the cooking pot.", \
|
||||||
|
"<span class='notice'>You start to fix part of the cooking pot.</span>" \
|
||||||
|
)
|
||||||
|
if (do_after(user,20 * O.toolspeed))
|
||||||
|
user.visible_message( \
|
||||||
|
"<b>\The [user]</b> fixes the cooking pot.", \
|
||||||
|
"<span class='notice'>You have fixed the cooking pot.</span>" \
|
||||||
|
)
|
||||||
|
src.icon_state = "cookingpot"
|
||||||
|
src.broken = 0 // Fix it!
|
||||||
|
src.dirty = 0 // just to be sure
|
||||||
|
src.flags = OPENCONTAINER | NOREACT
|
||||||
|
else
|
||||||
|
to_chat(user, "<span class='warning'>It's broken!</span>")
|
||||||
|
return 1
|
||||||
|
|
||||||
|
else if(src.dirty==100) // The microwave is all dirty so can't be used!
|
||||||
|
if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them
|
||||||
|
user.visible_message( \
|
||||||
|
"<b>\The [user]</b> starts to clean the cooking pot.", \
|
||||||
|
"<span class='notice'>You start to clean the cooking pot.</span>" \
|
||||||
|
)
|
||||||
|
if (do_after(user,20))
|
||||||
|
user.visible_message( \
|
||||||
|
"<span class='notice'>\The [user] has cleaned the cooking pot.</span>", \
|
||||||
|
"<span class='notice'>You have cleaned the cooking pot.</span>" \
|
||||||
|
)
|
||||||
|
src.dirty = 0 // It's clean!
|
||||||
|
src.broken = 0 // just to be sure
|
||||||
|
src.icon_state = "cookingpot"
|
||||||
|
src.flags = OPENCONTAINER | NOREACT
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
else //Otherwise bad luck!!
|
||||||
|
to_chat(user, "<span class='warning'>It's dirty!</span>")
|
||||||
|
return 1
|
||||||
|
else if(is_type_in_list(O,acceptable_items))
|
||||||
|
var/list/workingList = cookingContents()
|
||||||
|
if(workingList.len>=(max_n_of_items + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var.
|
||||||
|
to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
|
||||||
|
return 1
|
||||||
|
if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
|
||||||
|
var/obj/item/stack/S = O
|
||||||
|
new O.type (src)
|
||||||
|
S.use(1)
|
||||||
|
user.visible_message( \
|
||||||
|
"<span class='notice'>\The [user] has added one of [O] to \the [src].</span>", \
|
||||||
|
"<span class='notice'>You add one of [O] to \the [src].</span>")
|
||||||
|
return
|
||||||
|
else
|
||||||
|
// user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete - Man whoever you are, it's been years. o7
|
||||||
|
user.drop_from_inventory(O,src)
|
||||||
|
user.visible_message( \
|
||||||
|
"<span class='notice'>\The [user] has added \the [O] to \the [src].</span>", \
|
||||||
|
"<span class='notice'>You add \the [O] to \the [src].</span>")
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
return
|
||||||
|
else if (istype(O,/obj/item/weapon/storage/bag/plants)) // There might be a better way about making plant bags dump their contents into a microwave, but it works.
|
||||||
|
var/obj/item/weapon/storage/bag/plants/bag = O
|
||||||
|
var/failed = 1
|
||||||
|
for(var/obj/item/G in O.contents)
|
||||||
|
if(!G.reagents || !G.reagents.total_volume)
|
||||||
|
continue
|
||||||
|
failed = 0
|
||||||
|
if(contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity))
|
||||||
|
to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
bag.remove_from_storage(G, src)
|
||||||
|
contents += G
|
||||||
|
if(contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity))
|
||||||
|
break
|
||||||
|
|
||||||
|
if(failed)
|
||||||
|
to_chat(user, "Nothing in the plant bag is usable.")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
if(!O.contents.len)
|
||||||
|
to_chat(user, "You empty \the [O] into \the [src].")
|
||||||
|
else
|
||||||
|
to_chat(user, "You fill \the [src] from \the [O].")
|
||||||
|
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
return 0
|
||||||
|
|
||||||
|
else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
|
||||||
|
istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \
|
||||||
|
istype(O,/obj/item/weapon/reagent_containers/food/condiment) \
|
||||||
|
)
|
||||||
|
if (!O.reagents)
|
||||||
|
return 1
|
||||||
|
for (var/datum/reagent/R in O.reagents.reagent_list)
|
||||||
|
if (!(R.id in acceptable_reagents))
|
||||||
|
to_chat(user, "<span class='warning'>Your [O] contains components unsuitable for cookery.</span>")
|
||||||
|
return 1
|
||||||
|
return
|
||||||
|
else if(istype(O,/obj/item/weapon/grab))
|
||||||
|
var/obj/item/weapon/grab/G = O
|
||||||
|
to_chat(user, "<span class='warning'>This is ridiculous. You can not fit \the [G.affecting] in this [src].</span>")
|
||||||
|
return 1
|
||||||
|
else if(O.is_screwdriver())
|
||||||
|
default_deconstruction_screwdriver(user, O)
|
||||||
|
return
|
||||||
|
else if(O.is_crowbar())
|
||||||
|
if(default_deconstruction_crowbar(user, O))
|
||||||
|
return
|
||||||
|
else
|
||||||
|
user.visible_message( \
|
||||||
|
"<span class='notice'>\The [user] begins [src.anchored ? "unsecuring" : "securing"] the cooking pot.</span>", \
|
||||||
|
"<span class='notice'>You attempt to [src.anchored ? "unsecure" : "secure"] the cooking pot.</span>"
|
||||||
|
)
|
||||||
|
if (do_after(user,20/O.toolspeed))
|
||||||
|
user.visible_message( \
|
||||||
|
"<span class='notice'>\The [user] [src.anchored ? "unsecures" : "secures"] the cooking pot.</span>", \
|
||||||
|
"<span class='notice'>You [src.anchored ? "unsecure" : "secure"] the cooking pot.</span>"
|
||||||
|
)
|
||||||
|
src.anchored = !src.anchored
|
||||||
|
else
|
||||||
|
to_chat(user, "<span class='notice'>You decide not to do that.</span>")
|
||||||
|
else if(default_part_replacement(user, O))
|
||||||
|
return
|
||||||
|
else if(istype(O, /obj/item/device/paicard))
|
||||||
|
if(!paicard)
|
||||||
|
insertpai(user, O)
|
||||||
|
else
|
||||||
|
to_chat(user, "<span class='warning'>You have no idea what you can cook with this [O].</span>")
|
||||||
|
..()
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/broke()
|
||||||
|
src.icon_state = "cookingpotb" // Make it look all busted up and shit
|
||||||
|
src.visible_message("<span class='warning'>The cooking pot breaks!</span>") //Let them know they're stupid
|
||||||
|
src.broken = 2 // Make it broken so it can't be used util fixed
|
||||||
|
src.flags = null //So you can't add condiments
|
||||||
|
src.operating = 0 // Turn it off again aferwards
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
soundloop.stop()
|
||||||
|
src.ejectpai() // If it broke, time to yeet the PAI.
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/dispose(var/message = 1)
|
||||||
|
for (var/atom/movable/A in cookingContents())
|
||||||
|
A.forceMove(loc)
|
||||||
|
if (src.reagents.total_volume)
|
||||||
|
src.dirty++
|
||||||
|
src.reagents.clear_reagents()
|
||||||
|
if(message)
|
||||||
|
to_chat(usr, "<span class='notice'>You dispose of the cooking pot contents.</span>")
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/muck_start()
|
||||||
|
playsound(src, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound
|
||||||
|
src.icon_state = "cookingpotbloody1" // Make it look dirty!!
|
||||||
|
|
||||||
|
/obj/machinery/microwave/cookingpot/muck_finish()
|
||||||
|
src.visible_message("<span class='warning'>The cooking pot gets covered in muck!</span>")
|
||||||
|
src.dirty = 100 // Make it dirty so it can't be used util cleaned
|
||||||
|
src.flags = null //So you can't add condiments
|
||||||
|
src.icon_state = "cookingpotbloody0" // Make it look dirty too
|
||||||
|
src.operating = 0 // Turn it off again aferwards
|
||||||
|
SStgui.update_uis(src)
|
||||||
|
soundloop.stop()
|
||||||
|
|
||||||
|
// Magic bluespace stuff
|
||||||
|
|
||||||
|
|
||||||
|
/obj/item/clothing/gloves/bluespace/magic
|
||||||
|
name = "bracer of resilience"
|
||||||
|
desc = "A bracer that is said to make one resistent to size changing magic."
|
||||||
|
icon = 'icons/inventory/accessory/item_vr.dmi'
|
||||||
|
icon_state = "bs_magic"
|
||||||
|
|
||||||
|
//harpoon
|
||||||
|
|
||||||
|
/obj/item/weapon/bluespace_harpoon/wand
|
||||||
|
name = "teleportation wand"
|
||||||
|
desc = "An odd wand that weighs more than it looks like it should. It has a wire protruding from it and a glass-like tip, suggesting there may be more tech behind this than magic."
|
||||||
|
|
||||||
|
icon = 'icons/obj/gun_vr.dmi'
|
||||||
|
icon_state = "harpoonwand-2"
|
||||||
|
|
||||||
|
/obj/item/weapon/bluespace_harpoon/wand/update_icon()
|
||||||
|
if(transforming)
|
||||||
|
switch(mode)
|
||||||
|
if(0)
|
||||||
|
flick("harpoonwand-2-change", src)
|
||||||
|
icon_state = "harpoonwand-1"
|
||||||
|
if(1)
|
||||||
|
flick("harpoonwand-1-change",src)
|
||||||
|
icon_state = "harpoonwand-2"
|
||||||
|
transforming = 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* magic orb
|
||||||
|
*/
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/energy/taser/magic
|
||||||
|
name = "orb of lightning"
|
||||||
|
desc = "An orb filled with electrical energy, it looks oddly like a toy plasma orb..."
|
||||||
|
description_fluff = ""
|
||||||
|
icon_state = "orb"
|
||||||
|
|
||||||
|
//Kettle
|
||||||
|
|
||||||
|
/obj/machinery/chemical_dispenser/kettle //reskin of coffee dispenser
|
||||||
|
name = "kettle"
|
||||||
|
desc = "A kettle used for making hot drinks."
|
||||||
|
icon_state = "kettle"
|
||||||
|
ui_title = "kettle"
|
||||||
|
accept_drinking = 1
|
||||||
|
|
||||||
|
/obj/machinery/chemical_dispenser/kettle/full
|
||||||
|
spawn_cartridges = list(
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/coffee,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cafe_latte,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/soy_latte,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/hot_coco,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/milk,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cream,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/sugar,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tea,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/mint,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/berry,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/greentea,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/decaf,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/chaitea,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/decafchai
|
||||||
|
)
|
||||||
|
|
||||||
|
// teleporter
|
||||||
|
|
||||||
|
/obj/item/device/perfect_tele/magic
|
||||||
|
name = "teleportation tome"
|
||||||
|
desc = "A large tome that can be used to teleport to special pages that can be removed from it. The spine seems to have some sort buzzing tech inside..."
|
||||||
|
icon = 'icons/obj/props/fantasy.dmi'
|
||||||
|
icon_state = "teleporter"
|
||||||
|
beacons_left = 3
|
||||||
|
cell_type = /obj/item/weapon/cell/device
|
||||||
|
origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5)
|
||||||
|
|
||||||
|
/obj/item/device/perfect_tele_beacon/magic
|
||||||
|
name = "teleportation page"
|
||||||
|
desc = "A single page from a tome, with a glowing blue symbol on it. It seems like the symbol is raised as though there were something running beneath it..."
|
||||||
|
icon = 'icons/obj/props/fantasy.dmi'
|
||||||
|
icon_state = "page"
|
||||||
|
|
||||||
|
/obj/item/device/perfect_tele/magic/attack_self(mob/user, var/radial_menu_anchor = src)
|
||||||
|
if(loc_network)
|
||||||
|
for(var/obj/item/device/perfect_tele_beacon/stationary/nb in GLOB.premade_tele_beacons) //ChompEDIT - GLOB
|
||||||
|
if(nb.tele_network == loc_network)
|
||||||
|
beacons[nb.tele_name] = nb
|
||||||
|
loc_network = null //Consumed
|
||||||
|
|
||||||
|
if(!(user.ckey in warned_users))
|
||||||
|
warned_users |= user.ckey
|
||||||
|
tgui_alert_async(user,{"
|
||||||
|
This device can be easily used to break ERP preferences due to the nature of teleporting and tele-vore.
|
||||||
|
Make sure you carefully examine someone's OOC prefs before teleporting them if you are going to use this device for ERP purposes.
|
||||||
|
This device records all warnings given and teleport events for admin review in case of pref-breaking, so just don't do it.
|
||||||
|
"},"OOC Warning")
|
||||||
|
var/choice = show_radial_menu(user, radial_menu_anchor, radial_images, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
|
||||||
|
|
||||||
|
if(!choice)
|
||||||
|
return
|
||||||
|
|
||||||
|
else if(choice == "New Beacon")
|
||||||
|
if(beacons_left <= 0)
|
||||||
|
to_chat(user, "<span class='warning'>The tome can't support any more pages!</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/new_name = html_encode(tgui_input_text(user,"New pages's name (2-20 char):","[src]",null,20))
|
||||||
|
if(!check_menu(user))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(length(new_name) > 20 || length(new_name) < 2)
|
||||||
|
to_chat(user, "<span class='warning'>Entered name length invalid (must be longer than 2, no more than than 20).</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
if(new_name in beacons)
|
||||||
|
to_chat(user, "<span class='warning'>No duplicate names, please. '[new_name]' exists already.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/obj/item/device/perfect_tele_beacon/magic/nb = new(get_turf(src))
|
||||||
|
nb.tele_name = new_name
|
||||||
|
nb.tele_hand = src
|
||||||
|
nb.creator = user.ckey
|
||||||
|
beacons[new_name] = nb
|
||||||
|
beacons_left--
|
||||||
|
if(isliving(user))
|
||||||
|
var/mob/living/L = user
|
||||||
|
L.put_in_any_hand_if_possible(nb)
|
||||||
|
rebuild_radial_images()
|
||||||
|
|
||||||
|
else
|
||||||
|
destination = beacons[choice]
|
||||||
|
rebuild_radial_images()
|
||||||
|
|
||||||
|
//sizegun
|
||||||
|
|
||||||
|
/obj/item/device/slow_sizegun/magic
|
||||||
|
name = "wand of growth and shrinking"
|
||||||
|
desc = "A wand said to be able to shrink or grow it's targets, it's encrusted with glowing gems and a... trigger?"
|
||||||
|
icon = 'icons/obj/gun_vr.dmi'
|
||||||
|
icon_state = "sizegun-magic-0"
|
||||||
|
base_icon_state = "sizegun-magic"
|
||||||
@@ -168,7 +168,8 @@
|
|||||||
list("Redgate - Hotsprings"),
|
list("Redgate - Hotsprings"),
|
||||||
list("Redgate - Rain City"),
|
list("Redgate - Rain City"),
|
||||||
list("Redgate - Islands Underwater","Redgate - Islands"),
|
list("Redgate - Islands Underwater","Redgate - Islands"),
|
||||||
list("Redgate - Moving Train", "Redgate - Moving Train Upper Level")
|
list("Redgate - Moving Train", "Redgate - Moving Train Upper Level"),
|
||||||
|
list("Redgate - Fantasy Dungeon", "Redgate - Fantasy Town")
|
||||||
)
|
)
|
||||||
|
|
||||||
ai_shell_restricted = TRUE
|
ai_shell_restricted = TRUE
|
||||||
|
|||||||
@@ -195,7 +195,8 @@
|
|||||||
list("Redgate - Hotsprings"),
|
list("Redgate - Hotsprings"),
|
||||||
list("Redgate - Rain City"),
|
list("Redgate - Rain City"),
|
||||||
list("Redgate - Islands Underwater","Redgate - Islands"),
|
list("Redgate - Islands Underwater","Redgate - Islands"),
|
||||||
list("Redgate - Moving Train", "Redgate - Moving Train Upper Level")
|
list("Redgate - Moving Train", "Redgate - Moving Train Upper Level"),
|
||||||
|
list("Redgate - Fantasy Dungeon", "Redgate - Fantasy Town")
|
||||||
)
|
)
|
||||||
|
|
||||||
ai_shell_restricted = TRUE
|
ai_shell_restricted = TRUE
|
||||||
|
|||||||
@@ -1700,6 +1700,7 @@
|
|||||||
#include "code\game\objects\structures\props\blackbox.dm"
|
#include "code\game\objects\structures\props\blackbox.dm"
|
||||||
#include "code\game\objects\structures\props\esoteric.dm"
|
#include "code\game\objects\structures\props\esoteric.dm"
|
||||||
#include "code\game\objects\structures\props\fake_ai.dm"
|
#include "code\game\objects\structures\props\fake_ai.dm"
|
||||||
|
#include "code\game\objects\structures\props\fantasy.dm"
|
||||||
#include "code\game\objects\structures\props\fences.dm"
|
#include "code\game\objects\structures\props\fences.dm"
|
||||||
#include "code\game\objects\structures\props\machines.dm"
|
#include "code\game\objects\structures\props\machines.dm"
|
||||||
#include "code\game\objects\structures\props\nest.dm"
|
#include "code\game\objects\structures\props\nest.dm"
|
||||||
@@ -2508,6 +2509,7 @@
|
|||||||
#include "code\modules\food\food\snacks\meat.dm"
|
#include "code\modules\food\food\snacks\meat.dm"
|
||||||
#include "code\modules\food\glass\bottle.dm"
|
#include "code\modules\food\glass\bottle.dm"
|
||||||
#include "code\modules\food\glass\bottle_ch.dm"
|
#include "code\modules\food\glass\bottle_ch.dm"
|
||||||
|
#include "code\modules\food\glass\bottle_potion.dm"
|
||||||
#include "code\modules\food\glass\bottle_vr.dm"
|
#include "code\modules\food\glass\bottle_vr.dm"
|
||||||
#include "code\modules\food\glass\bottle\robot.dm"
|
#include "code\modules\food\glass\bottle\robot.dm"
|
||||||
#include "code\modules\food\kitchen\gibber.dm"
|
#include "code\modules\food\kitchen\gibber.dm"
|
||||||
@@ -3419,6 +3421,7 @@
|
|||||||
#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio_vr.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio_vr.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\bat.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\bee.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\bee.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\bigdragon.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\bigdragon.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\c_pet.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\c_pet.dm"
|
||||||
@@ -3426,6 +3429,7 @@
|
|||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\chungus.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\chungus.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\cookiegirl.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\cookiegirl.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\corrupt_hounds.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\corrupt_hounds.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\cryptdrake.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\deathclaw.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\deathclaw.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\dino.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\dino.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\dominated_brain.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\dominated_brain.dm"
|
||||||
@@ -3447,6 +3451,7 @@
|
|||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\otie.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\otie.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\pakkun.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\pakkun.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\panther.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\panther.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\peasant.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\rabbit.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\rabbit.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\rat.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\rat.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\rat_ch.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\rat_ch.dm"
|
||||||
@@ -3461,6 +3466,8 @@
|
|||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\solargrub.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\solargrub.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\solargrub_larva.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\solargrub_larva.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\solarmoth_ch.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\solarmoth_ch.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\succubi.dm"
|
||||||
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\vampire.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\vore.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\vore.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\vore_hostile.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\vore_hostile.dm"
|
||||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\weretiger.dm"
|
#include "code\modules\mob\living\simple_mob\subtypes\vore\weretiger.dm"
|
||||||
@@ -4009,6 +4016,7 @@
|
|||||||
#include "code\modules\reagents\hoses\connector.dm"
|
#include "code\modules\reagents\hoses\connector.dm"
|
||||||
#include "code\modules\reagents\hoses\hose.dm"
|
#include "code\modules\reagents\hoses\hose.dm"
|
||||||
#include "code\modules\reagents\hoses\hose_connector.dm"
|
#include "code\modules\reagents\hoses\hose_connector.dm"
|
||||||
|
#include "code\modules\reagents\machinery\alembic.dm"
|
||||||
#include "code\modules\reagents\machinery\chem_master.dm"
|
#include "code\modules\reagents\machinery\chem_master.dm"
|
||||||
#include "code\modules\reagents\machinery\chemalyzer.dm"
|
#include "code\modules\reagents\machinery\chemalyzer.dm"
|
||||||
#include "code\modules\reagents\machinery\distillery.dm"
|
#include "code\modules\reagents\machinery\distillery.dm"
|
||||||
@@ -4546,6 +4554,7 @@
|
|||||||
#include "maps\atoll\atoll_objs.dm"
|
#include "maps\atoll\atoll_objs.dm"
|
||||||
#include "maps\atoll\atoll_turfs.dm"
|
#include "maps\atoll\atoll_turfs.dm"
|
||||||
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
|
#include "maps\gateway_archive_vr\blackmarketpackers.dm"
|
||||||
|
#include "maps\redgate\fantasy_items.dm"
|
||||||
#include "maps\southern_cross\southern_cross.dm"
|
#include "maps\southern_cross\southern_cross.dm"
|
||||||
#include "maps\southern_cross\items\encryptionkey_sc.dm"
|
#include "maps\southern_cross\items\encryptionkey_sc.dm"
|
||||||
#include "maps\southern_cross\items\headset_sc.dm"
|
#include "maps\southern_cross\items\headset_sc.dm"
|
||||||
|
|||||||