Merge branch 'master' into Timidwomen
This commit is contained in:
@@ -69,6 +69,7 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear))
|
||||
build_path = /obj/item/abductor_machine_beacon/chem_dispenser
|
||||
category = "Advanced Gear"
|
||||
|
||||
/*
|
||||
/datum/abductor_gear/shrink_ray
|
||||
name = "Shrink Ray Blaster"
|
||||
description = "This is a piece of frightening alien tech that enhances the magnetic pull of atoms in a localized space to temporarily make an object shrink. \
|
||||
@@ -77,3 +78,4 @@ GLOBAL_LIST_INIT(abductor_gear, subtypesof(/datum/abductor_gear))
|
||||
cost = 2
|
||||
build_path = /obj/item/gun/energy/shrink_ray
|
||||
category = "Advanced Gear"
|
||||
*/
|
||||
|
||||
@@ -123,6 +123,7 @@ obj/item/dildo/flared/huge
|
||||
desc = "THIS THING IS HUGE!"
|
||||
dildo_size = 4
|
||||
force = 10
|
||||
hitsound = 'sound/weapons/klonk.ogg'
|
||||
|
||||
obj/item/dildo/custom
|
||||
name = "customizable dildo"
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/virologist
|
||||
name = "virologist labcoat"
|
||||
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
|
||||
desc = "A suit that protects against minor chemical spills. Has a green stripe on the shoulder."
|
||||
icon_state = "labcoat_vir"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/science
|
||||
@@ -63,6 +63,11 @@
|
||||
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
|
||||
icon_state = "labcoat_tox"
|
||||
|
||||
/obj/item/clothing/suit/toggle/labcoat/roboticist
|
||||
name = "roboticist labcoat"
|
||||
desc = "More like an eccentric coat than a labcoat. Helps pass off bloodstains as part of the aesthetic. Comes with red shoulder pads."
|
||||
icon_state = "labcoat_robo"
|
||||
|
||||
// Departmental Jackets
|
||||
/obj/item/clothing/suit/toggle/labcoat/depjacket
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
@@ -58,6 +58,11 @@
|
||||
RemoveHood()
|
||||
|
||||
/obj/item/clothing/suit/hooded/proc/ToggleHood()
|
||||
if(!hood)
|
||||
to_chat(loc, "<span class='warning'>[src] seems to be missing its hood..</span>")
|
||||
return
|
||||
hood.atom_colours = atom_colours.Copy()
|
||||
hood.update_atom_colour()
|
||||
if(!suittoggled)
|
||||
if(ishuman(src.loc))
|
||||
var/mob/living/carbon/human/H = src.loc
|
||||
@@ -191,7 +196,10 @@
|
||||
if(!helmettype)
|
||||
return
|
||||
if(!helmet)
|
||||
to_chat(H, "<span class='warning'>[src] seems to be missing its helmet..</span>")
|
||||
return
|
||||
helmet.atom_colours = atom_colours.Copy()
|
||||
helmet.update_atom_colour()
|
||||
if(!suittoggled)
|
||||
if(ishuman(src.loc))
|
||||
if(H.wear_suit != src)
|
||||
|
||||
@@ -596,7 +596,7 @@
|
||||
name = "Buzz Fuzz"
|
||||
desc = "The sister drink of Shambler's Juice! Uses real honey, making it a sweet tooth's dream drink. The slogan reads ''A Hive of Flavour'', there's also a label about how it is adddicting."
|
||||
icon_state = "honeysoda_can"
|
||||
list_reagents = list(/datum/reagent/consumable/buzz_fuzz = 25, /datum/reagent/consumable/honey = 5)
|
||||
list_reagents = list(/datum/reagent/consumable/buzz_fuzz = 30)
|
||||
foodtype = SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/soda_cans/grey_bull
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
/obj/item/weldingtool = 3,
|
||||
/obj/item/wirecutters = 2,
|
||||
/obj/item/wrench = 4,
|
||||
/obj/item/weaponcrafting/improvised_parts/shotgun_receiver = 1,
|
||||
/obj/item/weaponcrafting/receiver = 1,
|
||||
/obj/item/geiger_counter = 3,
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = 5,
|
||||
/obj/item/assembly/infra = 1,
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
l_pocket = /obj/item/pda/roboticist
|
||||
ears = /obj/item/radio/headset/headset_sci
|
||||
uniform = /obj/item/clothing/under/rank/rnd/roboticist
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat/roboticist
|
||||
|
||||
backpack = /obj/item/storage/backpack/science
|
||||
satchel = /obj/item/storage/backpack/satchel/tox
|
||||
|
||||
@@ -304,10 +304,16 @@
|
||||
emote("wag")
|
||||
|
||||
else if(check_zone(M.zone_selected) == BODY_ZONE_R_ARM || check_zone(M.zone_selected) == BODY_ZONE_L_ARM)
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] shakes [src]'s hand.</span>", \
|
||||
"<span class='notice'>You shake [src]'s hand.</span>", target = src,
|
||||
target_message = "<span class='notice'>[M] shakes your hand.</span>")
|
||||
if((pulling == M) && (grab_state == GRAB_PASSIVE))
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] squeezes [src]'s hand.</span>", \
|
||||
"<span class='notice'>You squeeze [src]'s hand.</span>", target = src,
|
||||
target_message = "<span class='notice'>[M] squeezes your hand.</span>")
|
||||
else
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] shakes [src]'s hand.</span>", \
|
||||
"<span class='notice'>You shake [src]'s hand.</span>", target = src,
|
||||
target_message = "<span class='notice'>[M] shakes your hand.</span>")
|
||||
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] hugs [src] to make [p_them()] feel better!</span>", \
|
||||
|
||||
@@ -426,6 +426,10 @@
|
||||
//Misc
|
||||
.["Cyborg - Misc (dog - blade)"] = process_holoform_icon_filter(icon('modular_citadel/icons/mob/widerobot.dmi', "blade"), HOLOFORM_FILTER_PAI, FALSE)
|
||||
|
||||
// Gorillas
|
||||
.["Gorilla (standing)"] = process_holoform_icon_filter(icon('icons/mob/gorilla.dmi', "standing"), HOLOFORM_FILTER_PAI, FALSE)
|
||||
.["Gorilla (crawling)"] = process_holoform_icon_filter(icon('icons/mob/gorilla.dmi', "crawling"), HOLOFORM_FILTER_PAI, FALSE)
|
||||
|
||||
/mob/living/silicon/pai/proc/default_chassis_pixel_offsets_x()
|
||||
. = list()
|
||||
//Engi
|
||||
|
||||
@@ -94,16 +94,17 @@
|
||||
consume_bait()
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/proc/consume_bait()
|
||||
var/obj/item/stack/ore/diamond/diamonds = locate(/obj/item/stack/ore/diamond) in oview(src, 9)
|
||||
var/obj/item/pen/survival/bait = locate(/obj/item/pen/survival) in oview(src, 9)
|
||||
if(!diamonds && !bait)
|
||||
return
|
||||
var/list/L = list()
|
||||
for(var/obj/O in view(src, 9))
|
||||
L += O
|
||||
var/obj/item/stack/ore/diamond/diamonds = locate(/obj/item/stack/ore/diamond) in L
|
||||
if(diamonds)
|
||||
var/distanced = 0
|
||||
distanced = get_dist(loc,diamonds.loc)
|
||||
if(distanced <= 1 && diamonds)
|
||||
qdel(diamonds)
|
||||
src.visible_message("<span class='notice'>[src] consumes [diamonds], and it disappears! ...At least, you think.</span>")
|
||||
var/obj/item/pen/survival/bait = locate(/obj/item/pen/survival) in L
|
||||
if(bait)
|
||||
var/distanceb = 0
|
||||
distanceb = get_dist(loc,bait.loc)
|
||||
|
||||
@@ -373,7 +373,6 @@
|
||||
sawn_off = TRUE
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
|
||||
|
||||
/obj/item/gun/ballistic/revolver/reverse //Fires directly at its user... unless the user is a clown, of course.
|
||||
clumsy_check = 0
|
||||
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
pump()
|
||||
return TRUE
|
||||
|
||||
// DOUBLE BARRELED SHOTGUN and IMPROVISED SHOTGUN are in revolver.dm
|
||||
//due to code weirdness, and the fact that a refactor is coming soon anyway, the barman's shotgun and maint shotgun are in revolver.dm
|
||||
|
||||
/obj/item/gun/ballistic/shotgun/doublebarrel/hook
|
||||
name = "hook modified sawn-off shotgun"
|
||||
|
||||
@@ -173,18 +173,60 @@
|
||||
force = 15
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv)
|
||||
|
||||
//Sci guns
|
||||
|
||||
/obj/item/gun/energy/gravity_gun
|
||||
name = "one-point gravitational manipulator"
|
||||
desc = "An experimental, multi-mode device that fires bolts of Zero-Point Energy, causing local distortions in gravity. Requires an anomaly core to function."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/gravity/repulse, /obj/item/ammo_casing/energy/gravity/attract, /obj/item/ammo_casing/energy/gravity/chaos)
|
||||
item_state = "gravity_gun"
|
||||
icon_state = "gravity_gun"
|
||||
var/power = 4
|
||||
var/firing_core = FALSE
|
||||
|
||||
/obj/item/gun/energy/gravity_gun/attackby(obj/item/C, mob/user)
|
||||
if(istype(C, /obj/item/assembly/signaler/anomaly))
|
||||
to_chat(user, "<span class='notice'>You insert [C] into the gravitational manipulator and the weapon gently hums to life.</span>")
|
||||
firing_core = TRUE
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
|
||||
qdel(C)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/energy/gravity_gun/can_shoot()
|
||||
if(!firing_core)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/energy/wormhole_projector
|
||||
name = "bluespace wormhole projector"
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams."
|
||||
desc = "A projector that emits high density quantum-coupled bluespace beams. Requires an anomaly core to function."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/wormhole, /obj/item/ammo_casing/energy/wormhole/orange)
|
||||
item_state = null
|
||||
icon_state = "wormhole_projector"
|
||||
pin = null
|
||||
inaccuracy_modifier = 0.25
|
||||
automatic_charge_overlays = FALSE
|
||||
var/obj/effect/portal/p_blue
|
||||
var/obj/effect/portal/p_orange
|
||||
var/atmos_link = FALSE
|
||||
var/firing_core = FALSE
|
||||
|
||||
/obj/item/gun/energy/wormhole_projector/attackby(obj/item/C, mob/user)
|
||||
if(istype(C, /obj/item/assembly/signaler/anomaly))
|
||||
to_chat(user, "<span class='notice'>You insert [C] into the wormhole projector and the weapon gently hums to life.</span>")
|
||||
firing_core = TRUE
|
||||
playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE)
|
||||
qdel(C)
|
||||
return
|
||||
|
||||
/obj/item/gun/energy/wormhole_projector/can_shoot()
|
||||
if(!firing_core)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/gun/energy/wormhole_projector/shoot_with_empty_chamber(mob/living/user)
|
||||
. = ..()
|
||||
to_chat(user, "<span class='danger'>The display says, 'NO CORE INSTALLED'.</span>")
|
||||
|
||||
/obj/item/gun/energy/wormhole_projector/update_icon_state()
|
||||
icon_state = "[initial(icon_state)][current_firemode_index]"
|
||||
@@ -243,6 +285,9 @@
|
||||
p_blue = P
|
||||
crosslink()
|
||||
|
||||
/obj/item/gun/energy/wormhole_projector/core_inserted
|
||||
firing_core = TRUE
|
||||
|
||||
/* 3d printer 'pseudo guns' for borgs */
|
||||
|
||||
/obj/item/gun/energy/printer
|
||||
@@ -298,18 +343,6 @@
|
||||
/obj/item/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib
|
||||
return
|
||||
|
||||
/obj/item/gun/energy/gravity_gun
|
||||
name = "one-point bluespace-gravitational manipulator"
|
||||
desc = "An experimental, multi-mode device that fires bolts of Zero-Point Energy, causing local distortions in gravity."
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/gravity/repulse, /obj/item/ammo_casing/energy/gravity/attract, /obj/item/ammo_casing/energy/gravity/chaos)
|
||||
item_state = "gravity_gun"
|
||||
icon_state = "gravity_gun"
|
||||
pin = null
|
||||
var/power = 4
|
||||
|
||||
/obj/item/gun/energy/gravity_gun/security
|
||||
pin = /obj/item/firing_pin
|
||||
|
||||
//Emitter Gun
|
||||
|
||||
/obj/item/gun/energy/emitter
|
||||
|
||||
@@ -20,8 +20,9 @@
|
||||
newcasing.modified = modified
|
||||
var/obj/item/projectile/bullet/reusable/foam_dart/newdart = newcasing.BB
|
||||
newdart.modified = modified
|
||||
newdart.damage = damage
|
||||
newdart.nodamage = nodamage
|
||||
if(modified)
|
||||
newdart.damage = 5
|
||||
newdart.nodamage = FALSE
|
||||
newdart.damage_type = damage_type
|
||||
if(pen)
|
||||
newdart.pen = pen
|
||||
|
||||
@@ -625,8 +625,9 @@
|
||||
myseed.adjust_potency(round(chems.get_reagent_amount(src.type) * 0.5))
|
||||
|
||||
/datum/reagent/consumable/buzz_fuzz/on_mob_life(mob/living/carbon/M)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/sugar,1)
|
||||
if(prob(5))
|
||||
if(prob(33))
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/sugar,1)
|
||||
if(prob(1))
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/honey,1)
|
||||
..()
|
||||
|
||||
|
||||
@@ -1125,7 +1125,7 @@
|
||||
/datum/reagent/space_cleaner/sterilizine/reaction_obj(obj/O, reac_volume)
|
||||
if(istype(O, /obj/item/stack/medical/gauze))
|
||||
var/obj/item/stack/medical/gauze/G = O
|
||||
reac_volume = min((reac_volume / 10), G.amount)
|
||||
reac_volume = min((reac_volume / 5), G.amount)
|
||||
new /obj/item/stack/medical/gauze/adv(get_turf(G), reac_volume)
|
||||
G.use(reac_volume)
|
||||
|
||||
|
||||
@@ -74,12 +74,12 @@
|
||||
build_path = /obj/item/restraints/handcuffs
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/rifle_receiver
|
||||
name = "Rifle Receiver"
|
||||
id = "rifle_receiver"
|
||||
/datum/design/reciever
|
||||
name = "Modular Receiver"
|
||||
id = "modular_receiver"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/iron = 24000)
|
||||
build_path = /obj/item/weaponcrafting/improvised_parts/rifle_receiver
|
||||
build_path = /obj/item/weaponcrafting/receiver
|
||||
category = list("hacked", "Security")
|
||||
|
||||
/datum/design/shotgun_slug
|
||||
|
||||
@@ -282,10 +282,3 @@
|
||||
build_path = /obj/item/vending_refill/custom
|
||||
category = list("initial", "Misc")
|
||||
|
||||
/datum/design/trigger_assembly
|
||||
name = "Trigger Assembly"
|
||||
id = "trigger_assembly"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/iron = 6500, /datum/material/glass = 50)
|
||||
build_path = /obj/item/weaponcrafting/improvised_parts/trigger_assembly
|
||||
category = list("initial", "Misc")
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
invocation_type = "shout"
|
||||
level_max = 0
|
||||
cooldown_min = 100
|
||||
action_icon = 'icons/obj/magic.dmi'
|
||||
action_icon_state = "iconmantra"
|
||||
|
||||
/obj/effect/proc_holder/spell/self/mantra/cast(mob/living/carbon/human/user)
|
||||
if(user.has_status_effect(STATUS_EFFECT_MANTRA))
|
||||
@@ -27,6 +29,8 @@
|
||||
invocation_type = "shout"
|
||||
level_max = 0
|
||||
cooldown_min = 100
|
||||
action_icon = 'icons/obj/magic.dmi'
|
||||
action_icon_state = "iconasura"
|
||||
|
||||
/obj/effect/proc_holder/spell/self/asura/cast(mob/living/carbon/human/user)
|
||||
if(user.has_status_effect(STATUS_EFFECT_ASURA))
|
||||
|
||||
@@ -297,6 +297,7 @@
|
||||
owner.update_stamina()
|
||||
consider_processing()
|
||||
update_disabled()
|
||||
update_threshhold_state()
|
||||
return update_bodypart_damage_state()
|
||||
|
||||
/// Allows us to roll for and apply a wound without actually dealing damage. Used for aggregate wounding power with pellet clouds
|
||||
@@ -475,6 +476,7 @@
|
||||
owner.updatehealth()
|
||||
consider_processing()
|
||||
update_disabled()
|
||||
update_threshhold_state()
|
||||
return update_bodypart_damage_state()
|
||||
|
||||
//Returns total damage.
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name = "KinkMate"
|
||||
desc = "A vending machine for all your unmentionable desires."
|
||||
icon_state = "kink"
|
||||
circuit = /obj/item/circuitboard/machine/kinkmate
|
||||
product_slogans = "Kinky!;Sexy!;Check me out, big boy!"
|
||||
vend_reply = "Have fun, you shameless pervert!"
|
||||
products = list(
|
||||
|
||||
@@ -34,7 +34,8 @@
|
||||
/obj/item/healthanalyzer/wound = 4,
|
||||
/obj/item/stack/medical/ointment = 2,
|
||||
/obj/item/stack/medical/suture = 2,
|
||||
/obj/item/stack/medical/bone_gel = 4)
|
||||
/obj/item/stack/medical/bone_gel = 4,
|
||||
/obj/item/stack/medical/nanogel = 4)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 3,
|
||||
/obj/item/reagent_containers/pill/morphine = 4,
|
||||
/obj/item/reagent_containers/pill/charcoal = 6)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
/obj/item/reagent_containers/medspray/sterilizine = 1,
|
||||
/obj/item/healthanalyzer/wound = 2,
|
||||
/obj/item/stack/medical/bone_gel = 2,
|
||||
/obj/item/stack/medical/nanogel = 2,
|
||||
/obj/item/reagent_containers/syringe/dart = 10)
|
||||
contraband = list(/obj/item/reagent_containers/pill/tox = 2,
|
||||
/obj/item/reagent_containers/pill/morphine = 2)
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
/obj/item/tank/internals/anesthetic = 2,
|
||||
/obj/item/clothing/mask/breath/medical = 5,
|
||||
/obj/item/screwdriver = 5,
|
||||
/obj/item/crowbar = 5)
|
||||
/obj/item/crowbar = 6,
|
||||
/obj/item/stack/medical/nanogel = 5)
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
default_price = PRICE_EXPENSIVE
|
||||
|
||||
@@ -212,7 +212,7 @@
|
||||
/obj/item/clothing/under/rank/rnd/roboticist/sleek = 3,
|
||||
/obj/item/clothing/under/rank/rnd/roboticist/skirt = 3,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/robotics = 3,
|
||||
/obj/item/clothing/suit/toggle/labcoat = 3,
|
||||
/obj/item/clothing/suit/toggle/labcoat/roboticist = 3,
|
||||
/obj/item/clothing/shoes/sneakers/black = 3,
|
||||
/obj/item/clothing/gloves/fingerless = 3,
|
||||
/obj/item/clothing/head/soft/black = 3,
|
||||
|
||||
@@ -359,6 +359,10 @@
|
||||
if(QDELETED(tasted) || (tasted.ckey && !(tasted.client?.prefs.vore_flags & LICKABLE)) || !Adjacent(tasted) || incapacitated(ignore_restraints = TRUE))
|
||||
return
|
||||
|
||||
if(ishuman(tasted))
|
||||
var/mob/living/carbon/human/H = tasted
|
||||
H.wash_cream()
|
||||
|
||||
visible_message("<span class='warning'>[src] licks [tasted]!</span>","<span class='notice'>You lick [tasted]. They taste rather like [tasted.get_taste_message()].</span>","<b>Slurp!</b>")
|
||||
|
||||
/mob/living/proc/get_taste_message(allow_generic = TRUE, datum/species/mrace)
|
||||
|
||||
Reference in New Issue
Block a user