Merge branch 'master' into upstream-merge-11471

This commit is contained in:
Nadyr
2021-08-24 22:20:31 -04:00
committed by GitHub
46 changed files with 428 additions and 66 deletions

View File

@@ -42,3 +42,7 @@
//Ouch my toes! //Ouch my toes!
#define CALTROP_BYPASS_SHOES 1 #define CALTROP_BYPASS_SHOES 1
#define CALTROP_IGNORE_WALKERS 2 #define CALTROP_IGNORE_WALKERS 2
// Conflict element IDs
#define CONFLICT_ELEMENT_CRUSHER "crusher"
#define CONFLICT_ELEMENT_KA "kinetic_accelerator"

View File

@@ -772,3 +772,9 @@
#define COMPONENT_BLOCK_LIGHT_EATER (1<<0) #define COMPONENT_BLOCK_LIGHT_EATER (1<<0)
///from base of [/datum/element/light_eater/proc/devour]: (atom/eaten_light) ///from base of [/datum/element/light_eater/proc/devour]: (atom/eaten_light)
#define COMSIG_LIGHT_EATER_DEVOUR "light_eater_devour" #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)

View File

@@ -58,5 +58,6 @@
//#define isturf(D) istype(D, /turf) //Built in //#define isturf(D) istype(D, /turf) //Built in
#define isopenspace(A) istype(A, /turf/simulated/open) #define isopenspace(A) istype(A, /turf/simulated/open)
#define isspace(A) istype(A, /turf/space) #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) #define istaurtail(A) istype(A, /datum/sprite_accessory/tail/taur)

View File

@@ -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/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/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/locations[] = teleportlocs.len ? teleportlocs : drinks//if null, defaults to drinks instead.
var/names[] = list() var/names[] = list()

View 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)
++.

View File

@@ -223,6 +223,8 @@
size = "bulky" size = "bulky"
if(ITEMSIZE_HUGE) if(ITEMSIZE_HUGE)
size = "huge" size = "huge"
if(ITEMSIZE_NO_CONTAINER)
size = "massive"
return ..(user, "", "It is a [size] item.") return ..(user, "", "It is a [size] item.")
/obj/item/attack_hand(mob/living/user as mob) /obj/item/attack_hand(mob/living/user as mob)

View File

@@ -63,7 +63,7 @@
if(istype(W, /obj/item/weapon/material)) if(istype(W, /obj/item/weapon/material))
if(istype(W, /obj/item/weapon/material/sharpeningkit)) 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 return
var/obj/item/weapon/material/M = W var/obj/item/weapon/material/M = W
if(uses >= M.w_class*2) if(uses >= M.w_class*2)
@@ -71,7 +71,7 @@
uses -= M.w_class*2 uses -= M.w_class*2
return return
else 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 return
else else
to_chat(user, "You can't sharpen [W] with [src]!") to_chat(user, "You can't sharpen [W] with [src]!")

View File

@@ -48,7 +48,8 @@
/obj/item/device/ano_scanner, /obj/item/device/ano_scanner,
/obj/item/device/cataloguer, /obj/item/device/cataloguer,
/obj/item/device/radio, /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 /obj/item/weapon/storage/belt/explorer/pathfinder

View File

@@ -40,6 +40,10 @@
display_name = "collar, pink" display_name = "collar, pink"
path = /obj/item/clothing/accessory/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 /datum/gear/collar/holo
display_name = "collar, holo" display_name = "collar, holo"
path = /obj/item/clothing/accessory/collar/holo path = /obj/item/clothing/accessory/collar/holo

View File

@@ -616,3 +616,8 @@
/datum/gear/suit/miscellaneous/cardigan/New() /datum/gear/suit/miscellaneous/cardigan/New()
..() ..()
gear_tweaks += gear_tweak_free_color_choice 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")

View File

@@ -649,3 +649,35 @@
/datum/gear/uniform/countess /datum/gear/uniform/countess
display_name = "countess dress" display_name = "countess dress"
path = /obj/item/clothing/under/dress/countess 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")

View File

@@ -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)

View File

