mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-24 20:47:43 +01:00
First step
This commit is contained in:
@@ -537,4 +537,79 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN,
|
||||
for(var/species_name in whitelisted_icons)
|
||||
custom_species_bases += species_name
|
||||
|
||||
// Weaver recipe stuff
|
||||
paths = typesof(/datum/weaver_recipe/structure) - /datum/weaver_recipe/structure
|
||||
for(var/path in paths)
|
||||
var/datum/weaver_recipe/instance = new path()
|
||||
if(!instance.title)
|
||||
continue //A prototype or something
|
||||
weavable_structures[instance.title] = instance
|
||||
|
||||
paths = typesof(/datum/weaver_recipe/item) - /datum/weaver_recipe/item
|
||||
for(var/path in paths)
|
||||
var/datum/weaver_recipe/instance = new path()
|
||||
if(!instance.title)
|
||||
continue //A prototype or something
|
||||
weavable_items[instance.title] = instance
|
||||
|
||||
return 1 // Hooks must return 1
|
||||
|
||||
var/global/list/weavable_structures = list()
|
||||
/*
|
||||
floor web
|
||||
nest
|
||||
wall
|
||||
trap
|
||||
*/
|
||||
var/global/list/weavable_items = list()
|
||||
/*
|
||||
jumpsuit
|
||||
suit
|
||||
dress
|
||||
skirt
|
||||
shorts
|
||||
pants
|
||||
socks (shoes)
|
||||
footwraps
|
||||
toeless socks (toesless boots)
|
||||
sole covers (sandals)
|
||||
thick socks (winter boots)
|
||||
gloves
|
||||
fingerless gloves
|
||||
evening gloves
|
||||
cap
|
||||
top-hat
|
||||
bowler hat
|
||||
bandana
|
||||
veil
|
||||
beret
|
||||
headband
|
||||
waistcoast
|
||||
poncho
|
||||
cloak
|
||||
jacket
|
||||
labcoat
|
||||
overcoat
|
||||
winter coat
|
||||
hoodie
|
||||
robe/kimono
|
||||
apron
|
||||
hand bindings
|
||||
foot bindings
|
||||
overall bindings
|
||||
blindfold
|
||||
blindfold(fake)
|
||||
muzzle
|
||||
muzzle(fake)
|
||||
earmuffs
|
||||
earmuffs(fake)
|
||||
bandages
|
||||
bedsheet
|
||||
bedsheet(large)
|
||||
towel
|
||||
teshari cloak
|
||||
teshari undercoat
|
||||
scarf
|
||||
sweater
|
||||
collar?
|
||||
*/
|
||||
@@ -69,7 +69,8 @@
|
||||
//Organs and blood
|
||||
handle_organs()
|
||||
stabilize_body_temperature() //Body temperature adjusts itself (self-regulation)
|
||||
weightgain() //VORESTATION EDIT
|
||||
weightgain() //VOREStation Addition
|
||||
process_weaver_silk() //VOREStation Addition
|
||||
handle_shock()
|
||||
|
||||
handle_pain()
|
||||
@@ -77,7 +78,7 @@
|
||||
handle_medical_side_effects()
|
||||
|
||||
handle_heartbeat()
|
||||
handle_nif() //VOREStation Add
|
||||
handle_nif() //VOREStation Addition
|
||||
if(!client)
|
||||
species.handle_npc(src)
|
||||
|
||||
@@ -1291,7 +1292,7 @@
|
||||
clear_alert("blind")
|
||||
|
||||
var/apply_nearsighted_overlay = FALSE
|
||||
if(disabilities & NEARSIGHTED)
|
||||
if(disabilities & NEARSIGHTED)
|
||||
apply_nearsighted_overlay = TRUE
|
||||
|
||||
if(glasses)
|
||||
|
||||
@@ -6,6 +6,14 @@
|
||||
else if (nutrition <= MAX_NUTRITION_TO_LOSE && stat != 2 && weight > MIN_MOB_WEIGHT && weight_loss)
|
||||
weight -= species.metabolism*(0.01*weight_loss) // starvation weight loss
|
||||
|
||||
/mob/living/carbon/human/proc/process_weaver_silk()
|
||||
if(!species || !(species.is_weaver))
|
||||
return
|
||||
|
||||
if(species.silk_reserve < species.silk_max_reserve && species.silk_production == TRUE && nutrition > 100)
|
||||
species.silk_reserve = min(species.silk_reserve + 2, species.silk_max_reserve)
|
||||
adjust_nutrition(-0.4)
|
||||
|
||||
/mob/living/carbon/human/proc/handle_hud_list_vr()
|
||||
|
||||
//Right-side status hud updates with left side one.
|
||||
@@ -60,13 +68,13 @@
|
||||
//Overriding carbon move proc that forces default hunger factor
|
||||
/mob/living/carbon/Moved(atom/old_loc, direction, forced = FALSE)
|
||||
. = ..()
|
||||
|
||||
|
||||
// Technically this does mean being dragged takes nutrition
|
||||
if(stat != DEAD)
|
||||
adjust_nutrition(hunger_rate/-10)
|
||||
if(m_intent == "run")
|
||||
adjust_nutrition(hunger_rate/-10)
|
||||
|
||||
|
||||
// Moving around increases germ_level faster
|
||||
if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8))
|
||||
germ_level++
|
||||
@@ -20,6 +20,10 @@
|
||||
var/wikilink = null //link to wiki page for species
|
||||
var/icon_height = 32
|
||||
var/agility = 20 //prob() to do agile things
|
||||
var/is_weaver = FALSE
|
||||
var/silk_production = FALSE
|
||||
var/silk_reserve = 100
|
||||
var/silk_max_reserve = 500
|
||||
|
||||
var/list/traits = list()
|
||||
|
||||
|
||||
@@ -850,3 +850,64 @@
|
||||
set category = "Abilities"
|
||||
pass_flags ^= PASSTABLE //I dunno what this fancy ^= is but Aronai gave it to me.
|
||||
to_chat(src, "You [pass_flags&PASSTABLE ? "will" : "will NOT"] move over tables/railings/trays!")
|
||||
|
||||
/mob/living/carbon/human/proc/check_silk_amount()
|
||||
set name = "Check Silk Amount"
|
||||
set category = "Abilities"
|
||||
|
||||
if(species.is_weaver)
|
||||
to_chat(src, "Your silk reserves are at [species.silk_reserve]/[species.silk_max_reserve].")
|
||||
|
||||
/mob/living/carbon/human/proc/toggle_silk_production()
|
||||
set name = "Toggle Silk Production"
|
||||
set category = "Abilities"
|
||||
|
||||
if(species.is_weaver)
|
||||
species.silk_production = !(species.silk_production)
|
||||
to_chat(src, "You are [species.silk_production ? "now" : "no longer"] producing silk.")
|
||||
|
||||
/mob/living/carbon/human/proc/weave_structure()
|
||||
set name = "Weave Structure"
|
||||
set category = "Abilities"
|
||||
|
||||
if(!(species.is_weaver))
|
||||
return
|
||||
|
||||
var/choice
|
||||
var/datum/weaver_recipe/structure/desired_result
|
||||
var/finalized = "No"
|
||||
|
||||
while(finalized == "No" && src.client)
|
||||
choice = input(src,"What would you like to weave?") as null|anything in weavable_structures
|
||||
desired_result = weavable_structures[choice]
|
||||
if(desired_result || !istype(desired_result))
|
||||
return
|
||||
|
||||
if(choice)
|
||||
finalized = alert(src, "Are you sure you want to weave [desired_result.title]? It will cost you [desired_result.cost] silk.","Confirmation","Yes","No")
|
||||
|
||||
/mob/living/carbon/human/proc/weave_item()
|
||||
set name = "Weave Item"
|
||||
set category = "Abilities"
|
||||
|
||||
/mob/living/proc/weaveWebBindings()
|
||||
set name = "Weave Web Bindings"
|
||||
set category = "Species Powers"
|
||||
if(nutrition >= 30) //This isn't a huge problem. This is so you can bind people up.
|
||||
src.visible_message("<span class='notice'>\the [src] pulls silk from their manibles and delicately weaves it into bindings.</span>")
|
||||
adjust_nutrition(-30)
|
||||
spawn(30) //5 seconds to weave the bindings~
|
||||
var/obj/item/clothing/suit/web_bindings/bindings = new() //This sprite is amazing, I must say.
|
||||
src.put_in_hands(bindings)
|
||||
else
|
||||
to_chat(src, "You do not have enough nutrition to create webbing!") //CK~
|
||||
|
||||
/obj/item/clothing/suit/web_bindings
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
name = "web bindings"
|
||||
desc = "A webbed cocoon that completely restrains the wearer."
|
||||
icon_state = "web_bindings"
|
||||
item_state = "web_bindings_mob"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
/datum/trait/antiseptic_saliva/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..()
|
||||
H.verbs |= /mob/living/carbon/human/proc/lick_wounds
|
||||
H.verbs |= /mob/living/carbon/human/proc/lick_wounds
|
||||
|
||||
/datum/trait/traceur
|
||||
name = "Traceur"
|
||||
@@ -139,3 +139,16 @@
|
||||
desc = "You are able to move unhindered on snow."
|
||||
cost = 1
|
||||
var_changes = list("snow_movement" = -2)
|
||||
|
||||
/datum/trait/weaver
|
||||
name = "Weaver"
|
||||
desc = "You can produce silk and create various articles of clothing and objects."
|
||||
cost = 1
|
||||
var_changes = list("is_weaver" = 1)
|
||||
|
||||
/datum/trait/weaver/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||
..()
|
||||
H.verbs |= /mob/living/carbon/human/proc/check_silk_amount
|
||||
H.verbs |= /mob/living/carbon/human/proc/toggle_silk_production
|
||||
H.verbs |= /mob/living/carbon/human/proc/weave_structure
|
||||
H.verbs |= /mob/living/carbon/human/proc/weave_item
|
||||
@@ -0,0 +1,47 @@
|
||||
/obj/effect/weaversilk
|
||||
name = "weaversilk web"
|
||||
desc = "A thin layer of fiberous webs. It looks like it can be torn down with one strong hit."
|
||||
icon = 'icons/vore/weaver_icons_vr.dmi'
|
||||
anchored = 1
|
||||
density = 0
|
||||
|
||||
/obj/effect/weaversilk/attack_hand(mob/user as mob)
|
||||
if(user.a_intent == I_HURT)
|
||||
to_chat(user,"<span class='warning'>You easily tear down [name].</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/weaversilk/floor
|
||||
var/possible_icon_states = list("floorweb1", "floorweb2")
|
||||
plane = DIRTY_PLANE
|
||||
|
||||
/obj/effect/weaversilk/floor/Initialize()
|
||||
..()
|
||||
icon_state = pick(possible_icon_states)
|
||||
|
||||
/obj/effect/weaversilk/wall
|
||||
name = "weaversilk web wall"
|
||||
desc = "A thin layer of fiberous webs, but just thick enough to block your way. It looks like it can be torn down with one strong hit."
|
||||
icon_state = "wallweb1"
|
||||
density = 1
|
||||
|
||||
/obj/structure/bed/double/weaversilk_nest
|
||||
name = "nest"
|
||||
desc = "A nest of some kind, made of fiberous material."
|
||||
icon = 'icons/vore/weaver_icons_vr.dmi'
|
||||
icon_state = "nest"
|
||||
base_icon = "nest"
|
||||
|
||||
/obj/structure/bed/double/weaversilk_nest/update_icon()
|
||||
return
|
||||
|
||||
/obj/structure/bed/double/weaversilk_nest/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(W.is_wrench() || istype(W,/obj/item/stack) || W.is_wirecutter())
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/bed/double/weaversilk_nest/attack_hand(mob/user as mob)
|
||||
..()
|
||||
if(user.a_intent == I_HURT && !has_buckled_mobs())
|
||||
to_chat(user,"<span class='warning'>You easily tear down [name].</span>")
|
||||
qdel(src)
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/datum/weaver_recipe
|
||||
var/title = null
|
||||
var/result_type
|
||||
var/cost = 0
|
||||
var/time = 50
|
||||
var/one_per_turf = FALSE
|
||||
|
||||
/datum/weaver_recipe/structure
|
||||
one_per_turf = TRUE
|
||||
|
||||
/datum/weaver_recipe/structure/floor
|
||||
title = "Floor"
|
||||
result_type = /obj/effect/weaversilk/floor
|
||||
cost = 25
|
||||
|
||||
/datum/weaver_recipe/structure/wall
|
||||
title = "Wall"
|
||||
result_type = /obj/effect/weaversilk/wall
|
||||
cost = 100
|
||||
|
||||
/datum/weaver_recipe/structure/nest
|
||||
title = "Wall"
|
||||
result_type = /obj/structure/bed/double/weaversilk_nest
|
||||
cost = 100
|
||||
|
||||
/datum/weaver_recipe/item
|
||||
one_per_turf = FALSE
|
||||
@@ -1,21 +0,0 @@
|
||||
/obj/item/clothing/suit/web_bindings
|
||||
icon = 'icons/vore/custom_clothes_vr.dmi'
|
||||
icon_override = 'icons/vore/custom_clothes_vr.dmi'
|
||||
name = "web bindings"
|
||||
desc = "A webbed cocoon that completely restrains the wearer."
|
||||
icon_state = "web_bindings"
|
||||
item_state = "web_bindings_mob"
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
|
||||
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
|
||||
|
||||
/mob/living/proc/weaveWebBindings()
|
||||
set name = "Weave Web Bindings"
|
||||
set category = "Species Powers"
|
||||
if(nutrition >= 30) //This isn't a huge problem. This is so you can bind people up.
|
||||
src.visible_message("<span class='notice'>\the [src] pulls silk from their manibles and delicately weaves it into bindings.</span>")
|
||||
adjust_nutrition(-30)
|
||||
spawn(30) //5 seconds to weave the bindings~
|
||||
var/obj/item/clothing/suit/web_bindings/bindings = new() //This sprite is amazing, I must say.
|
||||
src.put_in_hands(bindings)
|
||||
else
|
||||
to_chat(src, "You do not have enough nutrition to create webbing!") //CK~
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
+2
-1
@@ -2653,6 +2653,8 @@
|
||||
#include "code\modules\mob\living\carbon\human\species\station\traits_vr\neutral.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\traits_vr\positive.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\traits_vr\trait.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\traits_vr\weaver_objs.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\traits_vr\weaver_recipies.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\virtual_reality\avatar.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\virtual_reality\opaque_form.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm"
|
||||
@@ -3684,7 +3686,6 @@
|
||||
#include "code\modules\vore\hook-defs_vr.dm"
|
||||
#include "code\modules\vore\trycatch_vr.dm"
|
||||
#include "code\modules\vore\appearance\preferences_vr.dm"
|
||||
#include "code\modules\vore\appearance\spider_taur_powers_vr.dm"
|
||||
#include "code\modules\vore\appearance\sprite_accessories_taur_vr.dm"
|
||||
#include "code\modules\vore\appearance\sprite_accessories_vr.dm"
|
||||
#include "code\modules\vore\appearance\update_icons_vr.dm"
|
||||
|
||||
Reference in New Issue
Block a user