Merge branch 'master' into upstream-merge-11471
@@ -42,3 +42,7 @@
|
||||
//Ouch my toes!
|
||||
#define CALTROP_BYPASS_SHOES 1
|
||||
#define CALTROP_IGNORE_WALKERS 2
|
||||
|
||||
// Conflict element IDs
|
||||
#define CONFLICT_ELEMENT_CRUSHER "crusher"
|
||||
#define CONFLICT_ELEMENT_KA "kinetic_accelerator"
|
||||
@@ -772,3 +772,9 @@
|
||||
#define COMPONENT_BLOCK_LIGHT_EATER (1<<0)
|
||||
///from base of [/datum/element/light_eater/proc/devour]: (atom/eaten_light)
|
||||
#define COMSIG_LIGHT_EATER_DEVOUR "light_eater_devour"
|
||||
|
||||
// conflict checking elements
|
||||
/// (id) - returns flags - Registered on something by conflict checking elements.
|
||||
#define COMSIG_CONFLICT_ELEMENT_CHECK "conflict_element_check"
|
||||
/// A conflict was found
|
||||
#define ELEMENT_CONFLICT_FOUND (1<<0)
|
||||
|
||||
@@ -58,5 +58,6 @@
|
||||
//#define isturf(D) istype(D, /turf) //Built in
|
||||
#define isopenspace(A) istype(A, /turf/simulated/open)
|
||||
#define isspace(A) istype(A, /turf/space)
|
||||
#define ismineralturf(A) istype(A, /turf/simulated/mineral)
|
||||
|
||||
#define istaurtail(A) istype(A, /datum/sprite_accessory/tail/taur)
|
||||
|
||||
@@ -172,7 +172,7 @@ var/syndicate_code_response//Code response for traitors.
|
||||
|
||||
var/safety[] = list(1,2,3)//Tells the proc which options to remove later on.
|
||||
var/nouns[] = list("love","hate","anger","peace","pride","sympathy","bravery","loyalty","honesty","integrity","compassion","charity","success","courage","deceit","skill","beauty","brilliance","pain","misery","beliefs","dreams","justice","truth","faith","liberty","knowledge","thought","information","culture","trust","dedication","progress","education","hospitality","leisure","trouble","friendships", "relaxation")
|
||||
var/drinks[] = list("vodka and tonic","gin fizz","bahama mama","manhattan","black Russian","whiskey soda","long island tea","margarita","Irish coffee"," manly dwarf","Irish cream","doctor's delight","Beepksy Smash","tequilla sunrise","brave bull","gargle blaster","bloody mary","whiskey cola","white Russian","vodka martini","martini","Cuba libre","kahlua","vodka","wine","moonshine")
|
||||
var/drinks[] = list("vodka and tonic","gin fizz","bahama mama","manhattan","black Russian","whiskey soda","long island tea","margarita","Irish coffee"," manly dwarf","Irish cream","doctor's delight","Beepksy Smash","tequilla sunrise","brave bull","gargle blaster","bloody mary","whiskey cola","white Russian","vodka martini","martini","Cuba libre","kahlua","vodka","redwine","moonshine")
|
||||
var/locations[] = teleportlocs.len ? teleportlocs : drinks//if null, defaults to drinks instead.
|
||||
|
||||
var/names[] = list()
|
||||
|
||||
35
code/datums/elements/conflict_checking.dm
Normal file
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* Simple conflict checking for getting number of conflicting things on someone with the same ID.
|
||||
*/
|
||||
/datum/element/conflict_checking
|
||||
element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH
|
||||
id_arg_index = 1
|
||||
/// we don't need to KNOW who has us, only our ID.
|
||||
var/id
|
||||
|
||||
/datum/element/conflict_checking/Attach(datum/target, id)
|
||||
. = ..()
|
||||
if(. & ELEMENT_INCOMPATIBLE)
|
||||
return
|
||||
if(!isatom(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
if(!length(id))
|
||||
. = ELEMENT_INCOMPATIBLE
|
||||
CRASH("Invalid ID in conflict checking element.")
|
||||
if(isnull(src.id))
|
||||
src.id = id
|
||||
RegisterSignal(target, COMSIG_CONFLICT_ELEMENT_CHECK, .proc/check)
|
||||
|
||||
/datum/element/conflict_checking/proc/check(datum/source, id_to_check)
|
||||
if(id == id_to_check)
|
||||
return ELEMENT_CONFLICT_FOUND
|
||||
|
||||
/**
|
||||
* Counts number of conflicts on something that have a conflict checking element.
|
||||
*/
|
||||
/atom/proc/ConflictElementCount(id)
|
||||
. = 0
|
||||
for(var/i in GetAllContents())
|
||||
var/atom/movable/AM = i
|
||||
if(SEND_SIGNAL(AM, COMSIG_CONFLICT_ELEMENT_CHECK, id) & ELEMENT_CONFLICT_FOUND)
|
||||
++.
|
||||
@@ -223,6 +223,8 @@
|
||||
size = "bulky"
|
||||
if(ITEMSIZE_HUGE)
|
||||
size = "huge"
|
||||
if(ITEMSIZE_NO_CONTAINER)
|
||||
size = "massive"
|
||||
return ..(user, "", "It is a [size] item.")
|
||||
|
||||
/obj/item/attack_hand(mob/living/user as mob)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
if(istype(W, /obj/item/weapon/material))
|
||||
if(istype(W, /obj/item/weapon/material/sharpeningkit))
|
||||
to_chat(user, "Really? Sharpening a [W] with [src]? You goofball.")
|
||||
to_chat(user, "As much as you'd like to sharpen [W] with [src], the logistics just don't work out.")
|
||||
return
|
||||
var/obj/item/weapon/material/M = W
|
||||
if(uses >= M.w_class*2)
|
||||
@@ -71,7 +71,7 @@
|
||||
uses -= M.w_class*2
|
||||
return
|
||||
else
|
||||
to_chat(user, "Not enough material to sharpen [M]. You need [M.w_class*2] [M.material.sheet_plural_name].")
|
||||
to_chat(user, "There's not enough spare sheets to sharpen [M]. You need [M.w_class*2] [M.material.sheet_plural_name].")
|
||||
return
|
||||
else
|
||||
to_chat(user, "You can't sharpen [W] with [src]!")
|
||||
|
||||
@@ -48,7 +48,8 @@
|
||||
/obj/item/device/ano_scanner,
|
||||
/obj/item/device/cataloguer,
|
||||
/obj/item/device/radio,
|
||||
/obj/item/device/mapping_unit
|
||||
/obj/item/device/mapping_unit,
|
||||
/obj/item/weapon/kinetic_crusher
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/explorer/pathfinder
|
||||
|
||||
@@ -40,6 +40,10 @@
|
||||
display_name = "collar, pink"
|
||||
path = /obj/item/clothing/accessory/collar/pink
|
||||
|
||||
/datum/gear/collar/cowbell
|
||||
display_name = "collar, cowbell"
|
||||
path = /obj/item/clothing/accessory/collar/cowbell
|
||||
|
||||
/datum/gear/collar/holo
|
||||
display_name = "collar, holo"
|
||||
path = /obj/item/clothing/accessory/collar/holo
|
||||
|
||||
@@ -616,3 +616,8 @@
|
||||
/datum/gear/suit/miscellaneous/cardigan/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
/datum/gear/suit/cmddressjacket
|
||||
display_name = "command dress jacket"
|
||||
path = /obj/item/clothing/suit/storage/cmddressjacket
|
||||
allowed_roles = list("Site Manager", "Head of Personnel", "Command Secretary")
|
||||
@@ -649,3 +649,35 @@
|
||||
/datum/gear/uniform/countess
|
||||
display_name = "countess dress"
|
||||
path = /obj/item/clothing/under/dress/countess
|
||||
|
||||
/datum/gear/uniform/verglasdress
|
||||
display_name = "verglas dress"
|
||||
path = /obj/item/clothing/under/verglasdress
|
||||
|
||||
/datum/gear/uniform/fashionminiskirt
|
||||
display_name = "fashionable miniskirt"
|
||||
path = /obj/item/clothing/under/fashionminiskirt
|
||||
|
||||
/datum/gear/uniform/fashionminiskirt/New()
|
||||
..()
|
||||
gear_tweaks += gear_tweak_free_color_choice
|
||||
|
||||
/datum/gear/uniform/paramedunidark
|
||||
display_name = "paramedic uniform - dark"
|
||||
path = /obj/item/clothing/under/rank/paramedunidark
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic")
|
||||
|
||||
/datum/gear/uniform/parameduniskirtdark
|
||||
display_name = "paramedic skirt - dark"
|
||||
path = /obj/item/clothing/under/rank/parameduniskirtdark
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic")
|
||||
|
||||
/datum/gear/uniform/paramedunilight
|
||||
display_name = "paramedic uniform - light"
|
||||
path = /obj/item/clothing/under/rank/paramedunilight
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic")
|
||||
|
||||
/datum/gear/uniform/parameduniskirtlight
|
||||
display_name = "paramedic skirt - light"
|
||||
path = /obj/item/clothing/under/rank/parameduniskirtlight
|
||||
allowed_roles = list("Medical Doctor","Chief Medical Officer","Paramedic")
|
||||
@@ -0,0 +1,55 @@
|
||||
/obj/item/rig_module/gauntlets
|
||||
|
||||
name = "proto-kinetic gear unit"
|
||||
desc = "A set of paired proto-kinetic gauntlets and greaves. There's no way this is actually usable. Right?"
|
||||
icon_state = "module"
|
||||
|
||||
interface_name = "proto-kinetic gear unit"
|
||||
interface_desc = "A set of paired proto-kinetic gauntlets and greaves. For disrupting rocks and creatures' innards."
|
||||
|
||||
activate_string = "Deploy Gauntlets"
|
||||
deactivate_string = "Undeploy Gauntlets"
|
||||
|
||||
usable = 0
|
||||
toggleable = 1
|
||||
use_power_cost = 0
|
||||
active_power_cost = 2.5
|
||||
passive_power_cost = 0
|
||||
var/obj/item/weapon/kinetic_crusher/machete/gauntlets/rig/stored_gauntlets
|
||||
|
||||
/obj/item/rig_module/gauntlets/Initialize()
|
||||
. = ..()
|
||||
stored_gauntlets = new /obj/item/weapon/kinetic_crusher/machete/gauntlets/rig(src)
|
||||
stored_gauntlets.storing_module = src
|
||||
|
||||
/obj/item/rig_module/gauntlets/activate()
|
||||
..()
|
||||
var/mob/living/M = holder.wearer
|
||||
var/datum/gender/TU = gender_datums[M.get_visible_gender()]
|
||||
|
||||
if(M.l_hand && M.r_hand)
|
||||
to_chat(M, "<span class='danger'>Your hands are full.</span>")
|
||||
deactivate()
|
||||
return
|
||||
if(M.a_intent == I_HURT)
|
||||
M.visible_message(
|
||||
"<span class='danger'>[M] throws [TU.his] arms out, extending [stored_gauntlets] from \the [holder] with a click!</span>",
|
||||
"<span class='danger'>You throw your arms out, extending [stored_gauntlets] from \the [holder] with a click!</span>",
|
||||
"<span class='notice'>You hear a threatening hiss and a click.</span>"
|
||||
)
|
||||
else
|
||||
M.visible_message(
|
||||
"<span class='notice'>[M] extends [stored_gauntlets] from \the [holder] with a click!</span>",
|
||||
"<span class='notice'>You extend [stored_gauntlets] from \the [holder] with a click!</span>",
|
||||
"<span class='notice'>You hear a hiss and a click.</span>")
|
||||
|
||||
playsound(src, 'sound/items/helmetdeploy.ogg', 40, 1)
|
||||
M.put_in_hands(stored_gauntlets)
|
||||
|
||||
/obj/item/rig_module/gauntlets/deactivate()
|
||||
..()
|
||||
var/mob/living/M = holder.wearer
|
||||
if(!M)
|
||||
return
|
||||
for(var/obj/item/weapon/kinetic_crusher/machete/gauntlets/gaming in M.contents)
|
||||
M.drop_from_inventory(gaming, src)
|
||||
@@ -34,6 +34,12 @@
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
|
||||
flags_inv = HIDEHOLSTER
|
||||
|
||||
//Command
|
||||
/obj/item/clothing/suit/storage/cmddressjacket
|
||||
name = "command dress jacket"
|
||||
desc = "A fancy dress jacket made for command staff. Makes you feel in charge."
|
||||
icon_state = "cmddressjacket"
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/suit/storage/hooded/chaplain_hoodie
|
||||
name = "chaplain hoodie"
|
||||
|
||||
@@ -282,6 +282,14 @@
|
||||
item_state = "collar_pnk"
|
||||
overlay_state = "collar_pnk"
|
||||
|
||||
/obj/item/clothing/accessory/collar/cowbell
|
||||
name = "cowbell collar"
|
||||
desc = "A collar for your little pets... or the big ones."
|
||||
icon_state = "collar_cowbell"
|
||||
item_state = "collar_cowbell_overlay"
|
||||
overlay_state = "collar_cowbell_overlay"
|
||||
|
||||
|
||||
/obj/item/clothing/accessory/collar/holo
|
||||
name = "Holo-collar"
|
||||
desc = "An expensive holo-collar for the modern day pet."
|
||||
@@ -369,7 +377,7 @@
|
||||
icon_state = "holster_machete"
|
||||
slot = ACCESSORY_SLOT_WEAPON
|
||||
concealed_holster = 0
|
||||
can_hold = list(/obj/item/weapon/material/knife/machete)
|
||||
can_hold = list(/obj/item/weapon/material/knife/machete, /obj/item/weapon/kinetic_crusher/machete)
|
||||
//sound_in = 'sound/effects/holster/sheathin.ogg'
|
||||
//sound_out = 'sound/effects/holster/sheathout.ogg'
|
||||
|
||||
|
||||
@@ -174,6 +174,34 @@
|
||||
icon_state = "scrubs"
|
||||
item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white")
|
||||
|
||||
/obj/item/clothing/under/rank/paramedunidark
|
||||
name = "dark paramedic uniform"
|
||||
desc = "A dark jumpsuit for those brave souls who have to deal with a CMO who thinks they're the do everything person."
|
||||
icon_state = "paramedicdark"
|
||||
rolled_down = -1
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/parameduniskirtdark
|
||||
name = "dark paramedic uniskirt"
|
||||
desc = "A dark jumpskirt for those brave souls who have to deal with a CMO who thinks they're the do everything person."
|
||||
icon_state = "paramedicdark_skirt"
|
||||
rolled_down = -1
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/paramedunilight
|
||||
name = "light paramedic uniform"
|
||||
desc = "A light jumpsuit for those brave souls who have to deal with a CMO who thinks they're the do everything person."
|
||||
icon_state = "paramediclight"
|
||||
rolled_down = -1
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/parameduniskirtlight
|
||||
name = "light paramedic uniskirt"
|
||||
desc = "A light jumpskirt for those brave souls who have to deal with a CMO who thinks they're the do everything person."
|
||||
icon_state = "paramediclight_skirt"
|
||||
rolled_down = -1
|
||||
rolled_sleeves = -1
|
||||
|
||||
/obj/item/clothing/under/rank/psych
|
||||
desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist."
|
||||
name = "psychiatrist's jumpsuit"
|
||||
@@ -186,7 +214,6 @@
|
||||
icon_state = "psychturtle"
|
||||
item_state_slots = list(slot_r_hand_str = "psyche", slot_l_hand_str = "psyche")
|
||||
rolled_sleeves = 0
|
||||
|
||||
/*
|
||||
* Medsci, unused (i think) stuff
|
||||
*/
|
||||
|
||||
@@ -565,6 +565,11 @@
|
||||
desc = "A red and black dress fit for a countess."
|
||||
icon_state = "countess"
|
||||
|
||||
/obj/item/clothing/under/verglasdress
|
||||
name = "verglas dress"
|
||||
desc = "The modern twist on a forgotten pattern, the Verglas style utilizes comfortable velvet and silver white satin to create an otherworldly effect evocative of winter, or the void."
|
||||
icon_state = "verglas_dress"
|
||||
|
||||
/*
|
||||
* wedding stuff
|
||||
*/
|
||||
@@ -884,6 +889,10 @@ Uniforms and such
|
||||
desc = "A flowery skirt that comes in a variety of colors."
|
||||
icon_state = "flowerskirt"
|
||||
|
||||
/obj/item/clothing/under/fashionminiskirt
|
||||
name = "fashionable miniskirt"
|
||||
desc = "An impractically short miniskirt allegedly making waves through the local fashion scene."
|
||||
icon_state = "miniskirt_fashion"
|
||||
/*
|
||||
* swimsuit
|
||||
*/
|
||||
@@ -946,6 +955,12 @@ Uniforms and such
|
||||
desc = "No honest man would wear this abomination"
|
||||
icon_state = "mankini"
|
||||
|
||||
/obj/item/clothing/under/swimsuit/cowbikini
|
||||
name = "cow print bikini"
|
||||
desc = "A rather skimpy cow patterned swimsuit."
|
||||
icon_state = "swim_cow"
|
||||
|
||||
|
||||
/*
|
||||
* pyjamas
|
||||
*/
|
||||
|
||||
@@ -847,6 +847,7 @@
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/science = 5,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/security = 5,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 5,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 5,
|
||||
/obj/item/clothing/under/utility = 5,
|
||||
/obj/item/clothing/under/utility/grey = 5,
|
||||
/obj/item/clothing/under/utility/blue = 5,
|
||||
@@ -1017,6 +1018,7 @@
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/science = 50,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/security = 50,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 50,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 50,
|
||||
/obj/item/clothing/under/utility = 50,
|
||||
/obj/item/clothing/under/utility/grey = 50,
|
||||
/obj/item/clothing/under/utility/blue = 50,
|
||||
@@ -1952,6 +1954,7 @@
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/science = 5,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/security = 5,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 5,
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 5,
|
||||
/obj/item/clothing/under/utility = 5,
|
||||
/obj/item/clothing/under/utility/grey = 5,
|
||||
/obj/item/clothing/under/utility/blue = 5,
|
||||
|
||||
@@ -339,7 +339,7 @@ I said no!
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/caramelapple
|
||||
|
||||
/datum/recipe/twobread
|
||||
reagents = list("wine" = 5)
|
||||
reagents = list("redwine" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/bread,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/slice/bread,
|
||||
@@ -796,7 +796,7 @@ I said no!
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/chilicheesefries
|
||||
|
||||
/datum/recipe/risotto
|
||||
reagents = list("wine" = 5, "rice" = 10, "spacespice" = 1)
|
||||
reagents = list("redwine" = 5, "rice" = 10, "spacespice" = 1)
|
||||
fruit = list("mushroom" = 1)
|
||||
reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/risotto
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
result = /obj/item/weapon/reagent_containers/food/snacks/pandenata
|
||||
|
||||
/datum/recipe/tocino
|
||||
reagents = list("sodiumchloride" = 5, "wine" = 5)
|
||||
reagents = list("sodiumchloride" = 5, "redwine" = 5)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/rawcutlet
|
||||
)
|
||||
|
||||
@@ -43,41 +43,46 @@
|
||||
..()
|
||||
wires = new(src)
|
||||
if(!contraband_seeds.len)
|
||||
contraband_seeds = pick(list(
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/greengrapeseed = 3,
|
||||
/obj/item/seeds/reishimycelium = 2,
|
||||
/obj/item/seeds/bloodtomatoseed = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/plastiseed = 3,
|
||||
/obj/item/seeds/kudzuseed = 2,
|
||||
/obj/item/seeds/rose/blood = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/amanitamycelium = 3,
|
||||
/obj/item/seeds/libertymycelium = 2,
|
||||
/obj/item/seeds/glowshroom = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/glowberryseed = 3,
|
||||
/obj/item/seeds/icepepperseed = 2,
|
||||
/obj/item/seeds/bluetomatoseed = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/durian = 2,
|
||||
/obj/item/seeds/ambrosiadeusseed = 1,
|
||||
/obj/item/seeds/killertomatoseed = 1
|
||||
),
|
||||
list(
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/random = 6
|
||||
)
|
||||
))
|
||||
contraband_seeds = pick( /// Some form of ambrosia in all lists.
|
||||
prob(30);list( /// General produce
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/greengrapeseed = 3,
|
||||
/obj/item/seeds/icepepperseed = 2,
|
||||
/obj/item/seeds/kudzuseed = 1
|
||||
),
|
||||
prob(30);list( ///Mushroom batch
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 1,
|
||||
/obj/item/seeds/glowberryseed = 2,
|
||||
/obj/item/seeds/libertymycelium = 1,
|
||||
/obj/item/seeds/reishimycelium = 2,
|
||||
/obj/item/seeds/sporemycelium = 1
|
||||
),
|
||||
prob(15);list( /// Survivalist
|
||||
/obj/item/seeds/ambrosiadeusseed = 2,
|
||||
/obj/item/seeds/redtowermycelium = 2,
|
||||
/obj/item/seeds/vale = 2,
|
||||
/obj/item/seeds/siflettuce = 2
|
||||
),
|
||||
prob(20);list( /// Cold plants
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 2,
|
||||
/obj/item/seeds/thaadra = 2,
|
||||
/obj/item/seeds/icepepperseed = 2,
|
||||
/obj/item/seeds/siflettuce = 1
|
||||
),
|
||||
prob(10);list( ///Poison party
|
||||
/obj/item/seeds/ambrosiavulgarisseed = 3,
|
||||
/obj/item/seeds/surik = 1,
|
||||
/obj/item/seeds/telriis = 1,
|
||||
/obj/item/seeds/nettleseed = 2,
|
||||
/obj/item/seeds/poisonberryseed = 1
|
||||
),
|
||||
prob(5);list( /// Extra poison party!
|
||||
/obj/item/seeds/ambrosiainfernusseed = 1,
|
||||
/obj/item/seeds/amauri = 1,
|
||||
/obj/item/seeds/surik = 1,
|
||||
/obj/item/seeds/deathberryseed = 1 /// Very ow.
|
||||
)
|
||||
)
|
||||
return
|
||||
|
||||
/obj/machinery/seed_storage/process()
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
EQUIPMENT("Defense Equipment - Razor Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked, 1000),
|
||||
EQUIPMENT("Defense Equipment - Sentry Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/ward, 1500),
|
||||
EQUIPMENT("Defense Equipment - Smoke Bomb", /obj/item/weapon/grenade/smokebomb, 100),
|
||||
EQUIPMENT("Hybrid Equipment - Proto-Kinetic Dagger", /obj/item/weapon/kinetic_crusher/machete/dagger, 500),
|
||||
EQUIPMENT("Hybrid Equipment - Proto-Kinetic Machete", /obj/item/weapon/kinetic_crusher/machete, 1000),
|
||||
EQUIPMENT("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 7500),
|
||||
EQUIPMENT("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 1000),
|
||||
EQUIPMENT("Fishing Net", /obj/item/weapon/material/fishing_net, 500),
|
||||
@@ -98,14 +100,15 @@
|
||||
EQUIPMENT("Industrial Equipment - Sheet-Snatcher", /obj/item/weapon/storage/bag/sheetsnatcher, 500),
|
||||
)
|
||||
prize_list["Hardsuit"] = list(
|
||||
EQUIPMENT("Hardsuit - Control Module", /obj/item/weapon/rig/industrial/vendor, 2000),
|
||||
EQUIPMENT("Hardsuit - Drill", /obj/item/rig_module/device/drill, 5000),
|
||||
EQUIPMENT("Hardsuit - Intelligence Storage",/obj/item/rig_module/ai_container, 2500),
|
||||
EQUIPMENT("Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250),
|
||||
EQUIPMENT("Hardsuit - Material Scanner", /obj/item/rig_module/vision/material, 500),
|
||||
EQUIPMENT("Hardsuit - Ore Scanner", /obj/item/rig_module/device/orescanner, 1000),
|
||||
EQUIPMENT("Hardsuit - Plasma Cutter", /obj/item/rig_module/device/plasmacutter, 800),
|
||||
EQUIPMENT("Hardsuit - Smoke Bomb Deployer", /obj/item/rig_module/grenade_launcher/smoke,2000),
|
||||
EQUIPMENT("Hardsuit - Control Module", /obj/item/weapon/rig/industrial/vendor, 2000),
|
||||
EQUIPMENT("Hardsuit - Drill", /obj/item/rig_module/device/drill, 5000),
|
||||
EQUIPMENT("Hardsuit - Intelligence Storage", /obj/item/rig_module/ai_container, 2500),
|
||||
EQUIPMENT("Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250),
|
||||
EQUIPMENT("Hardsuit - Material Scanner", /obj/item/rig_module/vision/material, 500),
|
||||
EQUIPMENT("Hardsuit - Ore Scanner", /obj/item/rig_module/device/orescanner, 1000),
|
||||
EQUIPMENT("Hardsuit - Plasma Cutter", /obj/item/rig_module/device/plasmacutter, 800),
|
||||
EQUIPMENT("Hardsuit - Smoke Bomb Deployer", /obj/item/rig_module/grenade_launcher/smoke, 2000),
|
||||
EQUIPMENT("Hardsuit - Proto-Kinetic Gauntlets", /obj/item/rig_module/gauntlets, 2000),
|
||||
)
|
||||
prize_list["Miscellaneous"] = list(
|
||||
EQUIPMENT("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 125),
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
EQUIPMENT("Defense Equipment - Razor Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked, 100),
|
||||
EQUIPMENT("Defense Equipment - Sentry Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/ward, 150),
|
||||
EQUIPMENT("Defense Equipment - Frontier Carbine", /obj/item/weapon/gun/energy/locked/frontier/carbine, 750),
|
||||
EQUIPMENT("Hybrid Equipment - Proto-Kinetic Dagger", /obj/item/weapon/kinetic_crusher/machete/dagger, 75),
|
||||
EQUIPMENT("Hybrid Equipment - Proto-Kinetic Machete", /obj/item/weapon/kinetic_crusher/machete, 250),
|
||||
EQUIPMENT("Fishing Net", /obj/item/weapon/material/fishing_net, 50),
|
||||
EQUIPMENT("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 100),
|
||||
EQUIPMENT("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 750),
|
||||
|
||||
43
code/modules/mob/_modifiers/crusher_mark.dm
Normal file
@@ -0,0 +1,43 @@
|
||||
/datum/modifier/crusher_mark
|
||||
name = "destabilized"
|
||||
desc = "You've been struck by a destabilizing bolt. By all accounts, this is probably a bad thing."
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
on_created_text = "You feel destabilized."
|
||||
on_expired_text = "You feel stable again."
|
||||
var/mutable_appearance/marked_underlay
|
||||
var/obj/item/weapon/kinetic_crusher/hammer_synced
|
||||
|
||||
/*
|
||||
/datum/modifier/New(var/new_holder, var/new_origin)
|
||||
holder = new_holder
|
||||
if(new_origin)
|
||||
origin = weakref(new_origin)
|
||||
else // We assume the holder caused the modifier if not told otherwise.
|
||||
origin = weakref(holder)
|
||||
..()
|
||||
/mob/living/proc/add_modifier(var/modifier_type, var/expire_at = null, var/mob/living/origin = null, var/suppress_failure = FALSE)
|
||||
*/
|
||||
|
||||
/datum/modifier/crusher_mark/New(var/new_holder, var/new_origin)
|
||||
. = ..()
|
||||
if(isliving(new_origin))
|
||||
var/mob/living/origin = new_origin
|
||||
var/obj/item/weapon/kinetic_crusher/to_sync = locate(/obj/item/weapon/kinetic_crusher) in origin
|
||||
if(to_sync)
|
||||
hammer_synced = to_sync
|
||||
if(hammer_synced? hammer_synced.can_mark(holder) : TRUE)
|
||||
marked_underlay = mutable_appearance('icons/effects/effects.dmi', "shield2")
|
||||
marked_underlay.pixel_x = -holder.pixel_x
|
||||
marked_underlay.pixel_y = -holder.pixel_y
|
||||
holder.underlays += marked_underlay
|
||||
|
||||
/datum/modifier/crusher_mark/Destroy()
|
||||
hammer_synced = null
|
||||
if(holder)
|
||||
holder.underlays -= marked_underlay
|
||||
QDEL_NULL(marked_underlay)
|
||||
return ..()
|
||||
|
||||
/datum/modifier/crusher_mark/on_expire()
|
||||
holder.underlays -= marked_underlay //if this is being called, we should have a holder at this point.
|
||||
..()
|
||||
@@ -163,3 +163,102 @@
|
||||
unshavenreversemohawk
|
||||
name = "Mohawk Reverse Unshaven"
|
||||
icon_state = "hair_unshaven_reversemohawk"
|
||||
|
||||
// Extra colorable options for Vox
|
||||
/datum/sprite_accessory/hair/vox_afro_color
|
||||
name = "Vox Afro, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_afro"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_crestedquills_color
|
||||
name = "Vox Crested Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_crestedquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_empquills_color
|
||||
name = "Vox Emperor Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_emperorquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_hairhorns_color
|
||||
name = "Vox Hair Horns, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_horns"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_keelquills_color
|
||||
name = "Vox Keel Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_keelquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_keetquills_color
|
||||
name = "Vox Keet Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_keetquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_kingly_color
|
||||
name = "Vox Kingly Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_kingly"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_mohawk_color
|
||||
name = "Vox Mohawk, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_mohawk"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_nights_color
|
||||
name = "Vox Night Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_nights"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_razorclipped_color
|
||||
name = "Vox Razor Clipped, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_razorclipped"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_razor_color
|
||||
name = "Vox Razor, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_razor"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_shortquills_color
|
||||
name = "Vox Short Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_shortquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_tielquills_color
|
||||
name = "Vox Tiel Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_tielquills"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
/datum/sprite_accessory/hair/vox_yasuquills_color
|
||||
name = "Vox Yasu Quills, Colorable"
|
||||
icon = 'icons/mob/human_face_ch.dmi'
|
||||
icon_add = 'icons/mob/human_face_ch_add.dmi'
|
||||
icon_state = "hair_vox_yasu"
|
||||
species_allowed = list(SPECIES_VOX)
|
||||
|
||||
@@ -658,7 +658,7 @@
|
||||
return
|
||||
|
||||
//roll to-hit
|
||||
miss_modifier = max(15*(distance-2) - accuracy + miss_modifier + target_mob.get_evasion(), 0)
|
||||
miss_modifier = max(15*(distance-2) - accuracy + miss_modifier + target_mob.get_evasion(), -100)
|
||||
var/hit_zone = get_zone_with_miss_chance(def_zone, target_mob, miss_modifier, ranged_attack=(distance > 1 || original != target_mob)) //if the projectile hits a target we weren't originally aiming at then retain the chance to miss
|
||||
|
||||
var/result = PROJECTILE_FORCE_MISS
|
||||
|
||||
@@ -158,6 +158,7 @@
|
||||
"milk",
|
||||
"mint",
|
||||
"orangejuice",
|
||||
"redwine",
|
||||
"rum",
|
||||
"sake",
|
||||
"sodawater",
|
||||
@@ -175,8 +176,7 @@
|
||||
"vodka",
|
||||
"water",
|
||||
"watermelonjuice",
|
||||
"whiskey",
|
||||
"wine")
|
||||
"whiskey")
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user)
|
||||
return
|
||||
|
||||
@@ -475,11 +475,9 @@
|
||||
if(clean_name)
|
||||
var/okay = tgui_alert(target,"New name will be '[clean_name]', ok?", "Confirmation",list("Cancel","Ok"))
|
||||
if(okay == "Ok")
|
||||
new_name = clean_name
|
||||
|
||||
new_name = sanitizeName(new_name, allow_numbers = TRUE)
|
||||
target.name = new_name
|
||||
target.real_name = target.name
|
||||
target.name = new_name
|
||||
target.real_name = target.name
|
||||
return
|
||||
|
||||
/datum/surgery_step/robotics/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("<span class='warning'>[user]'s hand slips.</span>", \
|
||||
|
||||
@@ -148,21 +148,21 @@
|
||||
generated_reagents = list("milk" = 1)
|
||||
reagent_name = "milk"
|
||||
gen_amount = 1
|
||||
gen_cost = 15
|
||||
gen_cost = 5
|
||||
reagentid = "milk"
|
||||
reagentcolor = "#DFDFDF"
|
||||
if("Cream")
|
||||
generated_reagents = list("cream" = 1)
|
||||
reagent_name = "cream"
|
||||
gen_amount = 1
|
||||
gen_cost = 15
|
||||
gen_cost = 5
|
||||
reagentid = "cream"
|
||||
reagentcolor = "#DFD7AF"
|
||||
if("Honey")
|
||||
generated_reagents = list("honey" = 1)
|
||||
reagent_name = "honey"
|
||||
gen_amount = 1
|
||||
gen_cost = 15
|
||||
gen_cost = 10
|
||||
reagentid = "honey"
|
||||
reagentcolor = "#FFFF00"
|
||||
if("Cherry Jelly") //Kinda WIP, allows slime like folks something to stuff others with, should make a generic jelly in future
|
||||
|
||||
@@ -985,7 +985,7 @@
|
||||
/datum/component/vore_panel/proc/vore_panel_click(source, location, control, params, user)
|
||||
var/mob/living/owner = user
|
||||
if(istype(owner) && owner.vorePanel)
|
||||
INVOKE_ASYNC(owner.vorePanel, .proc/tgui_interact, user)
|
||||
INVOKE_ASYNC(owner, /mob/living/proc/insidePanel, owner) //CHOMPEdit
|
||||
|
||||
/**
|
||||
* Screen object for vore panel
|
||||
|
||||
@@ -286,6 +286,10 @@ Swimsuits, for general use, to avoid arriving to work with your swimsuit.
|
||||
name = "Medical Swimsuit capsule"
|
||||
has_items = list(/obj/item/clothing/under/swimsuit/fluff/medical)
|
||||
|
||||
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini
|
||||
name = "Cow Bikini Swimsuit capsule"
|
||||
has_items = list(/obj/item/clothing/under/swimsuit/cowbikini)
|
||||
|
||||
//Monkey boxes for the new primals we have
|
||||
/obj/item/weapon/storage/box/monkeycubes/sobakacubes
|
||||
name = "sobaka cube box"
|
||||
|
||||
|
Before Width: | Height: | Size: 3.2 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 201 KiB |
|
Before Width: | Height: | Size: 587 KiB After Width: | Height: | Size: 592 KiB |
|
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 442 KiB After Width: | Height: | Size: 444 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 12 KiB |
BIN
sound/items/helmetdeploy.ogg
Normal file
BIN
sound/weapons/plasma_cutter.ogg
Normal file
@@ -373,6 +373,7 @@
|
||||
#include "code\datums\components\crafting\recipes\primitive.dm"
|
||||
#include "code\datums\components\crafting\recipes\weapons.dm"
|
||||
#include "code\datums\elements\_element.dm"
|
||||
#include "code\datums\elements\conflict_checking.dm"
|
||||
#include "code\datums\elements\light_blocking.dm"
|
||||
#include "code\datums\elements\turf_transparency.dm"
|
||||
#include "code\datums\game_masters\_common.dm"
|
||||
@@ -2100,6 +2101,7 @@
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\chem_dispenser.dm"
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\cleaner_launcher.dm"
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\cloak.dm"
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\crusher_gauntlets.dm"
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\datajack.dm"
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\device.dm"
|
||||
#include "code\modules\clothing\spacesuits\rig\modules\specific\electrowarfare.dm"
|
||||
@@ -2731,6 +2733,7 @@
|
||||
#include "code\modules\mining\alloys.dm"
|
||||
#include "code\modules\mining\alloys_vr.dm"
|
||||
#include "code\modules\mining\fulton.dm"
|
||||
#include "code\modules\mining\kinetic_crusher.dm"
|
||||
#include "code\modules\mining\mine_items.dm"
|
||||
#include "code\modules\mining\mine_items_vr.dm"
|
||||
#include "code\modules\mining\mine_outcrops.dm"
|
||||
@@ -2784,6 +2787,7 @@
|
||||
#include "code\modules\mob\_modifiers\aura.dm"
|
||||
#include "code\modules\mob\_modifiers\changeling.dm"
|
||||
#include "code\modules\mob\_modifiers\cloning.dm"
|
||||
#include "code\modules\mob\_modifiers\crusher_mark.dm"
|
||||
#include "code\modules\mob\_modifiers\feysight.dm"
|
||||
#include "code\modules\mob\_modifiers\fire.dm"
|
||||
#include "code\modules\mob\_modifiers\medical.dm"
|
||||
|
||||