@@ -34,6 +34,12 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
flags_inv = HIDEHOLSTER 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 //Chaplain
/obj/item/clothing/suit/storage/hooded/chaplain_hoodie /obj/item/clothing/suit/storage/hooded/chaplain_hoodie
name = "chaplain hoodie" name = "chaplain hoodie"

View File

@@ -282,6 +282,14 @@
item_state = "collar_pnk" item_state = "collar_pnk"
overlay_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 /obj/item/clothing/accessory/collar/holo
name = "Holo-collar" name = "Holo-collar"
desc = "An expensive holo-collar for the modern day pet." desc = "An expensive holo-collar for the modern day pet."
@@ -369,7 +377,7 @@
icon_state = "holster_machete" icon_state = "holster_machete"
slot = ACCESSORY_SLOT_WEAPON slot = ACCESSORY_SLOT_WEAPON
concealed_holster = 0 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_in = 'sound/effects/holster/sheathin.ogg'
//sound_out = 'sound/effects/holster/sheathout.ogg' //sound_out = 'sound/effects/holster/sheathout.ogg'

View File

@@ -174,6 +174,34 @@
icon_state = "scrubs" icon_state = "scrubs"
item_state_slots = list(slot_r_hand_str = "white", slot_l_hand_str = "white") 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 /obj/item/clothing/under/rank/psych
desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist." desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist."
name = "psychiatrist's jumpsuit" name = "psychiatrist's jumpsuit"
@@ -186,7 +214,6 @@
icon_state = "psychturtle" icon_state = "psychturtle"
item_state_slots = list(slot_r_hand_str = "psyche", slot_l_hand_str = "psyche") item_state_slots = list(slot_r_hand_str = "psyche", slot_l_hand_str = "psyche")
rolled_sleeves = 0 rolled_sleeves = 0
/* /*
* Medsci, unused (i think) stuff * Medsci, unused (i think) stuff
*/ */

View File

@@ -565,6 +565,11 @@
desc = "A red and black dress fit for a countess." desc = "A red and black dress fit for a countess."
icon_state = "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 * wedding stuff
*/ */
@@ -884,6 +889,10 @@ Uniforms and such
desc = "A flowery skirt that comes in a variety of colors." desc = "A flowery skirt that comes in a variety of colors."
icon_state = "flowerskirt" 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 * swimsuit
*/ */
@@ -946,6 +955,12 @@ Uniforms and such
desc = "No honest man would wear this abomination" desc = "No honest man would wear this abomination"
icon_state = "mankini" 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 * pyjamas
*/ */

View File

@@ -847,6 +847,7 @@
/obj/item/weapon/storage/box/fluff/swimsuit/science = 5, /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/security = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/medical = 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 = 5,
/obj/item/clothing/under/utility/grey = 5, /obj/item/clothing/under/utility/grey = 5,
/obj/item/clothing/under/utility/blue = 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/science = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/security = 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/medical = 50,
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 50,
/obj/item/clothing/under/utility = 50, /obj/item/clothing/under/utility = 50,
/obj/item/clothing/under/utility/grey = 50, /obj/item/clothing/under/utility/grey = 50,
/obj/item/clothing/under/utility/blue = 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/science = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/security = 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/medical = 5,
/obj/item/weapon/storage/box/fluff/swimsuit/cowbikini = 5,
/obj/item/clothing/under/utility = 5, /obj/item/clothing/under/utility = 5,
/obj/item/clothing/under/utility/grey = 5, /obj/item/clothing/under/utility/grey = 5,
/obj/item/clothing/under/utility/blue = 5, /obj/item/clothing/under/utility/blue = 5,

View File

