Merge remote-tracking branch 'Virgo_Master/master'
@@ -1,4 +1,4 @@
|
||||
//Basically a one way passive valve. If the pressure inside is greater than the environment then gas will flow passively,
|
||||
//Basically a one way passive valve. If the pressure inside is greater than the environment then gas will flow passively,
|
||||
//but it does not permit gas to flow back from the environment into the injector. Can be turned off to prevent any gas flow.
|
||||
//When it receives the "inject" signal, it will try to pump it's entire contents into the environment regardless of pressure, using power.
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
use_power = 0
|
||||
idle_power_usage = 150 //internal circuitry, friction losses and stuff
|
||||
power_rating = 15000 //15000 W ~ 20 HP
|
||||
|
||||
|
||||
var/injecting = 0
|
||||
|
||||
var/volume_rate = 50 //flow rate limit
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/New()
|
||||
..()
|
||||
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //Give it a small reservoir for injecting. Also allows it to have a higher flow rate limit than vent pumps, to differentiate injectors a bit more.
|
||||
air_contents.volume = ATMOS_DEFAULT_VOLUME_PUMP + 500 //Give it a small reservoir for injecting. Also allows it to have a higher flow rate limit than vent pumps, to differentiate injectors a bit more.
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/Destroy()
|
||||
unregister_radio(src, frequency)
|
||||
@@ -60,21 +60,21 @@
|
||||
|
||||
if((stat & (NOPOWER|BROKEN)) || !use_power)
|
||||
return
|
||||
|
||||
|
||||
var/power_draw = -1
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
|
||||
|
||||
if(environment && air_contents.temperature > 0)
|
||||
var/transfer_moles = (volume_rate/air_contents.volume)*air_contents.total_moles //apply flow rate limit
|
||||
power_draw = pump_gas(src, air_contents, environment, transfer_moles, power_rating)
|
||||
|
||||
|
||||
if (power_draw >= 0)
|
||||
last_power_draw = power_draw
|
||||
use_power(power_draw)
|
||||
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/proc/inject()
|
||||
@@ -84,7 +84,7 @@
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
if (!environment)
|
||||
return 0
|
||||
|
||||
|
||||
injecting = 1
|
||||
|
||||
if(air_contents.temperature > 0)
|
||||
@@ -155,4 +155,23 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/hide(var/i)
|
||||
update_underlays()
|
||||
update_underlays()
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/attack_hand(mob/user as mob)
|
||||
to_chat(user, "<span class='notice'>You toggle \the [src].</span>")
|
||||
injecting = !injecting
|
||||
use_power = injecting
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/unary/outlet_injector/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!W.is_wrench())
|
||||
return ..()
|
||||
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You begin to unfasten \the [src]...</span>")
|
||||
if (do_after(user, 40 * W.toolspeed))
|
||||
user.visible_message( \
|
||||
"<span class='notice'>\The [user] unfastens \the [src].</span>", \
|
||||
"<span class='notice'>You have unfastened \the [src].</span>", \
|
||||
"You hear a ratchet.")
|
||||
deconstruct()
|
||||
@@ -240,9 +240,9 @@ SUBSYSTEM_DEF(garbage)
|
||||
time = TICK_DELTA_TO_MS(tick)/100
|
||||
if (time > highest_del_time)
|
||||
highest_del_time = time
|
||||
if (time > 10)
|
||||
log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)")
|
||||
message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).")
|
||||
if (time > 20) //VOREStation Edit
|
||||
log_game("Error: [type]([refID]) took longer than 2 seconds to delete (took [time/10] seconds to delete)") //VOREStation Edit
|
||||
message_admins("Error: [type]([refID]) took longer than 2 seconds to delete (took [time/10] seconds to delete).") //VOREStation Edit
|
||||
postpone(time)
|
||||
|
||||
/datum/controller/subsystem/garbage/proc/HardQueue(datum/D)
|
||||
|
||||
@@ -143,4 +143,30 @@
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Glucose Hypo Crate"
|
||||
containername = "Glucose Hypo Crate"
|
||||
|
||||
/datum/supply_pack/misc/mre_rations
|
||||
num_contained = 6
|
||||
name = "Emergency - MREs"
|
||||
contains = list(/obj/item/weapon/storage/mre,
|
||||
/obj/item/weapon/storage/mre/menu2,
|
||||
/obj/item/weapon/storage/mre/menu3,
|
||||
/obj/item/weapon/storage/mre/menu4,
|
||||
/obj/item/weapon/storage/mre/menu5,
|
||||
/obj/item/weapon/storage/mre/menu6,
|
||||
/obj/item/weapon/storage/mre/menu7,
|
||||
/obj/item/weapon/storage/mre/menu8,
|
||||
/obj/item/weapon/storage/mre/menu9,
|
||||
/obj/item/weapon/storage/mre/menu10)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "ready to eat rations"
|
||||
|
||||
/datum/supply_pack/misc/paste_rations
|
||||
name = "Emergency - Paste"
|
||||
contains = list(
|
||||
/obj/item/weapon/storage/mre/menu11 = 2
|
||||
)
|
||||
cost = 25
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "emergency rations"
|
||||
|
||||
@@ -13,24 +13,6 @@
|
||||
containername = "Belt-miner gear crate"
|
||||
access = access_mining
|
||||
|
||||
/datum/supply_pack/misc/rations
|
||||
name = "Emergency rations"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 4,
|
||||
)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "emergency rations"
|
||||
|
||||
/datum/supply_pack/misc/proteinrations
|
||||
name = "Emergency meat rations"
|
||||
contains = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein = 4,
|
||||
)
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate/freezer
|
||||
containername = "emergency meat rations"
|
||||
|
||||
/datum/supply_pack/misc/eva_rig
|
||||
name = "eva hardsuit (empty)"
|
||||
contains = list(
|
||||
|
||||
@@ -76,6 +76,10 @@
|
||||
name = "\improper \"LiquidFood\" ration"
|
||||
icon_state = "liquidfood"
|
||||
|
||||
/obj/item/trash/liquidprotein
|
||||
name = "\improper \"LiquidProtein\" ration"
|
||||
icon_state = "liquidprotein"
|
||||
|
||||
/obj/item/trash/tastybread
|
||||
name = "bread tube"
|
||||
icon_state = "tastybread"
|
||||
|
||||
@@ -26,11 +26,6 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/trash/liquidprotein
|
||||
name = "\improper \"LiquidProtein\" ration"
|
||||
icon = 'icons/obj/trash_vr.dmi'
|
||||
icon_state = "liquidprotein"
|
||||
|
||||
/obj/item/trash/fancyplate
|
||||
name = "dirty fancy plate"
|
||||
icon = 'icons/obj/trash_vr.dmi'
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
item_state = "candlebox5"
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 5
|
||||
starts_with = list(/obj/item/weapon/flame/candle = 5)
|
||||
|
||||
/obj/item/weapon/storage/fancy/whitecandle_box
|
||||
@@ -78,6 +79,7 @@
|
||||
item_state = "whitecandlebox5"
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 5
|
||||
starts_with = list(/obj/item/weapon/flame/candle/white = 5)
|
||||
|
||||
/obj/item/weapon/storage/fancy/blackcandle_box
|
||||
@@ -89,6 +91,7 @@
|
||||
item_state = "blackcandlebox5"
|
||||
throwforce = 2
|
||||
slot_flags = SLOT_BELT
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 5
|
||||
starts_with = list(/obj/item/weapon/flame/candle/black = 5)
|
||||
|
||||
|
||||
@@ -179,6 +182,21 @@
|
||||
return
|
||||
..()
|
||||
|
||||
/*
|
||||
* Cracker Packet
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/fancy/crackers
|
||||
name = "\improper Getmore Crackers"
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "crackerbox"
|
||||
icon_type = "cracker"
|
||||
max_storage_space = ITEMSIZE_COST_TINY * 6
|
||||
max_w_class = ITEMSIZE_TINY
|
||||
w_class = ITEMSIZE_SMALL
|
||||
can_hold = list(/obj/item/weapon/reagent_containers/food/snacks/cracker)
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/cracker = 6)
|
||||
|
||||
////////////
|
||||
//CIG PACK//
|
||||
////////////
|
||||
|
||||
@@ -0,0 +1,276 @@
|
||||
/*
|
||||
MRE Stuff
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/mre
|
||||
name = "standard MRE"
|
||||
desc = "A vacuum-sealed bag containing a day's worth of nutrients for an adult in strenuous situations. There is no visible expiration date on the package."
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "mre"
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 6
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
var/opened = FALSE
|
||||
var/meal_desc = "This one is menu 1, meat pizza."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/examine(mob/user)
|
||||
. = ..()
|
||||
to_chat(user, meal_desc)
|
||||
|
||||
/obj/item/weapon/storage/mre/update_icon()
|
||||
if(opened)
|
||||
icon_state = "[initial(icon_state)][opened]"
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/mre/attack_self(mob/user)
|
||||
open(user)
|
||||
|
||||
/obj/item/weapon/storage/mre/open(mob/user)
|
||||
if(!opened)
|
||||
to_chat(usr, "<span class='notice'>You tear open the bag, breaking the vacuum seal.</span>")
|
||||
opened = 1
|
||||
update_icon()
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/mre/menu2
|
||||
meal_desc = "This one is menu 2, margherita."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu2,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu3
|
||||
meal_desc = "This one is menu 3, vegetable pizza."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu3,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu4
|
||||
meal_desc = "This one is menu 4, hamburger."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu4,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu5
|
||||
meal_desc = "This one is menu 5, taco."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu5,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu6
|
||||
meal_desc = "This one is menu 6, meatbread."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu6,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu7
|
||||
meal_desc = "This one is menu 7, salad."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu7,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu8
|
||||
meal_desc = " This one is menu 8, hot chili."
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu8,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu9
|
||||
name = "vegan MRE"
|
||||
meal_desc = "This one is menu 9, boiled rice (skrell-safe)."
|
||||
icon_state = "vegmre"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu9,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert/menu9,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread/vegan,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce/vegan,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu10
|
||||
name = "protein MRE"
|
||||
meal_desc = "This one is menu 10, protein."
|
||||
icon_state = "meatmre"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/mrebag/menu10,
|
||||
/obj/item/weapon/storage/mrebag/menu10,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein,
|
||||
/obj/random/mre/sauce/sugarfree,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu11
|
||||
name = "emergency MRE"
|
||||
meal_desc = "This one is menu 11, nutriment paste. Only for emergencies."
|
||||
icon_state = "crayonmre"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/menu12
|
||||
name = "crayon MRE"
|
||||
meal_desc = "This one doesn't have a menu listing. How very odd."
|
||||
icon_state = "crayonmre"
|
||||
starts_with = list(
|
||||
/obj/item/weapon/storage/fancy/crayons,
|
||||
/obj/item/weapon/storage/mrebag/dessert/menu11,
|
||||
/obj/random/mre/sauce/crayon,
|
||||
/obj/random/mre/sauce/crayon,
|
||||
/obj/random/mre/sauce/crayon
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mre/random
|
||||
meal_desc = "The menu label is faded out."
|
||||
starts_with = list(
|
||||
/obj/random/mre/main,
|
||||
/obj/item/weapon/storage/mrebag/side,
|
||||
/obj/item/weapon/storage/mrebag/dessert,
|
||||
/obj/item/weapon/storage/fancy/crackers,
|
||||
/obj/random/mre/spread,
|
||||
/obj/random/mre/drink,
|
||||
/obj/random/mre/sauce,
|
||||
/obj/item/weapon/material/kitchen/utensil/spoon/plastic
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/mrebag
|
||||
name = "main course"
|
||||
desc = "A vacuum-sealed bag containing the MRE's main course. Self-heats when opened."
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "pouch_medium"
|
||||
storage_slots = 1
|
||||
w_class = ITEMSIZE_SMALL
|
||||
max_w_class = ITEMSIZE_SMALL
|
||||
var/opened = FALSE
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza/filled)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/Initialize()
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/mrebag/update_icon()
|
||||
if(opened)
|
||||
icon_state = "[initial(icon_state)][opened]"
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/mrebag/attack_self(mob/user)
|
||||
open(user)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/open(mob/user)
|
||||
if(!opened)
|
||||
to_chat(usr, "<span class='notice'>The pouch heats up as you break the vaccum seal.</span>")
|
||||
opened = 1
|
||||
update_icon()
|
||||
. = ..()
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu2
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/slice/margherita/filled)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu3
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza/filled)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu4
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/monkeyburger)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu5
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/taco)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu6
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/filled)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu7
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/tossedsalad)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu8
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/hotchili)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu9
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/boiledrice)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/menu10
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/meatcube)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/side
|
||||
name = "side dish"
|
||||
desc = "A vacuum-sealed bag containing the MRE's side dish. Self-heats when opened."
|
||||
icon_state = "pouch_small"
|
||||
starts_with = list(/obj/random/mre/side)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/side/menu10
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/meatcube)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/dessert
|
||||
name = "dessert"
|
||||
desc = "A vacuum-sealed bag containing the MRE's dessert."
|
||||
icon_state = "pouch_small"
|
||||
starts_with = list(/obj/random/mre/dessert)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/dessert/menu9
|
||||
starts_with = list(/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit)
|
||||
|
||||
/obj/item/weapon/storage/mrebag/dessert/menu11
|
||||
starts_with = list(/obj/item/weapon/pen/crayon/rainbow)
|
||||
@@ -540,3 +540,150 @@
|
||||
var/possible_object_paths = list(/obj/item/weapon/paper/carbon/cursedform)
|
||||
possible_object_paths |= subtypesof(/obj/item/clothing/head/psy_crown)
|
||||
return pick(possible_object_paths)
|
||||
|
||||
//Random MRE stuff
|
||||
|
||||
/obj/random/mre
|
||||
name = "random MRE"
|
||||
desc = "This is a random single MRE."
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "mre"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/item_to_spawn()
|
||||
return pick(/obj/item/weapon/storage/mre,
|
||||
/obj/item/weapon/storage/mre/menu2,
|
||||
/obj/item/weapon/storage/mre/menu3,
|
||||
/obj/item/weapon/storage/mre/menu4,
|
||||
/obj/item/weapon/storage/mre/menu5,
|
||||
/obj/item/weapon/storage/mre/menu6,
|
||||
/obj/item/weapon/storage/mre/menu7,
|
||||
/obj/item/weapon/storage/mre/menu8,
|
||||
/obj/item/weapon/storage/mre/menu9,
|
||||
/obj/item/weapon/storage/mre/menu10)
|
||||
|
||||
|
||||
/obj/random/mre/main
|
||||
name = "random MRE main course"
|
||||
desc = "This is a random main course for MREs."
|
||||
icon_state = "pouch"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/main/item_to_spawn()
|
||||
return pick(/obj/item/weapon/storage/mrebag,
|
||||
/obj/item/weapon/storage/mrebag/menu2,
|
||||
/obj/item/weapon/storage/mrebag/menu3,
|
||||
/obj/item/weapon/storage/mrebag/menu4,
|
||||
/obj/item/weapon/storage/mrebag/menu5,
|
||||
/obj/item/weapon/storage/mrebag/menu6,
|
||||
/obj/item/weapon/storage/mrebag/menu7,
|
||||
/obj/item/weapon/storage/mrebag/menu8)
|
||||
|
||||
/obj/random/mre/side
|
||||
name = "random MRE side dish"
|
||||
desc = "This is a random side dish for MREs."
|
||||
icon_state = "pouch"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/side/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/snacks/tossedsalad,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/boiledrice,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/twobread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast)
|
||||
|
||||
/obj/random/mre/dessert
|
||||
name = "random MRE dessert"
|
||||
desc = "This is a random dessert for MREs."
|
||||
icon_state = "pouch"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/dessert/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/snacks/candy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/normal,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/cookie)
|
||||
|
||||
/obj/random/mre/dessert/vegan
|
||||
name = "random vegan MRE dessert"
|
||||
desc = "This is a random vegan dessert for MREs."
|
||||
|
||||
/obj/random/mre/dessert/vegan/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/snacks/candy,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit)
|
||||
|
||||
/obj/random/mre/drink
|
||||
name = "random MRE drink"
|
||||
desc = "This is a random drink for MREs."
|
||||
icon_state = "packet"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/drink/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/coffee,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/tea,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/cocoa,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/grape,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/orange,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/watermelon,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/apple)
|
||||
|
||||
/obj/random/mre/spread
|
||||
name = "random MRE spread"
|
||||
desc = "This is a random spread packet for MREs."
|
||||
icon_state = "packet"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/spread/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/jelly,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/honey)
|
||||
|
||||
/obj/random/mre/spread/vegan
|
||||
name = "random vegan MRE spread"
|
||||
desc = "This is a random vegan spread packet for MREs"
|
||||
|
||||
/obj/random/mre/spread/vegan/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/jelly)
|
||||
|
||||
/obj/random/mre/sauce
|
||||
name = "random MRE sauce"
|
||||
desc = "This is a random sauce packet for MREs."
|
||||
icon_state = "packet"
|
||||
drop_get_turf = FALSE
|
||||
|
||||
/obj/random/mre/sauce/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/sugar,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/capsaicin,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/ketchup,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/mayo,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy)
|
||||
|
||||
/obj/random/mre/sauce/vegan/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/sugar,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy)
|
||||
|
||||
/obj/random/mre/sauce/sugarfree/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/capsaicin,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/ketchup,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/mayo,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy)
|
||||
|
||||
/obj/random/mre/sauce/crayon/item_to_spawn()
|
||||
return pick(/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/generic,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/red,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/orange,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/yellow,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/green,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/blue,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/purple,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/grey,
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/brown)
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
/obj/item/clothing/glasses/meson,
|
||||
/obj/item/weapon/cartridge/engineering,
|
||||
/obj/item/taperoll/engineering,
|
||||
/obj/item/clothing/head/hardhat,
|
||||
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering,
|
||||
/obj/item/clothing/shoes/boots/winter/engineering,
|
||||
/obj/item/weapon/tank/emergency/oxygen/engi,
|
||||
@@ -125,6 +126,7 @@
|
||||
starts_with = list(
|
||||
/obj/item/clothing/accessory/storage/brown_vest,
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/head/hardhat/red,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/weapon/extinguisher,
|
||||
///obj/item/clamp, //VOREStation Removal: without leaks those are pointless,
|
||||
|
||||
@@ -346,7 +346,7 @@
|
||||
desc = "A crate of emergency rations."
|
||||
|
||||
starts_with = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood = 4)
|
||||
/obj/random/mre = 6)
|
||||
|
||||
|
||||
/obj/structure/closet/crate/bin
|
||||
|
||||
@@ -53,7 +53,7 @@ var/list/lastsignalers = list() // Keeps last 100 signals here in format: "[src]
|
||||
var/list/lawchanges = list() // Stores who uploaded laws to which silicon-based lifeform, and what the law was.
|
||||
var/list/reg_dna = list()
|
||||
|
||||
var/mouse_respawn_time = 5 // Amount of time that must pass between a player dying as a mouse and repawning as a mouse. In minutes.
|
||||
var/mouse_respawn_time = 2.5 // Amount of time that must pass between a player dying as a mouse and repawning as a mouse. In minutes. Vorestation Edit - Changed to 2.5 minutes, half of 5, in accordance with mouse nerfs and realignment.
|
||||
|
||||
var/list/monkeystart = list()
|
||||
var/list/wizardstart = list()
|
||||
|
||||
@@ -368,7 +368,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
return
|
||||
|
||||
var/location = alert(src,"Please specify where to spawn them.", "Location", "Right Here", "Arrivals", "Cancel")
|
||||
if(!location)
|
||||
if(location == "Cancel" || !location)
|
||||
return
|
||||
|
||||
var/announce = alert(src,"Announce as if they had just arrived?", "Announce", "Yes", "No", "Cancel")
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
/obj/item/device/cataloguer/compact
|
||||
name = "compact cataloguer"
|
||||
icon = 'icons/vore/custom_items_vr.dmi'
|
||||
icon_state = "tricorder"
|
||||
action_button_name = "Toggle Cataloguer"
|
||||
var/deployed = TRUE
|
||||
scan_range = 1
|
||||
toolspeed = 1.2
|
||||
|
||||
/obj/item/device/cataloguer/compact/update_icon()
|
||||
if(busy)
|
||||
icon_state = "[initial(icon_state)]_s"
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/obj/item/device/cataloguer/compact/ui_action_click()
|
||||
toggle()
|
||||
|
||||
/obj/item/device/cataloguer/compact/verb/toggle()
|
||||
set name = "Toggle Cataloguer"
|
||||
set category = "Object"
|
||||
|
||||
if(busy)
|
||||
to_chat(usr, span("warning", "\The [src] is currently scanning something."))
|
||||
return
|
||||
deployed = !(deployed)
|
||||
if(deployed)
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
icon_state = "[initial(icon_state)]"
|
||||
to_chat(usr, span("notice", "You flip open \the [src]."))
|
||||
else
|
||||
w_class = ITEMSIZE_SMALL
|
||||
icon_state = "[initial(icon_state)]_closed"
|
||||
to_chat(usr, span("notice", "You close \the [src]."))
|
||||
|
||||
if (ismob(usr))
|
||||
var/mob/M = usr
|
||||
M.update_action_buttons()
|
||||
|
||||
/obj/item/device/cataloguer/compact/afterattack(atom/target, mob/user, proximity_flag)
|
||||
if(!deployed)
|
||||
to_chat(user, span("warning", "\The [src] is closed."))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/device/cataloguer/compact/pulse_scan(mob/user)
|
||||
if(!deployed)
|
||||
to_chat(user, span("warning", "\The [src] is closed."))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/device/cataloguer/compact/pathfinder
|
||||
name = "pathfinder's cataloguer"
|
||||
icon_state = "tricorder_med"
|
||||
scan_range = 3
|
||||
toolspeed = 1
|
||||
@@ -1,9 +1,3 @@
|
||||
/datum/gear/suit/roles/poncho/cloak/research
|
||||
allowed_roles = list("Research Director","Scientist", "Roboticist", "Xenobiologist", "Explorer", "Pathfinder")
|
||||
|
||||
/datum/gear/suit/roles/poncho/cloak/medical
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist", "Field Medic")
|
||||
|
||||
/datum/gear/suit/wintercoat/medical
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist", "Field Medic")
|
||||
|
||||
|
||||
@@ -293,6 +293,17 @@
|
||||
punch_force = initial(punch_force)
|
||||
wearer = null
|
||||
|
||||
/obj/item/clothing/gloves
|
||||
var/datum/unarmed_attack/special_attack = null //do the gloves have a special unarmed attack?
|
||||
var/special_attack_type = null
|
||||
|
||||
/obj/item/clothing/gloves/New()
|
||||
..()
|
||||
if(special_attack_type && ispath(special_attack_type))
|
||||
special_attack = new special_attack_type
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Rings
|
||||
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.gloves)
|
||||
gloves = H.gloves
|
||||
if(!istype(gloves))
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
gloves = null
|
||||
return 0
|
||||
if(gloves.overgloves)
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
gloves = null
|
||||
|
||||
@@ -182,6 +182,198 @@
|
||||
. = ..()
|
||||
reagents.add_reagent("sugar", 20)
|
||||
|
||||
//MRE condiments and drinks.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet
|
||||
icon_state = "packet_small"
|
||||
w_class = ITEMSIZE_TINY
|
||||
possible_transfer_amounts = "1;5;10"
|
||||
amount_per_transfer_from_this = 1
|
||||
volume = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt
|
||||
name = "salt packet"
|
||||
desc = "Contains 5u of table salt."
|
||||
icon_state = "packet_small_white"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("sodiumchloride", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper
|
||||
name = "pepper packet"
|
||||
desc = "Contains 5u of black pepper."
|
||||
icon_state = "packet_small_black"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("blackpepper", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/sugar
|
||||
name = "sugar packet"
|
||||
desc = "Contains 5u of refined sugar."
|
||||
icon_state = "packet_small_white"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/sugar/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("sugar", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/jelly
|
||||
name = "jelly packet"
|
||||
desc = "Contains 10u of cherry jelly. Best used for spreading on crackers."
|
||||
icon_state = "packet_medium"
|
||||
volume = 10
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/jelly/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("cherryjelly", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/honey
|
||||
name = "honey packet"
|
||||
desc = "Contains 10u of honey."
|
||||
icon_state = "packet_medium"
|
||||
volume = 10
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/honey/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("honey", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/capsaicin
|
||||
name = "hot sauce packet"
|
||||
desc = "Contains 5u of hot sauce. Enjoy in moderation."
|
||||
icon_state = "packet_small_red"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/capsaicin/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("capsaicin", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/ketchup
|
||||
name = "ketchup packet"
|
||||
desc = "Contains 5u of ketchup."
|
||||
icon_state = "packet_small_red"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/ketchup/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("ketchup", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/mayo
|
||||
name = "mayonnaise packet"
|
||||
desc = "Contains 5u of mayonnaise."
|
||||
icon_state = "packet_small_white"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/mayo/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("mayo", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy
|
||||
name = "soy sauce packet"
|
||||
desc = "Contains 5u of soy sauce."
|
||||
icon_state = "packet_small_black"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("soysauce", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/coffee
|
||||
name = "coffee powder packet"
|
||||
desc = "Contains 5u of coffee powder. Mix with 25u of water and heat."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/coffee/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("coffeepowder", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/tea
|
||||
name = "tea powder packet"
|
||||
desc = "Contains 5u of black tea powder. Mix with 25u of water and heat."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/tea/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("tea", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/cocoa
|
||||
name = "cocoa powder packet"
|
||||
desc = "Contains 5u of cocoa powder. Mix with 25u of water and heat."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/cocoa/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("coco", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/grape
|
||||
name = "grape juice powder packet"
|
||||
desc = "Contains 5u of powdered grape juice. Mix with 15u of water."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/grape/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("instantgrape", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/orange
|
||||
name = "orange juice powder packet"
|
||||
desc = "Contains 5u of powdered orange juice. Mix with 15u of water."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/orange/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("instantorange", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/watermelon
|
||||
name = "watermelon juice powder packet"
|
||||
desc = "Contains 5u of powdered watermelon juice. Mix with 15u of water."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/watermelon/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("instantwatermelon", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/apple
|
||||
name = "apple juice powder packet"
|
||||
desc = "Contains 5u of powdered apple juice. Mix with 15u of water."
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/apple/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("instantapple", 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein
|
||||
name = "protein powder packet"
|
||||
desc = "Contains 10u of powdered protein. Mix with 20u of water."
|
||||
icon_state = "packet_medium"
|
||||
volume = 10
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("protein", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon
|
||||
name = "crayon powder packet"
|
||||
desc = "Contains 10u of powdered crayon. Mix with 30u of water."
|
||||
volume = 10
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/generic/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/red/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_red", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/orange/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_orange", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/yellow/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_yellow", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/green/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_green", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/blue/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_blue", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/purple/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_purple", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/grey/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_grey", 10)
|
||||
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/brown/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("crayon_dust_brown", 10)
|
||||
|
||||
//End of MRE stuff.
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/condiment/flour
|
||||
name = "flour sack"
|
||||
desc = "A big bag of flour. Good for baking!"
|
||||
|
||||
@@ -21,12 +21,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/snacks/Initialize()
|
||||
. = ..()
|
||||
if(nutriment_amt)
|
||||
reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/Initialize()
|
||||
. = ..()
|
||||
if(nutriment_amt)
|
||||
reagents.add_reagent("nutriment", nutriment_amt)
|
||||
reagents.add_reagent("nutriment",(nutriment_amt*2),nutriment_desc)
|
||||
|
||||
//Placeholder for effect that trigger on eating that aren't tied to reagents.
|
||||
/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M)
|
||||
@@ -3088,6 +3083,7 @@
|
||||
filling_color = "#F5DEB8"
|
||||
center_of_mass = list("x"=16, "y"=6)
|
||||
nutriment_desc = list("salt" = 1, "cracker" = 2)
|
||||
w_class = ITEMSIZE_TINY
|
||||
nutriment_amt = 1
|
||||
|
||||
|
||||
@@ -3738,6 +3734,33 @@
|
||||
reagents.add_reagent("iron", 3)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein
|
||||
name = "\improper LiquidProtein Ration"
|
||||
desc = "A variant of the liquidfood ration, designed for obligate carnivore species. Only barely more appealing than regular liquidfood. Should this be crunchy?"
|
||||
icon_state = "liquidprotein"
|
||||
trash = /obj/item/trash/liquidprotein
|
||||
filling_color = "#A8A8A8"
|
||||
survivalfood = TRUE
|
||||
center_of_mass = list("x"=16, "y"=15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("protein", 30)
|
||||
reagents.add_reagent("iron", 3)
|
||||
bitesize = 4
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatcube
|
||||
name = "cubed meat"
|
||||
desc = "Fried, salted lean meat compressed into a cube. Not very appetizing."
|
||||
icon_state = "meatcube"
|
||||
filling_color = "#7a3d11"
|
||||
center_of_mass = list("x"=16, "y"=16)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meatcube/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("protein", 15)
|
||||
bitesize = 3
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/tastybread
|
||||
name = "bread tube"
|
||||
desc = "Bread in a tube. Chewy...and surprisingly tasty."
|
||||
|
||||
@@ -607,19 +607,3 @@
|
||||
|
||||
/obj/item/pizzabox/meat/Initialize()
|
||||
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein
|
||||
name = "\improper LiquidProtein Ration"
|
||||
desc = "A variant of the liquidfood ration, designed for obligate carnivore species. Only barely more appealing than regular liquidfood. Should this be crunchy?"
|
||||
icon = 'icons/obj/food_vr.dmi'
|
||||
icon_state = "liquidprotein"
|
||||
trash = /obj/item/trash/liquidprotein
|
||||
filling_color = "#A8A8A8"
|
||||
survivalfood = TRUE
|
||||
center_of_mass = list("x"=16, "y"=15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("protein", 20)
|
||||
reagents.add_reagent("iron", 3)
|
||||
bitesize = 4
|
||||
|
||||
@@ -126,6 +126,38 @@
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi',
|
||||
)
|
||||
item_state = "boxing"
|
||||
special_attack_type = /datum/unarmed_attack/holopugilism
|
||||
|
||||
datum/unarmed_attack/holopugilism
|
||||
sparring_variant_type = /datum/unarmed_attack/holopugilism
|
||||
|
||||
datum/unarmed_attack/holopugilism/unarmed_override(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/zone)
|
||||
user.do_attack_animation(src)
|
||||
var/damage = rand(0, 9)
|
||||
if(!damage)
|
||||
playsound(target.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
target.visible_message("<font color='red'><B>[user] has attempted to punch [target]!</B></font>")
|
||||
return TRUE
|
||||
var/obj/item/organ/external/affecting = target.get_organ(ran_zone(user.zone_sel.selecting))
|
||||
var/armor_block = target.run_armor_check(affecting, "melee")
|
||||
var/armor_soak = target.get_armor_soak(affecting, "melee")
|
||||
|
||||
if(HULK in user.mutations)
|
||||
damage += 5
|
||||
|
||||
playsound(target.loc, "punch", 25, 1, -1)
|
||||
|
||||
target.visible_message("<font color='red'><B>[user] has punched [target]!</B></font>")
|
||||
|
||||
if(armor_soak >= damage)
|
||||
return TRUE
|
||||
|
||||
target.apply_damage(damage, HALLOSS, affecting, armor_block, armor_soak)
|
||||
if(damage >= 9)
|
||||
target.visible_message("<font color='red'><B>[user] has weakened [target]!</B></font>")
|
||||
target.apply_effect(4, WEAKEN, armor_block)
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/structure/window/reinforced/holowindow/attackby(obj/item/W as obj, mob/user as mob)
|
||||
if(!istype(W))
|
||||
@@ -262,8 +294,8 @@
|
||||
spark_system.set_up(5, 0, user.loc)
|
||||
spark_system.start()
|
||||
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/holo/esword/New()
|
||||
item_color = pick("red","blue","green","purple")
|
||||
|
||||
@@ -438,7 +438,7 @@ var/list/name_to_material
|
||||
// Very rare alloy that is reflective, should be used sparingly.
|
||||
/material/durasteel
|
||||
name = "durasteel"
|
||||
stack_type = /obj/item/stack/material/durasteel
|
||||
stack_type = /obj/item/stack/material/durasteel/hull
|
||||
integrity = 600
|
||||
melting_point = 7000
|
||||
icon_base = "metal"
|
||||
@@ -460,6 +460,9 @@ var/list/name_to_material
|
||||
explosion_resistance = 90
|
||||
reflectivity = 0.9
|
||||
|
||||
/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets.
|
||||
new /obj/item/stack/material/durasteel(target)
|
||||
|
||||
/material/plasteel/titanium
|
||||
name = MAT_TITANIUM
|
||||
stack_type = /obj/item/stack/material/titanium
|
||||
@@ -475,6 +478,9 @@ var/list/name_to_material
|
||||
icon_base = "hull"
|
||||
icon_reinf = "reinf_mesh"
|
||||
|
||||
/material/plasteel/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets.
|
||||
new /obj/item/stack/material/titanium(target)
|
||||
|
||||
/material/glass
|
||||
name = "glass"
|
||||
stack_type = /obj/item/stack/material/glass
|
||||
|
||||
@@ -591,9 +591,9 @@ turf/simulated/mineral/floor/light_corner
|
||||
if(is_clean)
|
||||
X = new /obj/item/weapon/archaeological_find(src, new_item_type = F.find_type)
|
||||
else
|
||||
X = new /obj/item/weapon/ore/strangerock(src, inside_item_type = F.find_type)
|
||||
X = new /obj/item/weapon/strangerock(src, inside_item_type = F.find_type)
|
||||
geologic_data.UpdateNearbyArtifactInfo(src)
|
||||
var/obj/item/weapon/ore/strangerock/SR = X
|
||||
var/obj/item/weapon/strangerock/SR = X
|
||||
SR.geologic_data = geologic_data
|
||||
|
||||
//some find types delete the /obj/item/weapon/archaeological_find and replace it with something else, this handles when that happens
|
||||
|
||||
@@ -8,6 +8,14 @@
|
||||
return soft_type
|
||||
return src.default_attack
|
||||
// VOREStation Edit - End
|
||||
if(src.gloves)
|
||||
var/obj/item/clothing/gloves/G = src.gloves
|
||||
if(istype(G) && G.special_attack && G.special_attack.is_usable(src, target, hit_zone))
|
||||
if(pulling_punches)
|
||||
var/datum/unarmed_attack/soft_type = G.special_attack.get_sparring_variant()
|
||||
if(soft_type)
|
||||
return soft_type
|
||||
return G.special_attack
|
||||
for(var/datum/unarmed_attack/u_attack in species.unarmed_attacks)
|
||||
if(u_attack.is_usable(src, target, hit_zone))
|
||||
if(pulling_punches)
|
||||
@@ -41,39 +49,11 @@
|
||||
H.do_attack_animation(src)
|
||||
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("<font color='red'><B>[H] reaches for [src], but misses!</B></font>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(H != src && check_shields(0, null, H, H.zone_sel.selecting, H.name))
|
||||
H.do_attack_animation(src)
|
||||
return 0
|
||||
|
||||
if(istype(H.gloves, /obj/item/clothing/gloves/boxing/hologlove))
|
||||
H.do_attack_animation(src)
|
||||
var/damage = rand(0, 9)
|
||||
if(!damage)
|
||||
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
|
||||
visible_message("<font color='red'><B>[H] has attempted to punch [src]!</B></font>")
|
||||
return 0
|
||||
var/obj/item/organ/external/affecting = get_organ(ran_zone(H.zone_sel.selecting))
|
||||
var/armor_block = run_armor_check(affecting, "melee")
|
||||
var/armor_soak = get_armor_soak(affecting, "melee")
|
||||
|
||||
if(HULK in H.mutations)
|
||||
damage += 5
|
||||
|
||||
playsound(loc, "punch", 25, 1, -1)
|
||||
|
||||
visible_message("<font color='red'><B>[H] has punched [src]!</B></font>")
|
||||
|
||||
if(armor_soak >= damage)
|
||||
return
|
||||
|
||||
apply_damage(damage, HALLOSS, affecting, armor_block, armor_soak)
|
||||
if(damage >= 9)
|
||||
visible_message("<font color='red'><B>[H] has weakened [src]!</B></font>")
|
||||
apply_effect(4, WEAKEN, armor_block)
|
||||
|
||||
return
|
||||
return FALSE
|
||||
|
||||
if(istype(M,/mob/living/carbon))
|
||||
var/mob/living/carbon/C = M
|
||||
@@ -122,7 +102,7 @@
|
||||
|
||||
else if(!(M == src && apply_pressure(M, M.zone_sel.selecting)))
|
||||
help_shake_act(M)
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
if(I_GRAB)
|
||||
if(M == src || anchored)
|
||||
@@ -149,7 +129,7 @@
|
||||
//VORESTATION EDIT
|
||||
visible_message("<span class='warning'>[M] has grabbed [src] [(M.zone_sel.selecting == BP_L_HAND || M.zone_sel.selecting == BP_R_HAND)? "by [(gender==FEMALE)? "her" : ((gender==MALE)? "his": "their")] hands": "passively"]!</span>")
|
||||
//VORESTATION END END
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
if(I_HURT)
|
||||
|
||||
@@ -175,7 +155,7 @@
|
||||
|
||||
if(!affecting || affecting.is_stump())
|
||||
M << "<span class='danger'>They are missing that limb!</span>"
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
switch(src.a_intent)
|
||||
if(I_HELP)
|
||||
@@ -245,7 +225,10 @@
|
||||
// See what attack they use
|
||||
var/datum/unarmed_attack/attack = H.get_unarmed_attack(src, hit_zone)
|
||||
if(!attack)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(attack.unarmed_override(H, src, hit_zone))
|
||||
return FALSE
|
||||
|
||||
H.do_attack_animation(src)
|
||||
if(!attack_message)
|
||||
@@ -258,7 +241,7 @@
|
||||
add_attack_logs(H,src,"Melee attacked with fists (miss/block)")
|
||||
|
||||
if(miss_type)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/real_damage = rand_damage
|
||||
var/hit_dam_type = attack.damage_type
|
||||
@@ -268,7 +251,7 @@
|
||||
var/obj/item/clothing/gloves/G = H.gloves
|
||||
real_damage += G.punch_force
|
||||
hit_dam_type = G.punch_damtype
|
||||
if(H.pulling_punches) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN
|
||||
if(H.pulling_punches && !attack.sharp && !attack.edge) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN, BUT YOU CAN'T "PULL" A KNIFE
|
||||
hit_dam_type = AGONY
|
||||
real_damage *= damage_multiplier
|
||||
rand_damage *= damage_multiplier
|
||||
@@ -359,7 +342,7 @@
|
||||
var/armor_soak = get_armor_soak(affecting, armor_type, armor_pen)
|
||||
apply_damage(damage, BRUTE, affecting, armor_block, armor_soak, sharp = a_sharp, edge = a_edge)
|
||||
updatehealth()
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
//Used to attack a joint through grabbing
|
||||
/mob/living/carbon/human/proc/grab_joint(var/mob/living/user, var/def_zone)
|
||||
@@ -370,43 +353,43 @@
|
||||
break
|
||||
|
||||
if(!has_grab)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!def_zone) def_zone = user.zone_sel.selecting
|
||||
var/target_zone = check_zone(def_zone)
|
||||
if(!target_zone)
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/organ/external/organ = get_organ(check_zone(target_zone))
|
||||
if(!organ || organ.dislocated > 0 || organ.dislocated == -1) //don't use is_dislocated() here, that checks parent
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
user.visible_message("<span class='warning'>[user] begins to dislocate [src]'s [organ.joint]!</span>")
|
||||
if(do_after(user, 100))
|
||||
organ.dislocate(1)
|
||||
src.visible_message("<span class='danger'>[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!</span>")
|
||||
return 1
|
||||
return 0
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
//Breaks all grips and pulls that the mob currently has.
|
||||
/mob/living/carbon/human/proc/break_all_grabs(mob/living/carbon/user)
|
||||
var/success = 0
|
||||
var/success = FALSE
|
||||
if(pulling)
|
||||
visible_message("<span class='danger'>[user] has broken [src]'s grip on [pulling]!</span>")
|
||||
success = 1
|
||||
success = TRUE
|
||||
stop_pulling()
|
||||
|
||||
if(istype(l_hand, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/lgrab = l_hand
|
||||
if(lgrab.affecting)
|
||||
visible_message("<span class='danger'>[user] has broken [src]'s grip on [lgrab.affecting]!</span>")
|
||||
success = 1
|
||||
success = TRUE
|
||||
spawn(1)
|
||||
qdel(lgrab)
|
||||
if(istype(r_hand, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/rgrab = r_hand
|
||||
if(rgrab.affecting)
|
||||
visible_message("<span class='danger'>[user] has broken [src]'s grip on [rgrab.affecting]!</span>")
|
||||
success = 1
|
||||
success = TRUE
|
||||
spawn(1)
|
||||
qdel(rgrab)
|
||||
return success
|
||||
@@ -421,11 +404,11 @@
|
||||
/mob/living/carbon/human/proc/apply_pressure(mob/living/user, var/target_zone)
|
||||
var/obj/item/organ/external/organ = get_organ(target_zone)
|
||||
if(!organ || !(organ.status & ORGAN_BLEEDING) || (organ.robotic >= ORGAN_ROBOT))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(organ.applied_pressure)
|
||||
user << "<span class='warning'>Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"].</span>"
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
|
||||
|
||||
@@ -446,4 +429,4 @@
|
||||
else
|
||||
user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!")
|
||||
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
@@ -25,18 +25,18 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/proc/is_usable(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone)
|
||||
if(user.restrained())
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
// Check if they have a functioning hand.
|
||||
var/obj/item/organ/external/E = user.organs_by_name["l_hand"]
|
||||
if(E && !E.is_stump())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
E = user.organs_by_name["r_hand"]
|
||||
if(E && !E.is_stump())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/unarmed_attack/proc/get_unarmed_damage()
|
||||
return damage
|
||||
@@ -105,6 +105,9 @@ var/global/list/sparring_attack_cache = list()
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!</span>")
|
||||
|
||||
/datum/unarmed_attack/proc/unarmed_override(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/zone)
|
||||
return FALSE //return true if the unarmed override prevents further attacks
|
||||
|
||||
/datum/unarmed_attack/bite
|
||||
attack_verb = list("bit")
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
@@ -121,7 +124,7 @@ var/global/list/sparring_attack_cache = list()
|
||||
return 0
|
||||
if (user == target && (zone == BP_HEAD || zone == O_EYES || zone == O_MOUTH))
|
||||
return 0
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
/datum/unarmed_attack/punch
|
||||
attack_verb = list("punched")
|
||||
@@ -187,20 +190,20 @@ var/global/list/sparring_attack_cache = list()
|
||||
|
||||
/datum/unarmed_attack/kick/is_usable(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone)
|
||||
if (user.legcuffed)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!(zone in list("l_leg", "r_leg", "l_foot", "r_foot", BP_GROIN)))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/obj/item/organ/external/E = user.organs_by_name["l_foot"]
|
||||
if(E && !E.is_stump())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
E = user.organs_by_name["r_foot"]
|
||||
if(E && !E.is_stump())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/unarmed_attack/kick/get_unarmed_damage(var/mob/living/carbon/human/user)
|
||||
var/obj/item/clothing/shoes = user.shoes
|
||||
@@ -231,23 +234,23 @@ var/global/list/sparring_attack_cache = list()
|
||||
/datum/unarmed_attack/stomp/is_usable(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone)
|
||||
|
||||
if (user.legcuffed)
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!istype(target))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if (!user.lying && (target.lying || (zone in list("l_foot", "r_foot"))))
|
||||
if(target.grabbed_by == user && target.lying)
|
||||
return 0
|
||||
return FALSE
|
||||
var/obj/item/organ/external/E = user.organs_by_name["l_foot"]
|
||||
if(E && !E.is_stump())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
E = user.organs_by_name["r_foot"]
|
||||
if(E && !E.is_stump())
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
/datum/unarmed_attack/stomp/get_unarmed_damage(var/mob/living/carbon/human/user)
|
||||
var/obj/item/clothing/shoes = user.shoes
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
base_attack_cooldown = 10
|
||||
projectilesound = 'sound/weapons/taser2.ogg'
|
||||
projectiletype = /obj/item/projectile/ion/small
|
||||
projectiletype = /obj/item/projectile/ion/pistol
|
||||
|
||||
melee_damage_lower = 8
|
||||
melee_damage_upper = 15
|
||||
|
||||
@@ -112,4 +112,4 @@
|
||||
/datum/say_list/mouse
|
||||
speak = list("Squeek!","SQUEEK!","Squeek?")
|
||||
emote_hear = list("squeeks","squeaks","squiks")
|
||||
emote_see = list("runs in a circle", "shakes", "scritches at something")
|
||||
emote_see = list("runs in a circle", "shakes", "scritches at something")
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/mob/living/simple_mob/animal/passive/mouse
|
||||
no_vore = 1 //Mice can't eat others due to the amount of bugs caused by it.
|
||||
vore_taste = "cheese"
|
||||
|
||||
can_pull_size = ITEMSIZE_TINY // Rykka - Uncommented these. Not sure why they were commented out in the original Polaris files, maybe a mob rework mistake?
|
||||
can_pull_mobs = MOB_PULL_NONE // Rykka - Uncommented these. Not sure why they were commented out in the original Polaris files, maybe a mob rework mistake?
|
||||
|
||||
desc = "A small rodent, often seen hiding in maintenance areas and making a nuisance of itself. And stealing cheese, or annoying the chef. SQUEAK! <3"
|
||||
|
||||
/mob/living/simple_mob/animal/passive/mouse/attack_hand(mob/living/hander)
|
||||
if(hander.a_intent == I_HELP) //if lime intent
|
||||
get_scooped(hander) //get scooped
|
||||
|
||||
/obj/item/weapon/holder/mouse/attack_self(var/mob/U)
|
||||
for(var/mob/living/simple_mob/M in src.contents)
|
||||
if((I_HELP) && U.canClick()) //a little snowflakey, but makes it use the same cooldown as interacting with non-inventory objects
|
||||
U.setClickCooldown(U.get_attack_speed()) //if there's a cleaner way in baycode, I'll change this
|
||||
U.visible_message("<span class='notice'>[U] [M.response_help] \the [M].</span>")
|
||||
@@ -18,6 +18,7 @@
|
||||
see_in_dark = 5
|
||||
mob_size = MOB_TINY
|
||||
makes_dirt = FALSE // No more dirt
|
||||
mob_bump_flag = 0
|
||||
|
||||
response_help = "scritches"
|
||||
response_disarm = "bops"
|
||||
|
||||
@@ -411,7 +411,7 @@
|
||||
/obj/random/bomb_supply = 7,
|
||||
/obj/random/contraband = 3,
|
||||
/obj/random/unidentified_medicine/old_medicine = 7,
|
||||
/obj/item/weapon/ore/strangerock = 3,
|
||||
/obj/item/weapon/strangerock = 3,
|
||||
/obj/item/weapon/ore/phoron = 7,
|
||||
/obj/random/handgun = 1,
|
||||
/obj/random/toolbox = 4,
|
||||
|
||||
@@ -0,0 +1,171 @@
|
||||
#define MORPH_COOLDOWN 50
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph
|
||||
name = "morph"
|
||||
real_name = "morph"
|
||||
desc = "A revolting, pulsating pile of flesh."
|
||||
tt_desc = "morphus shapeshiftus"
|
||||
icon = 'icons/mob/animal_vr.dmi'
|
||||
icon_state = "morph"
|
||||
icon_living = "morph"
|
||||
icon_dead = "morph_dead"
|
||||
movement_cooldown = 1
|
||||
status_flags = CANPUSH
|
||||
pass_flags = PASSTABLE
|
||||
mob_bump_flag = 0
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
min_tox = 0
|
||||
max_tox = 0
|
||||
min_co2 = 0
|
||||
max_co2 = 0
|
||||
min_n2 = 0
|
||||
max_n2 = 0
|
||||
|
||||
minbodytemp = 0
|
||||
maxHealth = 150
|
||||
health = 150
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 20
|
||||
see_in_dark = 8
|
||||
attacktext = "glomps"
|
||||
attack_sound = 'sound/effects/blobattack.ogg'
|
||||
|
||||
meat_amount = 2
|
||||
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
|
||||
|
||||
showvoreprefs = 0
|
||||
vore_active = 1
|
||||
|
||||
var/morphed = FALSE
|
||||
var/tooltip = TRUE
|
||||
var/melee_damage_disguised = 0
|
||||
var/eat_while_disguised = FALSE
|
||||
var/atom/movable/form = null
|
||||
var/morph_time = 0
|
||||
var/our_size_multiplier = 1
|
||||
var/static/list/blacklist_typecache = typecacheof(list(
|
||||
/obj/screen,
|
||||
/obj/singularity,
|
||||
/mob/living/simple_mob/vore/hostile/morph,
|
||||
/obj/effect))
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/Initialize()
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/proc/allowed(atom/movable/A)
|
||||
return !is_type_in_typecache(A, blacklist_typecache) && (isobj(A) || ismob(A))
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/examine(mob/user)
|
||||
if(morphed)
|
||||
form.examine(user)
|
||||
if(get_dist(user,src)<=3)
|
||||
to_chat(user, "<span class='warning'>It doesn't look quite right...</span>")
|
||||
else
|
||||
..()
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/ShiftClickOn(atom/movable/A)
|
||||
if(Adjacent(A))
|
||||
if(morph_time <= world.time && !stat)
|
||||
if(A == src)
|
||||
restore()
|
||||
return
|
||||
if(istype(A) && allowed(A))
|
||||
assume(A)
|
||||
else
|
||||
to_chat(src, "<span class='warning'>Your chameleon skin is still repairing itself!</span>")
|
||||
else
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/proc/assume(atom/movable/target)
|
||||
if(morphed)
|
||||
to_chat(src, "<span class='warning'>You must restore to your original form first!</span>")
|
||||
return
|
||||
morphed = TRUE
|
||||
form = target
|
||||
|
||||
visible_message("<span class='warning'>[src] suddenly twists and changes shape, becoming a copy of [target]!</span>")
|
||||
appearance = target.appearance
|
||||
copy_overlays(target)
|
||||
alpha = max(alpha, 150) //fucking chameleons
|
||||
transform = initial(transform)
|
||||
our_size_multiplier = size_multiplier
|
||||
if(isobj(target))
|
||||
size_multiplier = 1
|
||||
icon_scale_x = target.icon_scale_x
|
||||
icon_scale_y = target.icon_scale_y
|
||||
update_transform()
|
||||
else if(ismob(target))
|
||||
var/mob/living/M = target
|
||||
resize(M.size_multiplier)
|
||||
pixel_y = initial(pixel_y)
|
||||
pixel_x = initial(pixel_x)
|
||||
density = target.density
|
||||
|
||||
//Morphed is weaker
|
||||
melee_damage_lower = melee_damage_disguised
|
||||
melee_damage_upper = melee_damage_disguised
|
||||
movement_cooldown = 5
|
||||
|
||||
morph_time = world.time + MORPH_COOLDOWN
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/proc/restore()
|
||||
if(!morphed)
|
||||
to_chat(src, "<span class='warning'>You're already in your normal form!</span>")
|
||||
return
|
||||
morphed = FALSE
|
||||
form = null
|
||||
alpha = initial(alpha)
|
||||
color = initial(color)
|
||||
layer = initial(layer)
|
||||
plane = initial(plane)
|
||||
maptext = null
|
||||
|
||||
visible_message("<span class='warning'>[src] suddenly collapses in on itself, dissolving into a pile of green flesh!</span>")
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
icon = initial(icon)
|
||||
icon_state = initial(icon_state)
|
||||
size_multiplier = 0
|
||||
resize(our_size_multiplier)
|
||||
overlays.Cut()
|
||||
density = initial(density)
|
||||
|
||||
//Baseline stats
|
||||
melee_damage_lower = initial(melee_damage_lower)
|
||||
melee_damage_upper = initial(melee_damage_upper)
|
||||
movement_cooldown = initial(movement_cooldown)
|
||||
|
||||
morph_time = world.time + MORPH_COOLDOWN
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/death(gibbed)
|
||||
if(morphed)
|
||||
visible_message("<span class='warning'>[src] twists and dissolves into a pile of green flesh!</span>")
|
||||
restore()
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/will_show_tooltip()
|
||||
return (!morphed)
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/resize(var/new_size, var/animate = TRUE)
|
||||
if(morphed && !ismob(form))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/update_icons()
|
||||
if(morphed)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/vore/hostile/morph/update_transform()
|
||||
if(morphed)
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(icon_scale_x, icon_scale_y)
|
||||
M.Turn(icon_rotation)
|
||||
src.transform = M
|
||||
else
|
||||
..()
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
if(href_list["observe"])
|
||||
|
||||
if(alert(src,"Are you sure you wish to observe? You will have to wait 5 minute before being able to respawn!","Player Setup","Yes","No") == "Yes") //Vorestation edit
|
||||
if(alert(src,"Are you sure you wish to observe? You will have to wait 60 seconds before being able to respawn!","Player Setup","Yes","No") == "Yes") //Vorestation edit - Rykka corrected to 60 seconds to match current spawn time
|
||||
if(!client) return 1
|
||||
|
||||
//Make a new mannequin quickly, and allow the observer to take the appearance
|
||||
|
||||
@@ -148,6 +148,24 @@
|
||||
if(!istype(T, /turf/space))
|
||||
new /obj/effect/decal/cleanable/flour(T)
|
||||
|
||||
/datum/reagent/nutriment/coffee
|
||||
name = "Coffee Powder"
|
||||
id = "coffeepowder"
|
||||
description = "A bitter powder made by grinding coffee beans."
|
||||
taste_description = "bitterness"
|
||||
taste_mult = 1.3
|
||||
nutriment_factor = 1
|
||||
color = "#482000"
|
||||
|
||||
/datum/reagent/nutriment/tea
|
||||
name = "Tea Powder"
|
||||
id = "teapowder"
|
||||
description = "A dark, tart powder made from black tea leaves."
|
||||
taste_description = "tartness"
|
||||
taste_mult = 1.3
|
||||
nutriment_factor = 1
|
||||
color = "#101000"
|
||||
|
||||
/datum/reagent/nutriment/coco
|
||||
name = "Coco Powder"
|
||||
id = "coco"
|
||||
@@ -158,6 +176,41 @@
|
||||
nutriment_factor = 5
|
||||
color = "#302000"
|
||||
|
||||
/datum/reagent/nutriment/instantjuice
|
||||
name = "Juice Powder"
|
||||
id = "instantjuice"
|
||||
description = "Dehydrated, powdered juice of some kind."
|
||||
taste_mult = 1.3
|
||||
nutriment_factor = 1
|
||||
|
||||
/datum/reagent/nutriment/instantjuice/grape
|
||||
name = "Grape Juice Powder"
|
||||
id = "instantgrape"
|
||||
description = "Dehydrated, powdered grape juice."
|
||||
taste_description = "dry grapes"
|
||||
color = "#863333"
|
||||
|
||||
/datum/reagent/nutriment/instantjuice/orange
|
||||
name = "Orange Juice Powder"
|
||||
id = "instantorange"
|
||||
description = "Dehydrated, powdered orange juice."
|
||||
taste_description = "dry oranges"
|
||||
color = "#e78108"
|
||||
|
||||
/datum/reagent/nutriment/instantjuice/watermelon
|
||||
name = "Watermelon Juice Powder"
|
||||
id = "instantwatermelon"
|
||||
description = "Dehydrated, powdered watermelon juice."
|
||||
taste_description = "dry sweet watermelon"
|
||||
color = "#b83333"
|
||||
|
||||
/datum/reagent/nutriment/instantjuice/apple
|
||||
name = "Apple Juice Powder"
|
||||
id = "instantapple"
|
||||
description = "Dehydrated, powdered apple juice."
|
||||
taste_description = "dry sweet apples"
|
||||
color = "#c07c40"
|
||||
|
||||
/datum/reagent/nutriment/soysauce
|
||||
name = "Soysauce"
|
||||
id = "soysauce"
|
||||
|
||||
@@ -1200,6 +1200,20 @@
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/drinks/coffee
|
||||
name = "Coffee"
|
||||
id = "coffee"
|
||||
result = "coffee"
|
||||
required_reagents = list("water" = 5, "coffeepowder" = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/drinks/tea
|
||||
name = "Black tea"
|
||||
id = "tea"
|
||||
result = "tea"
|
||||
required_reagents = list("water" = 5, "teapowder" = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/drinks/hot_coco
|
||||
name = "Hot Coco"
|
||||
id = "hot_coco"
|
||||
@@ -1214,6 +1228,34 @@
|
||||
required_reagents = list("soymilk" = 4, "sacid" = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/drinks/grapejuice
|
||||
name = "Grape Juice"
|
||||
id = "grapejuice"
|
||||
result = "grapejuice"
|
||||
required_reagents = list("water" = 3, "instantgrape" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/drinks/orangejuice
|
||||
name = "Orange Juice"
|
||||
id = "orangejuice"
|
||||
result = "orangejuice"
|
||||
required_reagents = list("water" = 3, "instantorange" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/drinks/watermelonjuice
|
||||
name = "Watermelon Juice"
|
||||
id = "watermelonjuice"
|
||||
result = "watermelonjuice"
|
||||
required_reagents = list("water" = 3, "instantwatermelon" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/drinks/applejuice
|
||||
name = "Apple Juice"
|
||||
id = "applejuice"
|
||||
result = "applejuice"
|
||||
required_reagents = list("water" = 3, "instantapple" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/food/ketchup
|
||||
name = "Ketchup"
|
||||
id = "ketchup"
|
||||
|
||||
@@ -1244,7 +1244,8 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_ILLEGAL = 7)
|
||||
|
||||
var/obj/item/weapon/cell/device/weapon/power_source
|
||||
var/cell_type = /obj/item/weapon/cell/device/weapon
|
||||
var/obj/item/weapon/cell/power_source
|
||||
var/charge_cost = 800 // cell/device/weapon has 2400
|
||||
|
||||
var/list/beacons = list()
|
||||
@@ -1259,7 +1260,10 @@
|
||||
/obj/item/device/perfect_tele/New()
|
||||
..()
|
||||
flags |= NOBLUDGEON
|
||||
power_source = new (src)
|
||||
if(cell_type)
|
||||
power_source = new cell_type(src)
|
||||
else
|
||||
power_source = new /obj/item/weapon/cell/device(src)
|
||||
spk = new(src)
|
||||
spk.set_up(5, 0, src)
|
||||
spk.attach(src)
|
||||
@@ -1276,7 +1280,7 @@
|
||||
/obj/item/device/perfect_tele/update_icon()
|
||||
if(!power_source)
|
||||
icon_state = "[initial(icon_state)]_o"
|
||||
else if(ready && power_source.check_charge(charge_cost))
|
||||
else if(ready && (power_source.check_charge(charge_cost) || power_source.fully_charged()))
|
||||
icon_state = "[initial(icon_state)]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]_w"
|
||||
@@ -1338,7 +1342,7 @@
|
||||
return
|
||||
|
||||
/obj/item/device/perfect_tele/attackby(obj/W, mob/user)
|
||||
if(istype(W,/obj/item/weapon/cell/device/weapon) && !power_source)
|
||||
if(istype(W,cell_type) && !power_source)
|
||||
power_source = W
|
||||
power_source.update_icon() //Why doesn't a cell do this already? :|
|
||||
user.unEquip(power_source)
|
||||
@@ -1367,7 +1371,7 @@
|
||||
return FALSE
|
||||
|
||||
//Check for charge
|
||||
if(!power_source.check_charge(charge_cost))
|
||||
if((!power_source.check_charge(charge_cost)) && (!power_source.fully_charged()))
|
||||
to_chat(user,"<span class='warning'>\The [src] does not have enough power left!</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -1398,10 +1402,13 @@
|
||||
//No, you can't port to or from away missions. Stupidly complicated check.
|
||||
var/turf/uT = get_turf(user)
|
||||
var/turf/dT = get_turf(destination)
|
||||
var/list/dat = list()
|
||||
dat["z_level_detection"] = using_map.get_map_levels(uT.z)
|
||||
|
||||
if(!uT || !dT)
|
||||
return FALSE
|
||||
|
||||
if( (uT.z != dT.z) && ( (uT.z > max_default_z_level() ) || (dT.z > max_default_z_level()) ) )
|
||||
if( (uT.z != dT.z) && (!(dT.z in dat["z_level_detection"])) )
|
||||
to_chat(user,"<span class='warning'>\The [src] can't teleport you that far!</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -1562,14 +1569,17 @@
|
||||
desc = "A more limited translocator with a single beacon, useful for some things, like setting the mining department on fire accidentally. Legal for use in the pursuit of NanoTrasen interests, namely mining and exploration."
|
||||
icon_state = "minitrans"
|
||||
beacons_left = 1 //Just one
|
||||
charge_cost = 2400 //One per
|
||||
cell_type = /obj/item/weapon/cell/device
|
||||
origin_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5)
|
||||
|
||||
/*
|
||||
/obj/item/device/perfect_tele/one_beacon/teleport_checks(mob/living/target,mob/living/user)
|
||||
var/turf/T = get_turf(destination)
|
||||
if(T && user.z != T.z)
|
||||
to_chat(user,"<span class='warning'>\The [src] is too far away from the beacon. Try getting closer first!</span>")
|
||||
return FALSE
|
||||
return ..()
|
||||
*/
|
||||
|
||||
//InterroLouis: Ruda Lizden
|
||||
/obj/item/clothing/accessory/badge/holo/detective/ruda
|
||||
@@ -2008,7 +2018,7 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask/fluff/viktor/Initialize()
|
||||
..()
|
||||
reagents.add_reagent("pwine", 60)
|
||||
|
||||
|
||||
//RadiantAurora: Tiemli Kroto
|
||||
/obj/item/clothing/glasses/welding/tiemgogs
|
||||
name = "custom-fitted welding goggles"
|
||||
|
||||
@@ -14,20 +14,22 @@
|
||||
clearance_range = rand(4, 12)
|
||||
dissonance_spread = rand(1500, 2500) / 100
|
||||
|
||||
/obj/item/weapon/ore/strangerock
|
||||
/obj/item/weapon/strangerock
|
||||
name = "Strange rock"
|
||||
desc = "Seems to have some unusal strata evident throughout it."
|
||||
icon = 'icons/obj/xenoarchaeology.dmi'
|
||||
icon_state = "strange"
|
||||
var/datum/geosample/geologic_data
|
||||
origin_tech = list(TECH_MATERIAL = 5)
|
||||
|
||||
/obj/item/weapon/ore/strangerock/New(loc, var/inside_item_type = 0)
|
||||
..(loc)
|
||||
/obj/item/weapon/strangerock/New(loc, var/inside_item_type = 0)
|
||||
pixel_x = rand(0,16)-8
|
||||
pixel_y = rand(0,8)-8
|
||||
|
||||
if(inside_item_type)
|
||||
new /obj/item/weapon/archaeological_find(src, new_item_type = inside_item_type)
|
||||
|
||||
/obj/item/weapon/ore/strangerock/attackby(var/obj/item/I, var/mob/user)
|
||||
/obj/item/weapon/strangerock/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/pickaxe/brush))
|
||||
var/obj/item/inside = locate() in src
|
||||
if(inside)
|
||||
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 347 B |
@@ -61,7 +61,8 @@
|
||||
/obj/item/taperoll/medical,
|
||||
/obj/item/device/gps/medical,
|
||||
/obj/item/device/geiger,
|
||||
/obj/item/bodybag/cryobag)
|
||||
/obj/item/bodybag/cryobag,
|
||||
/obj/item/device/cataloguer/compact)
|
||||
|
||||
/obj/structure/closet/secure_closet/pilot
|
||||
starts_with = list(
|
||||
@@ -83,7 +84,8 @@
|
||||
/obj/item/weapon/storage/box/flare,
|
||||
/obj/item/weapon/cell/device,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/device/gps/explorer)
|
||||
/obj/item/device/gps/explorer,
|
||||
/obj/item/device/cataloguer/compact)
|
||||
|
||||
/obj/structure/closet/secure_closet/pathfinder
|
||||
name = "pathfinder locker"
|
||||
@@ -118,7 +120,7 @@
|
||||
/obj/item/clothing/accessory/holster/machete,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/device/cataloguer)
|
||||
/obj/item/device/cataloguer/compact/pathfinder)
|
||||
|
||||
/obj/structure/closet/secure_closet/pathfinder/Initialize()
|
||||
if(prob(50))
|
||||
|
||||
@@ -4676,8 +4676,6 @@
|
||||
/area/tether/surfacebase/north_stairs_one)
|
||||
"aib" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/weapon/storage/fancy/vials,
|
||||
/obj/item/device/reagent_scanner,
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/on{
|
||||
dir = 4
|
||||
},
|
||||
@@ -4690,6 +4688,7 @@
|
||||
/obj/effect/floor_decal/corner/mauve/border{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/portable_atmospherics/powered/reagent_distillery,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/rnd/chemistry_lab)
|
||||
"aic" = (
|
||||
@@ -4900,8 +4899,6 @@
|
||||
/area/tether/surfacebase/atrium_one)
|
||||
"aip" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/weapon/storage/box/beakers,
|
||||
/obj/item/clothing/glasses/science,
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||
dir = 4
|
||||
},
|
||||
@@ -4911,6 +4908,9 @@
|
||||
/obj/effect/floor_decal/corner/mauve/border{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/weapon/storage/fancy/vials,
|
||||
/obj/item/weapon/storage/box/beakers,
|
||||
/obj/item/clothing/glasses/science,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/rnd/chemistry_lab)
|
||||
"aiq" = (
|
||||
@@ -5091,14 +5091,15 @@
|
||||
/area/rnd/chemistry_lab)
|
||||
"aiJ" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/weapon/storage/box/syringes,
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner,
|
||||
/obj/effect/floor_decal/borderfloor{
|
||||
dir = 10
|
||||
},
|
||||
/obj/effect/floor_decal/corner/mauve/border{
|
||||
dir = 10
|
||||
},
|
||||
/obj/item/weapon/storage/box/syringes,
|
||||
/obj/item/device/reagent_scanner,
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner,
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/rnd/chemistry_lab)
|
||||
"aiK" = (
|
||||
|
||||
@@ -22222,9 +22222,6 @@
|
||||
/obj/machinery/portable_atmospherics/canister/oxygen,
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/engineering/engine_eva)
|
||||
"cbM" = (
|
||||
/turf/simulated/mineral/vacuum,
|
||||
/area/space)
|
||||
"cbY" = (
|
||||
/obj/machinery/atmospherics/unary/vent_pump/on{
|
||||
dir = 4
|
||||
@@ -26857,8 +26854,8 @@ aac
|
||||
aac
|
||||
aac
|
||||
aac
|
||||
cbM
|
||||
cbM
|
||||
aac
|
||||
aac
|
||||
ayp
|
||||
ayp
|
||||
ayp
|
||||
|
||||
@@ -7210,9 +7210,9 @@
|
||||
/area/tether/exploration/hallway)
|
||||
"kC" = (
|
||||
/obj/item/weapon/material/twohanded/spear/foam,
|
||||
/obj/item/weapon/storage/fancy/crayons{
|
||||
/obj/item/weapon/storage/mre/menu12{
|
||||
desc = "Special food for special warriors of the expedition force.";
|
||||
name = "spearman ration"
|
||||
name = "spearman MRE"
|
||||
},
|
||||
/turf/simulated/floor,
|
||||
/area/tether/exploration/hallway)
|
||||
|
||||
@@ -28961,10 +28961,8 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/structure/closet/crate/freezer/rations,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/obj/item/weapon/storage/mre/menu10,
|
||||
/turf/simulated/floor/tiled/techfloor/grid,
|
||||
/area/shuttle/excursion/tether)
|
||||
"Vi" = (
|
||||
|
||||
@@ -414,18 +414,12 @@
|
||||
/area/centcom/specops)
|
||||
"aI" = (
|
||||
/obj/structure/closet/crate/medical,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/obj/item/weapon/storage/mre/menu11,
|
||||
/turf/unsimulated/floor{
|
||||
icon_state = "vault";
|
||||
dir = 5
|
||||
@@ -471,6 +465,7 @@
|
||||
/obj/item/bodybag/cryobag,
|
||||
/obj/item/bodybag/cryobag,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/large,
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/large,
|
||||
/turf/unsimulated/floor{
|
||||
icon_state = "vault";
|
||||
dir = 5
|
||||
|
||||
@@ -1173,6 +1173,7 @@
|
||||
#include "code\game\objects\items\weapons\storage\laundry_basket.dm"
|
||||
#include "code\game\objects\items\weapons\storage\lockbox.dm"
|
||||
#include "code\game\objects\items\weapons\storage\misc.dm"
|
||||
#include "code\game\objects\items\weapons\storage\mre.dm"
|
||||
#include "code\game\objects\items\weapons\storage\quickdraw.dm"
|
||||
#include "code\game\objects\items\weapons\storage\secure.dm"
|
||||
#include "code\game\objects\items\weapons\storage\storage.dm"
|
||||
@@ -1535,6 +1536,7 @@
|
||||
#include "code\modules\catalogue\catalogue_data_vr.dm"
|
||||
#include "code\modules\catalogue\cataloguer.dm"
|
||||
#include "code\modules\catalogue\cataloguer_visuals.dm"
|
||||
#include "code\modules\catalogue\cataloguer_vr.dm"
|
||||
#include "code\modules\client\client defines.dm"
|
||||
#include "code\modules\client\client procs.dm"
|
||||
#include "code\modules\client\movement.dm"
|
||||
@@ -2385,6 +2387,7 @@
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\lizard.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\misc.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse_vr.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\bird.dm"
|
||||
@@ -2489,6 +2492,7 @@
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\wolf.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\wolfgirl.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\zz_vore_overrides.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\morph\morph.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\_defines.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\ability_objects.dm"
|
||||
#include "code\modules\mob\living\simple_mob\subtypes\vore\shadekin\ability_procs.dm"
|
||||
|
||||