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!
#define CALTROP_BYPASS_SHOES 1
#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)
///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)

View File

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

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/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()

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

View File

@@ -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]!")

View File

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

View File

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

View File

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

View File

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

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
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"

View File

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

View File

@@ -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
*/

View File

@@ -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
*/

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

@@ -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>", \

View File

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

View File

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

View File

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

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\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"