@@ -339,7 +339,7 @@ I said no!
result = /obj/item/weapon/reagent_containers/food/snacks/caramelapple result = /obj/item/weapon/reagent_containers/food/snacks/caramelapple
/datum/recipe/twobread /datum/recipe/twobread
reagents = list("wine" = 5) reagents = list("redwine" = 5)
items = list( items = list(
/obj/item/weapon/reagent_containers/food/snacks/slice/bread, /obj/item/weapon/reagent_containers/food/snacks/slice/bread,
/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 result = /obj/item/weapon/reagent_containers/food/snacks/chilicheesefries
/datum/recipe/risotto /datum/recipe/risotto
reagents = list("wine" = 5, "rice" = 10, "spacespice" = 1) reagents = list("redwine" = 5, "rice" = 10, "spacespice" = 1)
fruit = list("mushroom" = 1) fruit = list("mushroom" = 1)
reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here
result = /obj/item/weapon/reagent_containers/food/snacks/risotto result = /obj/item/weapon/reagent_containers/food/snacks/risotto

View File

@@ -41,7 +41,7 @@
result = /obj/item/weapon/reagent_containers/food/snacks/pandenata result = /obj/item/weapon/reagent_containers/food/snacks/pandenata
/datum/recipe/tocino /datum/recipe/tocino
reagents = list("sodiumchloride" = 5, "wine" = 5) reagents = list("sodiumchloride" = 5, "redwine" = 5)
items = list( items = list(
/obj/item/weapon/reagent_containers/food/snacks/rawcutlet /obj/item/weapon/reagent_containers/food/snacks/rawcutlet
) )

View File

@@ -43,41 +43,46 @@
..() ..()
wires = new(src) wires = new(src)
if(!contraband_seeds.len) if(!contraband_seeds.len)
contraband_seeds = pick(list( contraband_seeds = pick( /// Some form of ambrosia in all lists.
list( prob(30);list( /// General produce
/obj/item/seeds/ambrosiavulgarisseed = 3, /obj/item/seeds/ambrosiavulgarisseed = 3,
/obj/item/seeds/greengrapeseed = 3, /obj/item/seeds/greengrapeseed = 3,
/obj/item/seeds/reishimycelium = 2, /obj/item/seeds/icepepperseed = 2,
/obj/item/seeds/bloodtomatoseed = 1 /obj/item/seeds/kudzuseed = 1
), ),
list( prob(30);list( ///Mushroom batch
/obj/item/seeds/ambrosiavulgarisseed = 3, /obj/item/seeds/ambrosiavulgarisseed = 1,
/obj/item/seeds/plastiseed = 3, /obj/item/seeds/glowberryseed = 2,
/obj/item/seeds/kudzuseed = 2, /obj/item/seeds/libertymycelium = 1,
/obj/item/seeds/rose/blood = 1 /obj/item/seeds/reishimycelium = 2,
), /obj/item/seeds/sporemycelium = 1
list( ),
/obj/item/seeds/ambrosiavulgarisseed = 3, prob(15);list( /// Survivalist
/obj/item/seeds/amanitamycelium = 3, /obj/item/seeds/ambrosiadeusseed = 2,
/obj/item/seeds/libertymycelium = 2, /obj/item/seeds/redtowermycelium = 2,
/obj/item/seeds/glowshroom = 1 /obj/item/seeds/vale = 2,
), /obj/item/seeds/siflettuce = 2
list( ),
/obj/item/seeds/ambrosiavulgarisseed = 3, prob(20);list( /// Cold plants
/obj/item/seeds/glowberryseed = 3, /obj/item/seeds/ambrosiavulgarisseed = 2,
/obj/item/seeds/icepepperseed = 2, /obj/item/seeds/thaadra = 2,
/obj/item/seeds/bluetomatoseed = 1 /obj/item/seeds/icepepperseed = 2,
), /obj/item/seeds/siflettuce = 1
list( ),
/obj/item/seeds/durian = 2, prob(10);list( ///Poison party
/obj/item/seeds/ambrosiadeusseed = 1, /obj/item/seeds/ambrosiavulgarisseed = 3,
/obj/item/seeds/killertomatoseed = 1 /obj/item/seeds/surik = 1,
), /obj/item/seeds/telriis = 1,
list( /obj/item/seeds/nettleseed = 2,
/obj/item/seeds/ambrosiavulgarisseed = 3, /obj/item/seeds/poisonberryseed = 1
/obj/item/seeds/random = 6 ),
) 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 return
/obj/machinery/seed_storage/process() /obj/machinery/seed_storage/process()

View File

@@ -41,6 +41,8 @@
EQUIPMENT("Defense Equipment - Razor Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked, 1000), 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 - Sentry Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/ward, 1500),
EQUIPMENT("Defense Equipment - Smoke Bomb", /obj/item/weapon/grenade/smokebomb, 100), 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("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("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 1000),
EQUIPMENT("Fishing Net", /obj/item/weapon/material/fishing_net, 500), 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), EQUIPMENT("Industrial Equipment - Sheet-Snatcher", /obj/item/weapon/storage/bag/sheetsnatcher, 500),
) )
prize_list["Hardsuit"] = list( prize_list["Hardsuit"] = list(
EQUIPMENT("Hardsuit - Control Module", /obj/item/weapon/rig/industrial/vendor, 2000), EQUIPMENT("Hardsuit - Control Module", /obj/item/weapon/rig/industrial/vendor, 2000),
EQUIPMENT("Hardsuit - Drill", /obj/item/rig_module/device/drill, 5000), EQUIPMENT("Hardsuit - Drill", /obj/item/rig_module/device/drill, 5000),
EQUIPMENT("Hardsuit - Intelligence Storage",/obj/item/rig_module/ai_container, 2500), EQUIPMENT("Hardsuit - Intelligence Storage", /obj/item/rig_module/ai_container, 2500),
EQUIPMENT("Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250), EQUIPMENT("Hardsuit - Maneuvering Jets", /obj/item/rig_module/maneuvering_jets, 1250),
EQUIPMENT("Hardsuit - Material Scanner", /obj/item/rig_module/vision/material, 500), EQUIPMENT("Hardsuit - Material Scanner", /obj/item/rig_module/vision/material, 500),
EQUIPMENT("Hardsuit - Ore Scanner", /obj/item/rig_module/device/orescanner, 1000), EQUIPMENT("Hardsuit - Ore Scanner", /obj/item/rig_module/device/orescanner, 1000),
EQUIPMENT("Hardsuit - Plasma Cutter", /obj/item/rig_module/device/plasmacutter, 800), 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 - 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( prize_list["Miscellaneous"] = list(
EQUIPMENT("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 125), EQUIPMENT("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe, 125),

View File

@@ -55,6 +55,8 @@
EQUIPMENT("Defense Equipment - Razor Drone Deployer", /obj/item/weapon/grenade/spawnergrenade/manhacks/station/locked, 100), 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 - 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("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("Fishing Net", /obj/item/weapon/material/fishing_net, 50),
EQUIPMENT("Titanium Fishing Rod", /obj/item/weapon/material/fishing_rod/modern, 100), 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), EQUIPMENT("Durasteel Fishing Rod", /obj/item/weapon/material/fishing_rod/modern/strong, 750),

View 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.
..()

View File

@@ -163,3 +163,102 @@
unshavenreversemohawk unshavenreversemohawk
name = "Mohawk Reverse Unshaven" name = "Mohawk Reverse Unshaven"
icon_state = "hair_unshaven_reversemohawk" 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)

View File

@@ -658,7 +658,7 @@
return return
//roll to-hit //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/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 var/result = PROJECTILE_FORCE_MISS

View File

@@ -158,6 +158,7 @@
"milk", "milk",
"mint", "mint",
"orangejuice", "orangejuice",
"redwine",
"rum", "rum",
"sake", "sake",
"sodawater", "sodawater",
@@ -175,8 +176,7 @@
"vodka", "vodka",
"water", "water",
"watermelonjuice", "watermelonjuice",
"whiskey", "whiskey")
"wine")
/obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user) /obj/item/weapon/reagent_containers/borghypo/service/attack(var/mob/M, var/mob/user)
return return

View File

@@ -475,11 +475,9 @@
if(clean_name) if(clean_name)
var/okay = tgui_alert(target,"New name will be '[clean_name]', ok?", "Confirmation",list("Cancel","Ok")) var/okay = tgui_alert(target,"New name will be '[clean_name]', ok?", "Confirmation",list("Cancel","Ok"))
if(okay == "Ok") if(okay == "Ok")
new_name = clean_name target.name = new_name
target.real_name = target.name
new_name = sanitizeName(new_name, allow_numbers = TRUE) return
target.name = new_name
target.real_name = target.name
/datum/surgery_step/robotics/install_mmi/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) /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>", \ user.visible_message("<span class='warning'>[user]'s hand slips.</span>", \

View File

@@ -148,21 +148,21 @@
generated_reagents = list("milk" = 1) generated_reagents = list("milk" = 1)
reagent_name = "milk" reagent_name = "milk"
gen_amount = 1 gen_amount = 1
gen_cost = 15 gen_cost = 5
reagentid = "milk" reagentid = "milk"
reagentcolor = "#DFDFDF" reagentcolor = "#DFDFDF"
if("Cream") if("Cream")
generated_reagents = list("cream" = 1) generated_reagents = list("cream" = 1)
reagent_name = "cream" reagent_name = "cream"
gen_amount = 1 gen_amount = 1
gen_cost = 15 gen_cost = 5
reagentid = "cream" reagentid = "cream"
reagentcolor = "#DFD7AF" reagentcolor = "#DFD7AF"
if("Honey") if("Honey")
generated_reagents = list("honey" = 1) generated_reagents = list("honey" = 1)
reagent_name = "honey" reagent_name = "honey"
gen_amount = 1 gen_amount = 1
gen_cost = 15 gen_cost = 10
reagentid = "honey" reagentid = "honey"
reagentcolor = "#FFFF00" reagentcolor = "#FFFF00"
if("Cherry Jelly") //Kinda WIP, allows slime like folks something to stuff others with, should make a generic jelly in future if("Cherry Jelly") //Kinda WIP, allows slime like folks something to stuff others with, should make a generic jelly in future

View File

@@ -985,7 +985,7 @@
/datum/component/vore_panel/proc/vore_panel_click(source, location, control, params, user) /datum/component/vore_panel/proc/vore_panel_click(source, location, control, params, user)
var/mob/living/owner = user var/mob/living/owner = user
if(istype(owner) && owner.vorePanel) 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 * Screen object for vore panel

View File

@@ -286,6 +286,10 @@ Swimsuits, for general use, to avoid arriving to work with your swimsuit.
name = "Medical Swimsuit capsule" name = "Medical Swimsuit capsule"
has_items = list(/obj/item/clothing/under/swimsuit/fluff/medical) 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 //Monkey boxes for the new primals we have
/obj/item/weapon/storage/box/monkeycubes/sobakacubes /obj/item/weapon/storage/box/monkeycubes/sobakacubes
name = "sobaka cube box" name = "sobaka cube box"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 587 KiB

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 442 KiB

After

Width:  |  Height:  |  Size: 444 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -373,6 +373,7 @@
#include "code\datums\components\crafting\recipes\primitive.dm" #include "code\datums\components\crafting\recipes\primitive.dm"
#include "code\datums\components\crafting\recipes\weapons.dm" #include "code\datums\components\crafting\recipes\weapons.dm"
#include "code\datums\elements\_element.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\light_blocking.dm"
#include "code\datums\elements\turf_transparency.dm" #include "code\datums\elements\turf_transparency.dm"
#include "code\datums\game_masters\_common.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\chem_dispenser.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\cleaner_launcher.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\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\datajack.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\device.dm" #include "code\modules\clothing\spacesuits\rig\modules\specific\device.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\electrowarfare.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.dm"
#include "code\modules\mining\alloys_vr.dm" #include "code\modules\mining\alloys_vr.dm"
#include "code\modules\mining\fulton.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.dm"
#include "code\modules\mining\mine_items_vr.dm" #include "code\modules\mining\mine_items_vr.dm"
#include "code\modules\mining\mine_outcrops.dm" #include "code\modules\mining\mine_outcrops.dm"
@@ -2784,6 +2787,7 @@
#include "code\modules\mob\_modifiers\aura.dm" #include "code\modules\mob\_modifiers\aura.dm"
#include "code\modules\mob\_modifiers\changeling.dm" #include "code\modules\mob\_modifiers\changeling.dm"
#include "code\modules\mob\_modifiers\cloning.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\feysight.dm"
#include "code\modules\mob\_modifiers\fire.dm" #include "code\modules\mob\_modifiers\fire.dm"
#include "code\modules\mob\_modifiers\medical.dm" #include "code\modules\mob\_modifiers\medical.dm"