Merge branch 'master' into ok-listen-its-an-accident
This commit is contained in:
@@ -270,13 +270,15 @@
|
||||
|
||||
/datum/antagonist/bloodsucker/AmFinalDeath()
|
||||
return owner && owner.AmFinalDeath()
|
||||
/datum/antagonist/changeling/AmFinalDeath()
|
||||
return owner && owner.AmFinalDeath()
|
||||
|
||||
/datum/mind/proc/AmFinalDeath()
|
||||
return !current || QDELETED(current) || !isliving(current) || isbrain(current) || !get_turf(current) // NOTE: "isliving()" is not the same as STAT == CONSCIOUS. This is to make sure you're not a BORG (aka silicon)
|
||||
|
||||
/datum/antagonist/bloodsucker/proc/FinalDeath()
|
||||
//Dont bother if we are already supposed to be dead
|
||||
if(FinalDeath)
|
||||
return
|
||||
FinalDeath = TRUE //We are now supposed to die. Lets not spam it.
|
||||
if(!iscarbon(owner.current)) //Check for non carbons.
|
||||
owner.current.gib()
|
||||
return
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
var/level_bloodcost
|
||||
var/passive_blood_drain = -0.1 //The amount of blood we loose each bloodsucker life() tick
|
||||
var/notice_healing //Var to see if you are healing for preventing spam of the chat message inform the user of such
|
||||
var/FinalDeath //Have we reached final death? Used to prevent spam.
|
||||
// LISTS
|
||||
var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_NIGHT_VISION, \
|
||||
TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_VIRUSIMMUNE, TRAIT_NODECAP, TRAIT_NOGUT)
|
||||
@@ -683,6 +684,8 @@
|
||||
owner.current.hud_used.sunlight_display.invisibility = INVISIBILITY_ABSTRACT
|
||||
|
||||
/datum/antagonist/bloodsucker/proc/update_hud(updateRank=FALSE)
|
||||
if(FinalDeath)
|
||||
return
|
||||
// No Hud? Get out.
|
||||
if(!owner.current.hud_used)
|
||||
return
|
||||
|
||||
@@ -2800,6 +2800,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(custom_tongue != "default")
|
||||
var/new_tongue = GLOB.roundstart_tongues[custom_tongue]
|
||||
if(new_tongue)
|
||||
character.dna.species.mutanttongue = new_tongue //this means we get our tongue when we clone
|
||||
var/obj/item/organ/tongue/T = character.getorganslot(ORGAN_SLOT_TONGUE)
|
||||
if(T)
|
||||
qdel(T)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/datum/round_event_control/travelling_trader
|
||||
name = "Travelling Trader"
|
||||
typepath = /datum/round_event/travelling_trader
|
||||
weight = 10
|
||||
max_occurrences = 3
|
||||
weight = 8
|
||||
max_occurrences = 2
|
||||
earliest_start = 0 MINUTES
|
||||
|
||||
/datum/round_event/travelling_trader
|
||||
@@ -52,6 +52,14 @@
|
||||
var/acceptance_speech = "This is exactly what I wanted! I shall be on my way now, thank you.!"
|
||||
var/refusal_speech = "A given_item? I wanted a requested_item!" //what they say when refusing an item
|
||||
var/active = TRUE
|
||||
var/examine_text = list("<span class='warning'>You attempt to look directly at the being's face, but it's just a blur!")
|
||||
move_resist = MOVE_FORCE_VERY_STRONG
|
||||
mob_size = MOB_SIZE_LARGE
|
||||
alpha = 200
|
||||
|
||||
/mob/living/carbon/human/dummy/travelling_trader/examine(mob/user)
|
||||
SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, examine_text)
|
||||
return examine_text
|
||||
|
||||
/mob/living/carbon/human/dummy/travelling_trader/proc/setup_speech(var/input_speech, var/obj/item/given_item)
|
||||
if(requested_item)
|
||||
@@ -92,6 +100,8 @@
|
||||
|
||||
/mob/living/carbon/human/dummy/travelling_trader/Initialize()
|
||||
..()
|
||||
add_atom_colour("#570d6b", FIXED_COLOUR_PRIORITY) //make them purple (otherworldly!)
|
||||
set_light(1, -0.7, "#AAD84B")
|
||||
ADD_TRAIT(src,TRAIT_PIERCEIMMUNE, "trader_pierce_immune") //don't let people take their blood
|
||||
equipOutfit(trader_outfit, TRUE)
|
||||
for(var/obj/item/item in src.get_equipped_items())
|
||||
@@ -159,15 +169,11 @@
|
||||
trader_name = "Otherworldly Animal Specialist"
|
||||
trader_outfit = /datum/outfit/job/doctor
|
||||
initial_speech = "Greetings, lifeform. I am here to locate a special creature aboard your station."
|
||||
request_speech = "Find me the creature known as 'requested_item' and you shall be rewarded for your efforts."
|
||||
request_speech = "Find me the creature known as 'requested_item' and hand it to me, preferably in a suitable container."
|
||||
refusal_speech = "Do you think me to be a fool, lifeform? I know a requested_item when I see one."
|
||||
possible_wanted_items = list(/mob/living/simple_animal/pet/dog/corgi/Ian = 1,
|
||||
/mob/living/simple_animal/sloth/paperwork = 1,
|
||||
/mob/living/carbon/monkey/punpun = 1,
|
||||
/mob/living/simple_animal/pet/fox/Renault = 1,
|
||||
/mob/living/simple_animal/hostile/carp/cayenne = 1,
|
||||
/mob/living/simple_animal/pet/bumbles = 1,
|
||||
/mob/living/simple_animal/parrot/Poly = 1)
|
||||
possible_wanted_items = list(/mob/living/simple_animal/pet/dog/corgi = 4,
|
||||
/mob/living/carbon/monkey = 1,
|
||||
/mob/living/simple_animal/mouse = 2)
|
||||
possible_rewards = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi = 1, //rewards are animals, friendly to only the person who handed the reward in!
|
||||
/mob/living/simple_animal/cockroach = 1,
|
||||
/mob/living/simple_animal/hostile/skeleton = 1,
|
||||
@@ -184,13 +190,6 @@
|
||||
|
||||
mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize()
|
||||
acceptance_speech = pick(list("This lifeform shall make for a great stew, thank you.", "This lifeform shall be of a true use to our cause, thank you.", "The lifeform is adequate. Goodbye.", "This lifeform shall make a great addition to my collection."))
|
||||
//make sure they only ask for animals that are still alive
|
||||
for(var/mob/living/animal in possible_wanted_items)
|
||||
if(!(animal in GLOB.mob_living_list))
|
||||
possible_wanted_items -= animal
|
||||
if(!possible_wanted_items)
|
||||
//all the pets are dead, so ask for a monkey, or sometimes a corgi (corgis are more annoying to get a hold of)
|
||||
possible_wanted_items = list(/mob/living/simple_animal/pet/dog/corgi = 1, /mob/living/carbon/monkey = 3)
|
||||
..()
|
||||
|
||||
/mob/living/carbon/human/dummy/travelling_trader/animal_hunter/check_item(var/obj/item/supplied_item) //item is likely to be in contents of whats supplied
|
||||
|
||||
@@ -299,6 +299,31 @@
|
||||
desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea."
|
||||
list_reagents = list(/datum/reagent/consumable/tea = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/red
|
||||
name = "Dutchess Red tea"
|
||||
icon_state = "tea"
|
||||
desc = "Duchess Red's personal blend of red tea leaves and hot water. Great addition to any meal."
|
||||
list_reagents = list(/datum/reagent/consumable/tea/red = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/green
|
||||
name = "Prince Green tea"
|
||||
icon_state = "tea"
|
||||
desc = "Prince Green's brew of tea. The blend may be different from time to time, but Prince Green swears by it!"
|
||||
list_reagents = list(/datum/reagent/consumable/tea/green = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/forest
|
||||
name = "Royal Forest tea"
|
||||
icon_state = "tea"
|
||||
desc = "Tea fit for anyone with a sweet tooth like Royal Forest."
|
||||
list_reagents = list(/datum/reagent/consumable/tea/forest = 30)
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/mush
|
||||
name = "Rebel Mush tea"
|
||||
icon_state = "tea"
|
||||
desc = "Rebel Mush, a hallucinogenic tea to help people find their inner self."
|
||||
list_reagents = list(/datum/reagent/consumable/tea/mush = 30)
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco
|
||||
name = "Dutch hot coco"
|
||||
desc = "Made in Space South America."
|
||||
|
||||
@@ -18,12 +18,6 @@
|
||||
results = list(/datum/reagent/consumable/ethanol/bilk = 2)
|
||||
required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ethanol/beer = 1)
|
||||
|
||||
/datum/chemical_reaction/icetea
|
||||
name = "Iced Tea"
|
||||
id = /datum/reagent/consumable/icetea
|
||||
results = list(/datum/reagent/consumable/icetea = 4)
|
||||
required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/icecoffee
|
||||
name = "Iced Coffee"
|
||||
id = /datum/reagent/consumable/icecoffee
|
||||
@@ -581,13 +575,6 @@
|
||||
required_reagents = list(/datum/reagent/consumable/lemonjuice = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ice = 1)
|
||||
mix_message = "You're suddenly reminded of home."
|
||||
|
||||
/datum/chemical_reaction/arnold_palmer
|
||||
name = "Arnold Palmer"
|
||||
id = /datum/reagent/consumable/tea/arnold_palmer
|
||||
results = list(/datum/reagent/consumable/tea/arnold_palmer = 2)
|
||||
required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1)
|
||||
mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange."
|
||||
|
||||
/datum/chemical_reaction/chocolate_milk
|
||||
name = "chocolate milk"
|
||||
id = /datum/reagent/consumable/milk/chocolate_milk
|
||||
@@ -756,12 +743,6 @@
|
||||
results = list(/datum/reagent/consumable/pinkmilk = 2)
|
||||
required_reagents = list(/datum/reagent/consumable/strawberryjuice = 1, /datum/reagent/consumable/milk = 1)
|
||||
|
||||
/datum/chemical_reaction/pinktea
|
||||
name = "Strawberry Tea"
|
||||
id = /datum/reagent/consumable/pinktea
|
||||
results = list(/datum/reagent/consumable/pinktea = 5)
|
||||
required_reagents = list(/datum/reagent/consumable/strawberryjuice = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1)
|
||||
|
||||
/datum/chemical_reaction/blank_paper
|
||||
name = "Blank Paper"
|
||||
id = /datum/reagent/consumable/ethanol/blank_paper
|
||||
@@ -903,12 +884,6 @@
|
||||
results = list(/datum/reagent/consumable/ethanol/mauna_loa = 5)
|
||||
required_reagents = list(/datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/bahama_mama = 2)
|
||||
|
||||
/datum/chemical_reaction/catnip_tea
|
||||
name = "Catnip Tea"
|
||||
id = /datum/reagent/consumable/catnip_tea
|
||||
results = list(/datum/reagent/consumable/catnip_tea = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2)
|
||||
|
||||
/datum/chemical_reaction/commander_and_chief
|
||||
name = "Commander and Chief"
|
||||
id = /datum/reagent/consumable/ethanol/commander_and_chief
|
||||
@@ -916,6 +891,76 @@
|
||||
required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10)
|
||||
mix_message = "When your powers combine, I am Captain Pl-..."
|
||||
|
||||
////////////////////////////////////////// Tea Base Drinks //////////////////////////////////////
|
||||
|
||||
/datum/chemical_reaction/mush
|
||||
name = "Mush Tea"
|
||||
id = /datum/reagent/consumable/tea/mush
|
||||
results = list(/datum/reagent/consumable/tea/mush = 3)
|
||||
required_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 3, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/foresttea1
|
||||
name = "Forest Tea"
|
||||
id = /datum/reagent/consumable/tea/forest
|
||||
results = list(/datum/reagent/consumable/tea/forest = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/buzz_fuzz= 3, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/foresttea2
|
||||
name = "Forest Tea"
|
||||
id = /datum/reagent/consumable/tea/forest
|
||||
results = list(/datum/reagent/consumable/tea/forest = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/redtea1
|
||||
name = "Red Tea"
|
||||
id = /datum/reagent/consumable/tea/red
|
||||
results = list(/datum/reagent/consumable/tea/red = 3)
|
||||
required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/red = 1, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/greentea1
|
||||
name = "Green Tea"
|
||||
id = /datum/reagent/consumable/tea/green
|
||||
results = list(/datum/reagent/consumable/tea/green = 3)
|
||||
required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 1, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/redtea2
|
||||
name = "Red Tea"
|
||||
id = /datum/reagent/consumable/tea/red
|
||||
results = list(/datum/reagent/consumable/tea/red = 3)
|
||||
required_reagents = list(/datum/reagent/toxin/teapowder/red = 1, /datum/reagent/water = 3)
|
||||
|
||||
/datum/chemical_reaction/greentea2
|
||||
name = "Green Tea"
|
||||
id = /datum/reagent/consumable/tea/green
|
||||
results = list(/datum/reagent/consumable/tea/green = 3)
|
||||
required_reagents = list(/datum/reagent/toxin/teapowder/green = 1, /datum/reagent/water = 3)
|
||||
|
||||
/datum/chemical_reaction/arnold_palmer
|
||||
name = "Arnold Palmer"
|
||||
id = /datum/reagent/consumable/tea/arnold_palmer
|
||||
results = list(/datum/reagent/consumable/tea/arnold_palmer = 2)
|
||||
required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1)
|
||||
mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange."
|
||||
|
||||
/datum/chemical_reaction/icetea
|
||||
name = "Iced Tea"
|
||||
id = /datum/reagent/consumable/icetea
|
||||
results = list(/datum/reagent/consumable/icetea = 4)
|
||||
required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3)
|
||||
|
||||
/datum/chemical_reaction/pinktea
|
||||
name = "Strawberry Tea"
|
||||
id = /datum/reagent/consumable/pinktea
|
||||
results = list(/datum/reagent/consumable/pinktea = 5)
|
||||
required_reagents = list(/datum/reagent/consumable/strawberryjuice = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1)
|
||||
|
||||
/datum/chemical_reaction/catnip_tea
|
||||
name = "Catnip Tea"
|
||||
id = /datum/reagent/consumable/catnip_tea
|
||||
results = list(/datum/reagent/consumable/catnip_tea = 3)
|
||||
required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2)
|
||||
|
||||
|
||||
////////////////////////////////////////// Race Base Drinks //////////////////////////////////////
|
||||
|
||||
/datum/chemical_reaction/coldscales
|
||||
|
||||
@@ -81,7 +81,8 @@
|
||||
wine_power = 50
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/ghost_chili/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
if( ismob(loc) )
|
||||
. = ..()
|
||||
if(ishuman(loc))
|
||||
held_mob = loc
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
|
||||
@@ -303,3 +303,19 @@
|
||||
return TRUE
|
||||
var/obj/structure/musician/M = parent
|
||||
return M.should_stop_playing(user)
|
||||
|
||||
/datum/song/holoparasite
|
||||
var/mob/living/simple_animal/hostile/guardian/stand
|
||||
|
||||
/datum/song/holoparasite/New(atom/parent, list/instrument_ids)
|
||||
. = ..()
|
||||
stand = istype(parent, /mob/living/simple_animal/hostile/guardian) && parent
|
||||
|
||||
/datum/song/holoparasite/updateDialog()
|
||||
stand.ui_interact(src)
|
||||
|
||||
/datum/song/holoparasite/should_stop_playing(mob/user)
|
||||
return FALSE
|
||||
|
||||
/datum/song/holoparasite/check_can_use(mob/user)
|
||||
return (user == stand)
|
||||
|
||||
@@ -109,8 +109,11 @@
|
||||
linenum++
|
||||
updateDialog(usr) // make sure updates when complete
|
||||
|
||||
/datum/song/proc/check_can_use(mob/user)
|
||||
return user.canUseTopic(parent, TRUE, FALSE, FALSE, FALSE)
|
||||
|
||||
/datum/song/Topic(href, href_list)
|
||||
if(!usr.canUseTopic(parent, TRUE, FALSE, FALSE, FALSE))
|
||||
if(!check_can_use(usr))
|
||||
usr << browse(null, "window=instrument")
|
||||
usr.unset_machine()
|
||||
return
|
||||
|
||||
@@ -651,11 +651,6 @@
|
||||
icon_state = "setup_small_pda"
|
||||
desc = "It's a case, for building small electronics with. This one resembles a PDA."
|
||||
|
||||
/obj/item/electronic_assembly/dildo
|
||||
name = "type-g electronic assembly"
|
||||
icon_state = "setup_dildo_medium"
|
||||
desc = "It's a case, for building small electronics with. This one has a phallic design."
|
||||
|
||||
/obj/item/electronic_assembly/small
|
||||
name = "electronic device"
|
||||
icon_state = "setup_device"
|
||||
@@ -687,11 +682,6 @@
|
||||
icon_state = "setup_device_box"
|
||||
desc = "It's a case, for building tiny-sized electronics with. This one has a boxy design."
|
||||
|
||||
/obj/item/electronic_assembly/small/dildo
|
||||
name = "type-f electronic device"
|
||||
icon_state = "setup_dildo_small"
|
||||
desc = "It's a case, for building tiny-sized electronics with. This one has a phallic design."
|
||||
|
||||
/obj/item/electronic_assembly/medium
|
||||
name = "electronic mechanism"
|
||||
icon_state = "setup_medium"
|
||||
@@ -732,12 +722,6 @@
|
||||
icon_state = "setup_medium_radio"
|
||||
desc = "It's a case, for building medium-sized electronics with. This one resembles an old radio."
|
||||
|
||||
/obj/item/electronic_assembly/medium/dildo
|
||||
name = "type-g electronic mechanism"
|
||||
icon_state = "setup_dildo_large"
|
||||
desc = "It's a case, for building medium-sized electronics with. This one has a phallic design."
|
||||
|
||||
|
||||
/obj/item/electronic_assembly/large
|
||||
name = "electronic machine"
|
||||
icon_state = "setup_large"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_DETECTIVE
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic)
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/monophobia)
|
||||
threat = 1
|
||||
|
||||
/datum/outfit/job/detective
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/insanity)
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia, /datum/quirk/insanity)
|
||||
threat = 3
|
||||
|
||||
/datum/outfit/job/hos
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic)
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia)
|
||||
threat = 2
|
||||
|
||||
/datum/job/officer/get_access()
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_WARDEN
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic)
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia)
|
||||
threat = 2
|
||||
|
||||
/datum/job/warden/get_access()
|
||||
|
||||
@@ -175,6 +175,20 @@
|
||||
if(light_on)
|
||||
. += "[icon_state]_lit"
|
||||
|
||||
/obj/item/kinetic_crusher/glaive
|
||||
name = "proto-kinetic glaive"
|
||||
desc = "A modified design of a proto-kinetic crusher, it is still little more of a combination of various mining tools cobbled together \
|
||||
and kit-bashed into a high-tech cleaver on a stick - with a handguard and a goliath hide grip. While it is still of little use to any \
|
||||
but the most skilled and/or suicidal miners against local fauna, it's an elegant weapon for a more civilized hunter."
|
||||
attack_verb = list("stabbed", "diced", "sliced", "cleaved", "chopped", "lacerated", "cut", "jabbed", "punctured")
|
||||
icon_state = "crusher-glaive"
|
||||
item_state = "crusher0-glaive"
|
||||
//ideas: altclick that lets you pummel people with the handguard/handle?
|
||||
//parrying functionality?
|
||||
|
||||
/obj/item/kinetic_crusher/glaive/update_icon_state()
|
||||
item_state = "crusher[wielded]-glaive" // this is not icon_state and not supported by 2hcomponent
|
||||
|
||||
//destablizing force
|
||||
/obj/item/projectile/destabilizer
|
||||
name = "destabilizing force"
|
||||
|
||||
@@ -930,6 +930,9 @@
|
||||
|
||||
/obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
INVOKE_ASYNC(src, .proc/attempt_lava, target, user, proximity_flag, click_parameters)
|
||||
|
||||
/obj/item/lava_staff/proc/attempt_lava(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
if(timer > world.time)
|
||||
return
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500),
|
||||
new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600),
|
||||
new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750),
|
||||
new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750),
|
||||
new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750),
|
||||
new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750),
|
||||
new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750),
|
||||
new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 800),
|
||||
@@ -68,6 +68,7 @@
|
||||
new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150),
|
||||
new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250),
|
||||
new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300),
|
||||
new /datum/data/mining_equipment("Kinetic Glaive", /obj/item/kinetic_crusher/glaive, 1500),
|
||||
new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000),
|
||||
new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000),
|
||||
new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000),
|
||||
|
||||
@@ -441,7 +441,7 @@
|
||||
to_chat(user, "You cannot send IC messages (muted).")
|
||||
return FALSE
|
||||
else if(!params)
|
||||
var/custom_emote = stripped_multiline_input(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN)
|
||||
var/custom_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN)
|
||||
if(custom_emote && !check_invalid(user, custom_emote))
|
||||
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
|
||||
switch(type)
|
||||
|
||||
@@ -3,8 +3,14 @@
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
|
||||
/datum/emote/sound/silicon
|
||||
mob_type_allowed_typecache = list(/mob/living/silicon)
|
||||
mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human)
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
var/unrestricted = FALSE
|
||||
|
||||
/datum/emote/sound/silicon/run_emote(mob/user, params)
|
||||
if(!unrestricted && !(issilicon(user) || isipcperson(user)))
|
||||
return
|
||||
return ..()
|
||||
|
||||
/datum/emote/silicon/boop
|
||||
key = "boop"
|
||||
|
||||
@@ -60,11 +60,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
var/magic_fluff_string = "<span class='holoparasite'>You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!</span>"
|
||||
var/tech_fluff_string = "<span class='holoparasite'>BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!</span>"
|
||||
var/carp_fluff_string = "<span class='holoparasite'>CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP</span>"
|
||||
/// sigh, fine.
|
||||
var/datum/song/holoparasite/music_datum
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/Initialize(mapload, theme)
|
||||
GLOB.parasites += src
|
||||
updatetheme(theme)
|
||||
|
||||
music_datum = new(src, get_allowed_instrument_ids())
|
||||
. = ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/med_hud_set_health()
|
||||
@@ -84,8 +86,16 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/Destroy()
|
||||
GLOB.parasites -= src
|
||||
QDEL_NULL(music_datum)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/verb/music_interact()
|
||||
set name = "Access Internal Synthesizer"
|
||||
set desc = "Access your internal musical synthesizer"
|
||||
set category = "IC"
|
||||
|
||||
music_datum.ui_interact(src)
|
||||
|
||||
/mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme
|
||||
if(!theme)
|
||||
theme = pick("magic", "tech", "carp")
|
||||
@@ -638,6 +648,12 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
/obj/item/guardiancreator/tech/choose/dextrous
|
||||
possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support")
|
||||
|
||||
/obj/item/guardiancreator/tech/choose/nukie // lacks support and protector as encouraging nukies to play turtle isnt fun and dextrous is epic
|
||||
possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Ranged", "Standard")
|
||||
|
||||
/obj/item/guardiancreator/tech/choose/nukie/check_uplink_validity()
|
||||
return !used
|
||||
|
||||
/obj/item/paper/guides/antag/guardian
|
||||
name = "Holoparasite Guide"
|
||||
icon_state = "paper_words"
|
||||
@@ -677,7 +693,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
<br>
|
||||
<b>Charger</b>: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.<br>
|
||||
<br>
|
||||
<b>Dexterous</b>: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.<br>
|
||||
<b>Dextrous</b>: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.<br>
|
||||
<br>
|
||||
<b>Explosive</b>: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.<br>
|
||||
<br>
|
||||
@@ -691,6 +707,29 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
<br>
|
||||
"}
|
||||
|
||||
/obj/item/paper/guides/antag/guardian/nukie
|
||||
name = "Guardian Guide"
|
||||
info = {"<b>A list of Guardian Types</b><br>
|
||||
|
||||
<br>
|
||||
<b>Assassin</b>: Does medium damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.<br>
|
||||
<br>
|
||||
<b>Chaos</b>: Ignites enemies on touch and causes them to hallucinate all nearby people as the guardian. Automatically extinguishes the user if they catch on fire.<br>
|
||||
<br>
|
||||
<b>Charger</b>: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.<br>
|
||||
<br>
|
||||
<b>Dextrous</b>: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.<br>
|
||||
<br>
|
||||
<b>Explosive</b>: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.<br>
|
||||
<br>
|
||||
<b>Lightning</b>: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.<br>
|
||||
<br>
|
||||
<b>Ranged</b>: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.<br>
|
||||
<br>
|
||||
<b>Standard</b>: Devastating close combat attacks and high damage resist. Can smash through weak walls.<br>
|
||||
<br>
|
||||
"}
|
||||
|
||||
|
||||
/obj/item/storage/box/syndie_kit/guardian
|
||||
name = "holoparasite injector kit"
|
||||
@@ -699,6 +738,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
|
||||
new /obj/item/guardiancreator/tech/choose/traitor(src)
|
||||
new /obj/item/paper/guides/antag/guardian(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/nukieguardian
|
||||
name = "holoparasite injector kit"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/nukieguardian/PopulateContents()
|
||||
new /obj/item/guardiancreator/tech/choose/nukie(src)
|
||||
new /obj/item/paper/guides/antag/guardian/nukie(src)
|
||||
|
||||
/obj/item/guardiancreator/carp
|
||||
name = "holocarp fishsticks"
|
||||
desc = "Using the power of Carp'sie, you can catch a carp from byond the veil of Carpthulu, and bind it to your fleshy flesh form."
|
||||
|
||||
@@ -161,4 +161,4 @@
|
||||
/// The timer that will remove our indicator for early aborts (like when an user finishes their message)
|
||||
var/typing_indicator_timerid
|
||||
/// Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
|
||||
var/typing_indicator_current
|
||||
var/mutable_appearance/typing_indicator_current
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
if(GLOB.say_disabled) //This is here to try to identify lag problems
|
||||
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
|
||||
return
|
||||
|
||||
if(length(message) > MAX_MESSAGE_LEN)
|
||||
to_chat(usr, message)
|
||||
to_chat(usr, "<span class='danger'>^^^----- The preceeding message has been DISCARDED for being over the maximum length of [MAX_MESSAGE_LEN]. It has NOT been sent! -----^^^</span>")
|
||||
return
|
||||
|
||||
message = trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN))
|
||||
clear_typing_indicator() // clear it immediately!
|
||||
|
||||
@@ -37,7 +37,7 @@ proc/get_top_level_mob(var/mob/S)
|
||||
to_chat(user, "You cannot send IC messages (muted).")
|
||||
return FALSE
|
||||
else if(!params)
|
||||
var/subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN)
|
||||
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN)
|
||||
if(subtle_emote && !check_invalid(user, subtle_emote))
|
||||
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
|
||||
switch(type)
|
||||
@@ -98,7 +98,7 @@ proc/get_top_level_mob(var/mob/S)
|
||||
to_chat(user, "You cannot send IC messages (muted).")
|
||||
return FALSE
|
||||
else if(!params)
|
||||
var/subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
|
||||
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
|
||||
if(subtle_emote && !check_invalid(user, subtle_emote))
|
||||
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
|
||||
switch(type)
|
||||
|
||||
@@ -15,13 +15,23 @@ GLOBAL_LIST_EMPTY(typing_indicator_overlays)
|
||||
/mob/proc/get_typing_indicator_icon_state()
|
||||
return typing_indicator_state
|
||||
|
||||
/// Generates the mutable appearance for typing indicator. Should prevent stuck overlays.
|
||||
/mob/proc/generate_typing_indicator()
|
||||
var/state = get_typing_indicator_icon_state()
|
||||
if(ispath(state))
|
||||
var/atom/thing = new state(null)
|
||||
var/mutable_appearance/generated = new(thing)
|
||||
return generated
|
||||
else
|
||||
CRASH("Unsupported typing indicator state: [state]")
|
||||
|
||||
/**
|
||||
* Displays typing indicator.
|
||||
* @param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout
|
||||
* @param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state()
|
||||
* @param force - shows even if src.typing_indcator_enabled is FALSE.
|
||||
*/
|
||||
/mob/proc/display_typing_indicator(timeout_override = TYPING_INDICATOR_TIMEOUT, state_override = get_typing_indicator_icon_state(), force = FALSE)
|
||||
/mob/proc/display_typing_indicator(timeout_override = TYPING_INDICATOR_TIMEOUT, state_override = generate_typing_indicator(), force = FALSE)
|
||||
if((!typing_indicator_enabled && !force) || typing_indicator_current)
|
||||
return
|
||||
typing_indicator_current = state_override
|
||||
|
||||
@@ -323,6 +323,83 @@
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/consumable/tea/red
|
||||
name = "Red Tea"
|
||||
description = "Tasty red tea, helps the body digest food. Drink in moderation!"
|
||||
color = "#101000" // rgb: 16, 16, 0
|
||||
nutriment_factor = 0
|
||||
taste_description = "sweet red tea"
|
||||
glass_icon_state = "teaglass"
|
||||
glass_name = "glass of red tea"
|
||||
glass_desc = "A piping hot tea that helps with the digestion of food."
|
||||
|
||||
/datum/reagent/consumable/tea/red/on_mob_life(mob/living/carbon/M)
|
||||
if(M.nutrition > NUTRITION_LEVEL_HUNGRY)
|
||||
M.adjust_nutrition(-3)
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
M.drowsyness = max(0,M.drowsyness-1)
|
||||
M.jitteriness = max(0,M.jitteriness-3)
|
||||
M.adjust_bodytemperature(23 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
|
||||
. = 1
|
||||
|
||||
/datum/reagent/consumable/tea/green
|
||||
name = "Green Tea"
|
||||
description = "Tasty green tea, known to heal livers, it's good for you!"
|
||||
color = "#101000" // rgb: 16, 16, 0
|
||||
nutriment_factor = 0
|
||||
taste_description = "tart green tea"
|
||||
glass_icon_state = "teaglass"
|
||||
glass_name = "glass of tea"
|
||||
glass_desc = "A calming glass of green tea to help get you through the day."
|
||||
|
||||
/datum/reagent/consumable/tea/green/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LIVER, -0.5) //Detox!
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
M.drowsyness = max(0,M.drowsyness-1)
|
||||
M.jitteriness = max(0,M.jitteriness-3)
|
||||
M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
|
||||
. = 1
|
||||
|
||||
/datum/reagent/consumable/tea/forest
|
||||
name = "Forest Tea"
|
||||
description = "Tea mixed with honey, has both antitoxins and sweetness in one!"
|
||||
color = "#101000" // rgb: 16, 16, 0
|
||||
nutriment_factor = 0
|
||||
quality = DRINK_NICE
|
||||
taste_description = "sweet tea"
|
||||
glass_icon_state = "teaglass"
|
||||
glass_name = "glass of forest tea"
|
||||
glass_desc = "A lovely glass of tea and honey."
|
||||
|
||||
/datum/reagent/consumable/tea/forest/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getToxLoss() && prob(40))//Two anti-toxins working here
|
||||
M.adjustToxLoss(-1, 0, TRUE) //heals TOXINLOVERs
|
||||
//Reminder that honey heals toxin lovers
|
||||
M.dizziness = max(0,M.dizziness-2)
|
||||
M.drowsyness = max(0,M.drowsyness-1)
|
||||
M.jitteriness = max(0,M.jitteriness-3)
|
||||
M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
|
||||
. = 1
|
||||
|
||||
/datum/reagent/consumable/tea/mush
|
||||
name = "Mush Tea"
|
||||
description = "Tea mixed with mushroom hallucinogen, used for fun rides or self reflection."
|
||||
color = "#101000" // rgb: 16, 16, 0
|
||||
nutriment_factor = 0
|
||||
quality = DRINK_NICE
|
||||
taste_description = "fungal infections"
|
||||
glass_icon_state = "teaglass"
|
||||
glass_name = "glass of mush tea"
|
||||
glass_desc = "A cold merky brown tea."
|
||||
|
||||
/datum/reagent/consumable/tea/mush/on_mob_life(mob/living/carbon/M)
|
||||
M.set_drugginess(20) //Little better then space drugs
|
||||
if(prob(20))
|
||||
M.Dizzy(10)
|
||||
if(prob(10))
|
||||
M.disgust = 0
|
||||
. = 1
|
||||
|
||||
/datum/reagent/consumable/lemonade
|
||||
name = "Lemonade"
|
||||
description = "Sweet, tangy lemonade. Good for the soul."
|
||||
|
||||
@@ -373,6 +373,14 @@
|
||||
pH = 4.9
|
||||
value = REAGENT_VALUE_VERY_COMMON
|
||||
|
||||
/datum/reagent/toxin/teapowder/red
|
||||
name = "Ground Red Tea Leaves"
|
||||
toxpwr = 0.4
|
||||
|
||||
/datum/reagent/toxin/teapowder/green
|
||||
name = "Ground Green Tea Leaves"
|
||||
toxpwr = 0.6
|
||||
|
||||
/datum/reagent/toxin/mutetoxin //the new zombie powder.
|
||||
name = "Mute Toxin"
|
||||
description = "A nonlethal poison that inhibits speech in its victim."
|
||||
|
||||
@@ -32,6 +32,9 @@
|
||||
to_chat(user, "<span class='notice'>You will now apply the medspray's contents in [squirt_mode ? "short bursts":"extended sprays"]. You'll now use [amount_per_transfer_from_this] units per use.</span>")
|
||||
|
||||
/obj/item/reagent_containers/medspray/attack(mob/living/L, mob/user, def_zone)
|
||||
INVOKE_ASYNC(src, .proc/attempt_spray, L, user, def_zone) // this is shitcode because the params for attack aren't even right but i'm not in the mood to refactor right now.
|
||||
|
||||
/obj/item/reagent_containers/medspray/proc/attempt_spray(mob/living/L, mob/user, def_zone)
|
||||
if(!reagents || !reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
|
||||
@@ -53,6 +53,9 @@
|
||||
/obj/item/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/syringe/attack()
|
||||
return // no bludgeoning.
|
||||
|
||||
/obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
INVOKE_ASYNC(src, .proc/attempt_inject, target, user, proximity)
|
||||
|
||||
@@ -185,6 +185,17 @@
|
||||
restricted = TRUE
|
||||
refund_path = /obj/item/guardiancreator/tech/choose/traitor
|
||||
|
||||
/datum/uplink_item/dangerous/nukieguardian // just like the normal holoparasites but without the support or deffensive stands because nukies shouldnt turtle
|
||||
name = "Holoparasites"
|
||||
desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \
|
||||
organic host as a home base and source of fuel. Holoparasites come in various types and share damage with their host."
|
||||
item = /obj/item/storage/box/syndie_kit/nukieguardian
|
||||
cost = 15
|
||||
refundable = TRUE
|
||||
surplus = 50
|
||||
refund_path = /obj/item/guardiancreator/tech/choose/nukie
|
||||
include_modes = list(/datum/game_mode/nuclear)
|
||||
|
||||
/datum/uplink_item/dangerous/machinegun
|
||||
name = "L6 Squad Automatic Weapon"
|
||||
desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \
|
||||
|
||||
@@ -147,6 +147,12 @@
|
||||
item = /obj/item/aiModule/syndicate
|
||||
cost = 9
|
||||
|
||||
/datum/uplink_item/device_tools/damaged_module
|
||||
name = "Damaged AI Law Upload Module"
|
||||
desc = "This AI law upload module has been laying around our warehouse for god knows how long. We do not know why you would ever use this."
|
||||
item = /obj/item/aiModule/core/full/damaged
|
||||
cost = 5
|
||||
|
||||
/datum/uplink_item/device_tools/headsetupgrade
|
||||
name = "Headset Upgrader"
|
||||
desc = "A device that can be used to make one headset immune to flashbangs."
|
||||
|
||||
@@ -29,6 +29,13 @@
|
||||
item = /obj/item/storage/box/syndie_kit/imp_freedom
|
||||
cost = 5
|
||||
|
||||
/datum/uplink_item/implants/warp
|
||||
name = "Warp Implant"
|
||||
desc = "An implant injected into the body and later activated at the user's will. It will inject eigenstasium which saves the user's location and teleports them there after five seconds. Lasts only fifteen times."
|
||||
item = /obj/item/storage/box/syndie_kit/imp_warp
|
||||
cost = 6
|
||||
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)
|
||||
|
||||
/datum/uplink_item/implants/hijack
|
||||
name = "Hijack Implant"
|
||||
desc = "An implant that will let you hack into the APCs on station, allowing you to control them at will and the machinery within those rooms."
|
||||
|
||||
@@ -576,7 +576,7 @@ GLOBAL_LIST_EMPTY(vending_products)
|
||||
"<span class='notice'>You right [src].")
|
||||
|
||||
unbuckle_all_mobs(TRUE)
|
||||
|
||||
anchored = FALSE //so you can push it back into position
|
||||
tilted = FALSE
|
||||
layer = initial(layer)
|
||||
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
/obj/machinery/vending/coffee
|
||||
name = "\improper Solar's Best Hot Drinks"
|
||||
desc = "A vending machine which dispenses hot drinks."
|
||||
product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
|
||||
product_ads = "Just what you need!;Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies"
|
||||
icon_state = "coffee"
|
||||
icon_vend = "coffee-vend"
|
||||
products = list(/obj/item/reagent_containers/food/drinks/coffee = 25,
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea = 25,
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/red = 10,
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/green = 10,
|
||||
/obj/item/reagent_containers/food/drinks/mug/coco = 25)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12)
|
||||
contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12,
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/mush = 3,)
|
||||
premium = list(/obj/item/reagent_containers/food/condiment/milk = 2,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cream = 2,
|
||||
/obj/item/reagent_containers/food/condiment/sugar = 1)
|
||||
/obj/item/reagent_containers/food/condiment/sugar = 1,
|
||||
/obj/item/reagent_containers/food/drinks/mug/tea/forest = 3,)
|
||||
|
||||
refill_canister = /obj/item/vending_refill/coffee
|
||||
default_price = PRICE_REALLY_CHEAP
|
||||
|
||||
Reference in New Issue
Block a user