Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit235
This commit is contained in:
@@ -534,7 +534,7 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
if (prompt != "Continue")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
|
||||
/client/proc/modify_variables(atom/O, param_var_name = null, autodetect_class = 0)
|
||||
if(!check_rights(R_VAREDIT))
|
||||
@@ -545,7 +545,7 @@ GLOBAL_PROTECT(VVpixelmovement)
|
||||
var/var_value
|
||||
|
||||
if(param_var_name)
|
||||
if(!param_var_name in O.vars)
|
||||
if(!(param_var_name in O.vars))
|
||||
to_chat(src, "A variable with this name ([param_var_name]) doesn't exist in this datum ([O])")
|
||||
return
|
||||
variable = param_var_name
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
owner.assigned_role = "[name] [sub_role]"
|
||||
owner.objectives += team.objectives
|
||||
finalize_abductor()
|
||||
ADD_TRAIT(owner, TRAIT_ABDUCTOR_TRAINING, ABDUCTOR_ANTAGONIST)
|
||||
return ..()
|
||||
|
||||
/datum/antagonist/abductor/on_removal()
|
||||
@@ -51,6 +52,7 @@
|
||||
if(owner.current)
|
||||
to_chat(owner.current,"<span class='userdanger'>You are no longer the [owner.special_role]!</span>")
|
||||
owner.special_role = null
|
||||
REMOVE_TRAIT(owner, TRAIT_ABDUCTOR_TRAINING, ABDUCTOR_ANTAGONIST)
|
||||
return ..()
|
||||
|
||||
/datum/antagonist/abductor/greet()
|
||||
@@ -75,11 +77,15 @@
|
||||
|
||||
update_abductor_icons_added(owner,"abductor")
|
||||
|
||||
/datum/antagonist/abductor/scientist/finalize_abductor()
|
||||
..()
|
||||
var/mob/living/carbon/human/H = owner.current
|
||||
var/datum/species/abductor/A = H.dna.species
|
||||
A.scientist = TRUE
|
||||
/datum/antagonist/abductor/scientist/on_gain()
|
||||
ADD_TRAIT(owner, TRAIT_ABDUCTOR_SCIENTIST_TRAINING, ABDUCTOR_ANTAGONIST)
|
||||
ADD_TRAIT(owner, TRAIT_SURGEON, ABDUCTOR_ANTAGONIST)
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/abductor/scientist/on_removal()
|
||||
REMOVE_TRAIT(owner, TRAIT_ABDUCTOR_SCIENTIST_TRAINING, ABDUCTOR_ANTAGONIST)
|
||||
REMOVE_TRAIT(owner, TRAIT_SURGEON, ABDUCTOR_ANTAGONIST)
|
||||
. = ..()
|
||||
|
||||
/datum/antagonist/abductor/admin_add(datum/mind/new_owner,mob/admin)
|
||||
var/list/current_teams = list()
|
||||
@@ -214,4 +220,4 @@
|
||||
/datum/antagonist/proc/update_abductor_icons_removed(datum/mind/alien_mind)
|
||||
var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR]
|
||||
hud.leave_hud(alien_mind.current)
|
||||
set_antag_hud(alien_mind.current, null)
|
||||
set_antag_hud(alien_mind.current, null)
|
||||
|
||||
@@ -132,22 +132,24 @@
|
||||
/obj/item/abductor
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
|
||||
/obj/item/abductor/proc/AbductorCheck(user)
|
||||
if(isabductor(user))
|
||||
/obj/item/abductor/proc/AbductorCheck(mob/user)
|
||||
if(HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING))
|
||||
return TRUE
|
||||
to_chat(user, "<span class='warning'>You can't figure how this works!</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/abductor/proc/ScientistCheck(user)
|
||||
if(!AbductorCheck(user))
|
||||
return FALSE
|
||||
/obj/item/abductor/proc/ScientistCheck(mob/user)
|
||||
var/training = HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING)
|
||||
var/sci_training = HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/datum/species/abductor/S = H.dna.species
|
||||
if(S.scientist)
|
||||
return TRUE
|
||||
to_chat(user, "<span class='warning'>You're not trained to use this!</span>")
|
||||
return FALSE
|
||||
if(training && !sci_training)
|
||||
to_chat(user, "<span class='warning'>You're not trained to use this!</span>")
|
||||
. = FALSE
|
||||
else if(!training && !sci_training)
|
||||
to_chat(user, "<span class='warning'>You can't figure how this works!</span>")
|
||||
. = FALSE
|
||||
else
|
||||
. = TRUE
|
||||
|
||||
/obj/item/abductor/gizmo
|
||||
name = "science tool"
|
||||
@@ -683,7 +685,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
desc = "Abduct with style - spiky style. Prevents digital tracking."
|
||||
icon_state = "alienhelmet"
|
||||
item_state = "alienhelmet"
|
||||
blockTracking = 1
|
||||
blockTracking = TRUE
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
|
||||
|
||||
// Operating Table / Beds / Lockers
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
icon_state = "gland"
|
||||
status = ORGAN_ROBOTIC
|
||||
beating = TRUE
|
||||
var/true_name = "baseline placebo referencer"
|
||||
var/cooldown_low = 300
|
||||
var/cooldown_high = 300
|
||||
var/next_activation = 0
|
||||
@@ -16,6 +17,11 @@
|
||||
var/mind_control_duration = 1800
|
||||
var/active_mind_control = FALSE
|
||||
|
||||
/obj/item/organ/heart/gland/examine(mob/user)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user))
|
||||
to_chat(user, "<span class='notice'>It is \a [true_name].</span>")
|
||||
|
||||
/obj/item/organ/heart/gland/proc/ownerCheck()
|
||||
if(ishuman(owner))
|
||||
return TRUE
|
||||
@@ -95,6 +101,7 @@
|
||||
return
|
||||
|
||||
/obj/item/organ/heart/gland/heals
|
||||
true_name = "coherency harmonizer"
|
||||
cooldown_low = 200
|
||||
cooldown_high = 400
|
||||
uses = -1
|
||||
@@ -109,6 +116,7 @@
|
||||
owner.adjustOxyLoss(-20)
|
||||
|
||||
/obj/item/organ/heart/gland/slime
|
||||
true_name = "gastric animation galvanizer"
|
||||
cooldown_low = 600
|
||||
cooldown_high = 1200
|
||||
uses = -1
|
||||
@@ -130,6 +138,7 @@
|
||||
Slime.Leader = owner
|
||||
|
||||
/obj/item/organ/heart/gland/mindshock
|
||||
true_name = "neural crosstalk uninhibitor"
|
||||
cooldown_low = 400
|
||||
cooldown_high = 700
|
||||
uses = -1
|
||||
@@ -156,6 +165,7 @@
|
||||
H.hallucination += 60
|
||||
|
||||
/obj/item/organ/heart/gland/pop
|
||||
true_name = "anthropmorphic translocator"
|
||||
cooldown_low = 900
|
||||
cooldown_high = 1800
|
||||
uses = -1
|
||||
@@ -171,6 +181,7 @@
|
||||
owner.set_species(species)
|
||||
|
||||
/obj/item/organ/heart/gland/ventcrawling
|
||||
true_name = "pliant cartilage enabler"
|
||||
cooldown_low = 1800
|
||||
cooldown_high = 2400
|
||||
uses = 1
|
||||
@@ -183,6 +194,7 @@
|
||||
owner.ventcrawler = VENTCRAWLER_ALWAYS
|
||||
|
||||
/obj/item/organ/heart/gland/viral
|
||||
true_name = "contamination incubator"
|
||||
cooldown_low = 1800
|
||||
cooldown_high = 2400
|
||||
uses = 1
|
||||
@@ -217,6 +229,7 @@
|
||||
return A
|
||||
|
||||
/obj/item/organ/heart/gland/trauma
|
||||
true_name = "white matter randomiser"
|
||||
cooldown_low = 800
|
||||
cooldown_high = 1200
|
||||
uses = 5
|
||||
@@ -235,6 +248,7 @@
|
||||
owner.gain_trauma_type(BRAIN_TRAUMA_MILD, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY))
|
||||
|
||||
/obj/item/organ/heart/gland/spiderman
|
||||
true_name = "araneae cloister accelerator"
|
||||
cooldown_low = 450
|
||||
cooldown_high = 900
|
||||
uses = -1
|
||||
@@ -249,6 +263,7 @@
|
||||
S.directive = "Protect your nest inside [owner.real_name]."
|
||||
|
||||
/obj/item/organ/heart/gland/egg
|
||||
true_name = "roe/enzymatic synthesizer"
|
||||
cooldown_low = 300
|
||||
cooldown_high = 400
|
||||
uses = -1
|
||||
@@ -264,6 +279,7 @@
|
||||
new /obj/item/reagent_containers/food/snacks/egg/gland(T)
|
||||
|
||||
/obj/item/organ/heart/gland/electric
|
||||
true_name = "electron accumulator/discharger"
|
||||
cooldown_low = 800
|
||||
cooldown_high = 1200
|
||||
uses = -1
|
||||
@@ -289,6 +305,7 @@
|
||||
playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, 1)
|
||||
|
||||
/obj/item/organ/heart/gland/chem
|
||||
true_name = "intrinsic pharma-provider"
|
||||
cooldown_low = 50
|
||||
cooldown_high = 50
|
||||
uses = -1
|
||||
@@ -315,6 +332,7 @@
|
||||
..()
|
||||
|
||||
/obj/item/organ/heart/gland/plasma
|
||||
true_name = "effluvium sanguine-synonym emitter"
|
||||
cooldown_low = 1200
|
||||
cooldown_high = 1800
|
||||
uses = -1
|
||||
|
||||
@@ -55,8 +55,7 @@
|
||||
actions += set_droppoint_action
|
||||
|
||||
/obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H)
|
||||
var/datum/species/abductor/S = H.dna.species
|
||||
return S.scientist
|
||||
return HAS_TRAIT(H, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)
|
||||
|
||||
/datum/action/innate/teleport_in
|
||||
name = "Send To"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(!isabductor(user))
|
||||
if(!HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING))
|
||||
to_chat(user, "<span class='warning'>You start mashing alien buttons at random!</span>")
|
||||
if(do_after(user,100, target = src))
|
||||
TeleporterSend()
|
||||
|
||||
@@ -53,4 +53,4 @@
|
||||
. = ..()
|
||||
var/datum/effect_system/spark_spread/S = new
|
||||
S.set_up(10,0,loc)
|
||||
S.start()
|
||||
S.start()
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
return
|
||||
voters += user.key
|
||||
else
|
||||
if(!user.key in voters)
|
||||
if(!(user.key in voters))
|
||||
return
|
||||
voters -= user.key
|
||||
var/votes_left = votes_needed - voters.len
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
break_message = "<span class='warning'>The vent snaps and collapses!</span>"
|
||||
max_integrity = 100
|
||||
density = FALSE
|
||||
layer = BELOW_OBJ_LAYER
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/steam_vent/activate()
|
||||
opacity = !opacity
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
unanchored_icon = "wall_gear"
|
||||
climbable = TRUE
|
||||
max_integrity = 100
|
||||
layer = BELOW_OBJ_LAYER
|
||||
construction_value = 3
|
||||
desc = "A massive brass gear. You could probably secure or unsecure it with a wrench, or just climb over it."
|
||||
break_message = "<span class='warning'>The gear breaks apart into shards of alloy!</span>"
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
/datum/bounty/item/assistant/strange_object
|
||||
name = "Strange Object"
|
||||
description = "Nanotrasen has taken an interest in strange objects. Find one in maint, and ship it off to CentCom right away."
|
||||
reward = 1200
|
||||
reward = 600
|
||||
wanted_types = list(/obj/item/relic)
|
||||
|
||||
/datum/bounty/item/assistant/scooter
|
||||
name = "Scooter"
|
||||
description = "Nanotrasen has determined walking to be wasteful. Ship a scooter to CentCom to speed operations up."
|
||||
reward = 1080 // the mat hoffman
|
||||
reward = 850 // the mat hoffman
|
||||
wanted_types = list(/obj/vehicle/ridden/scooter)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/bounty/item/assistant/skateboard
|
||||
name = "Skateboard"
|
||||
description = "Nanotrasen has determined walking to be wasteful. Ship a skateboard to CentCom to speed operations up."
|
||||
reward = 900 // the tony hawk
|
||||
reward = 700 // the tony hawk
|
||||
wanted_types = list(/obj/vehicle/ridden/scooter/skateboard)
|
||||
|
||||
/datum/bounty/item/assistant/stunprod
|
||||
name = "Stunprod"
|
||||
description = "CentCom demands a stunprod to use against dissidents. Craft one, then ship it."
|
||||
reward = 1300
|
||||
reward = 800
|
||||
wanted_types = list(/obj/item/melee/baton/cattleprod)
|
||||
|
||||
/datum/bounty/item/assistant/soap
|
||||
name = "Soap"
|
||||
description = "Soap has gone missing from CentCom's bathrooms and nobody knows who took it. Replace it and be the hero CentCom needs."
|
||||
reward = 2000
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/soap)
|
||||
|
||||
/datum/bounty/item/assistant/spear
|
||||
name = "Spears"
|
||||
description = "CentCom's security forces are going through budget cuts. You will be paid if you ship a set of spears."
|
||||
reward = 2000
|
||||
reward = 1000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/twohanded/spear)
|
||||
|
||||
/datum/bounty/item/assistant/toolbox
|
||||
name = "Toolboxes"
|
||||
description = "There's an absence of robustness at Central Command. Hurry up and ship some toolboxes as a solution."
|
||||
reward = 2000
|
||||
reward = 1000
|
||||
required_count = 6
|
||||
wanted_types = list(/obj/item/storage/toolbox)
|
||||
|
||||
@@ -53,81 +53,81 @@
|
||||
/datum/bounty/item/assistant/clown_box
|
||||
name = "Clown Box"
|
||||
description = "The universe needs laughter. Stamp cardboard with a clown stamp and ship it out."
|
||||
reward = 1500
|
||||
reward = 750
|
||||
wanted_types = list(/obj/item/storage/box/clown)
|
||||
|
||||
/datum/bounty/item/assistant/cheesiehonkers
|
||||
name = "Cheesie Honkers"
|
||||
description = "Apparently the company that makes Cheesie Honkers is going out of business soon. CentCom wants to stock up before it happens!"
|
||||
reward = 1200
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/cheesiehonkers)
|
||||
|
||||
/datum/bounty/item/assistant/baseball_bat
|
||||
name = "Baseball Bat"
|
||||
description = "Baseball fever is going on at CentCom! Be a dear and ship them some baseball bats, so that management can live out their childhood dream."
|
||||
reward = 2000
|
||||
reward = 1000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/melee/baseball_bat)
|
||||
|
||||
/datum/bounty/item/assistant/extendohand
|
||||
name = "Extendo-Hand"
|
||||
description = "Commander Betsy is getting old, and can't bend over to get the telescreen remote anymore. Management has requested an extendo-hand to help her out."
|
||||
reward = 2500
|
||||
reward = 1250
|
||||
wanted_types = list(/obj/item/extendohand)
|
||||
|
||||
/datum/bounty/item/assistant/donut
|
||||
name = "Donuts"
|
||||
description = "CentCom's security forces are facing heavy losses against the Syndicate. Ship donuts to raise morale."
|
||||
reward = 3000
|
||||
reward = 2000
|
||||
required_count = 10
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/donut)
|
||||
|
||||
/datum/bounty/item/assistant/donkpocket
|
||||
name = "Donk-Pockets"
|
||||
description = "Consumer safety recall: Warning. Donk-Pockets manufactured in the past year contain hazardous lizard biomatter. Return units to CentCom immediately."
|
||||
reward = 3000
|
||||
reward = 1000
|
||||
required_count = 10
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/donkpocket)
|
||||
|
||||
/datum/bounty/item/assistant/briefcase
|
||||
name = "Briefcase"
|
||||
description = "Central Command will be holding a business convention this year. Ship a few briefcases in support."
|
||||
reward = 2500
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/storage/briefcase, /obj/item/storage/secure/briefcase)
|
||||
|
||||
/datum/bounty/item/assistant/sunglasses
|
||||
name = "Sunglasses"
|
||||
description = "A famous blues duo is passing through the sector, but they've lost their shades and they can't perform. Ship new sunglasses to CentCom to rectify this."
|
||||
reward = 3000
|
||||
reward = 1000
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/clothing/glasses/sunglasses)
|
||||
|
||||
/datum/bounty/item/assistant/monkey_hide
|
||||
name = "Monkey Hide"
|
||||
description = "One of the scientists at CentCom is interested in testing products on monkey skin. Your mission is to acquire monkey's hide and ship it."
|
||||
reward = 1500
|
||||
reward = 500
|
||||
wanted_types = list(/obj/item/stack/sheet/animalhide/monkey)
|
||||
|
||||
/datum/bounty/item/assistant/shard
|
||||
name = "Shards"
|
||||
description = "A killer clown has been stalking CentCom, and staff have been unable to catch her because she's not wearing shoes. Please ship some shards so that a booby trap can be constructed."
|
||||
reward = 1500
|
||||
reward = 500
|
||||
required_count = 15
|
||||
wanted_types = list(/obj/item/shard)
|
||||
|
||||
/datum/bounty/item/assistant/comfy_chair
|
||||
name = "Comfy Chairs"
|
||||
description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him."
|
||||
reward = 1500
|
||||
reward = 900
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/comfy)
|
||||
|
||||
/datum/bounty/item/assistant/geranium
|
||||
name = "Geraniums"
|
||||
description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you."
|
||||
reward = 4000
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium)
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
/datum/bounty/item/assistant/shadyjims
|
||||
name = "Shady Jim's"
|
||||
description = "There's an irate officer at CentCom demanding that he receive a box of Shady Jim's cigarettes. Please ship one. He's starting to make threats."
|
||||
reward = 500
|
||||
reward = 750
|
||||
wanted_types = list(/obj/item/storage/fancy/cigarettes/cigpack_shadyjims)
|
||||
|
||||
/datum/bounty/item/assistant/potted_plants
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/bounty/item/botany
|
||||
reward = 5000
|
||||
reward = 1200
|
||||
var/datum/bounty/item/botany/multiplier = 0 //adds bonus reward money; increased for higher tier or rare mutations
|
||||
var/datum/bounty/item/botany/bonus_desc //for adding extra flavor text to bounty descriptions
|
||||
var/datum/bounty/item/botany/foodtype = "meal" //same here
|
||||
@@ -64,7 +64,7 @@
|
||||
multiplier = 4 //hush money
|
||||
bonus_desc = "Do not mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
|
||||
/datum/bounty/item/botany/cannabis_white
|
||||
name = "Lifeweed Leaves"
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/cannabis/white)
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
/datum/bounty/item/chef/birthday_cake
|
||||
name = "Birthday Cake"
|
||||
description = "Nanotrasen's birthday is coming up! Ship them a birthday cake to celebrate!"
|
||||
reward = 4000
|
||||
reward = 1000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday, /obj/item/reagent_containers/food/snacks/cakeslice/birthday)
|
||||
|
||||
/datum/bounty/item/chef/soup
|
||||
name = "Soup"
|
||||
description = "To quell the homeless uprising, Nanotrasen will be serving soup to all underpaid workers. Ship any type of soup."
|
||||
reward = 3000
|
||||
reward = 700
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/soup)
|
||||
|
||||
/datum/bounty/item/chef/popcorn
|
||||
name = "Popcorn Bags"
|
||||
description = "Upper management wants to host a movie night. Ship bags of popcorn for the occasion."
|
||||
reward = 3000
|
||||
reward = 800
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/popcorn)
|
||||
|
||||
/datum/bounty/item/chef/onionrings
|
||||
name = "Onion Rings"
|
||||
description = "Nanotrasen is remembering Saturn day. Ship onion rings to show the station's support."
|
||||
reward = 3000
|
||||
reward = 800
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/onionrings)
|
||||
|
||||
/datum/bounty/item/chef/icecreamsandwich
|
||||
name = "Ice Cream Sandwiches"
|
||||
description = "Upper management has been screaming non-stop for ice cream. Please send some."
|
||||
reward = 4000
|
||||
reward = 800
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/icecreamsandwich)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
name = "Bread"
|
||||
description = "Problems with central planning have led to bread prices skyrocketing. Ship some bread to ease tensions."
|
||||
reward = 1000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/store/bread, /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/bun, /obj/item/reagent_containers/food/snacks/pizzabread, /obj/item/reagent_containers/food/snacks/rawpastrybase)
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/store/bread, /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/bun, /obj/item/reagent_containers/food/snacks/pizzabread, /obj/item/reagent_containers/food/snacks/rawpastrybase)
|
||||
|
||||
/datum/bounty/item/chef/pie
|
||||
name = "Pie"
|
||||
@@ -47,21 +47,21 @@
|
||||
/datum/bounty/item/chef/salad
|
||||
name = "Salad or Rice Bowls"
|
||||
description = "CentCom management is going on a health binge. Your order is to ship salad or rice bowls."
|
||||
reward = 3000
|
||||
reward = 1200
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/salad)
|
||||
|
||||
/datum/bounty/item/chef/carrotfries
|
||||
name = "Carrot Fries"
|
||||
description = "Night sight can mean life or death! A shipment of carrot fries is the order."
|
||||
reward = 3500
|
||||
reward = 1300
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/carrotfries)
|
||||
|
||||
/datum/bounty/item/chef/superbite
|
||||
name = "Super Bite Burger"
|
||||
description = "Commander Tubbs thinks he can set a competitive eating world record. All he needs is a super bite burger shipped to him."
|
||||
reward = 12000
|
||||
reward = 1800
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/burger/superbite)
|
||||
|
||||
/datum/bounty/item/chef/poppypretzel
|
||||
@@ -73,19 +73,19 @@
|
||||
/datum/bounty/item/chef/cubancarp
|
||||
name = "Cuban Carp"
|
||||
description = "To celebrate the birth of Castro XXVII, ship one cuban carp to CentCom."
|
||||
reward = 8000
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/cubancarp)
|
||||
|
||||
/datum/bounty/item/chef/hotdog
|
||||
name = "Hot Dog"
|
||||
description = "Nanotrasen is conducting taste tests to determine the best hot dog recipe. Ship your station's version to participate."
|
||||
reward = 8000
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/hotdog)
|
||||
|
||||
/datum/bounty/item/chef/eggplantparm
|
||||
name = "Eggplant Parmigianas"
|
||||
description = "A famous singer will be arriving at CentCom, and their contract demands that they only be served Eggplant Parmigiana. Ship some, please!"
|
||||
reward = 3500
|
||||
reward = 2500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/eggplantparm)
|
||||
|
||||
@@ -99,33 +99,33 @@
|
||||
/datum/bounty/item/chef/chawanmushi
|
||||
name = "Chawanmushi"
|
||||
description = "Nanotrasen wants to improve relations with its sister company, Japanotrasen. Ship Chawanmushi immediately."
|
||||
reward = 8000
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/chawanmushi)
|
||||
|
||||
/datum/bounty/item/chef/kebab
|
||||
name = "Kebabs"
|
||||
description = "Remove all kebab from station you are best food. Ship to CentCom to remove from the premises."
|
||||
reward = 3500
|
||||
reward = 1500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/kebab)
|
||||
|
||||
/datum/bounty/item/chef/soylentgreen
|
||||
name = "Soylent Green"
|
||||
description = "CentCom has heard wonderful things about the product 'Soylent Green', and would love to try some. If you endulge them, expect a pleasant bonus."
|
||||
reward = 5000
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/soylentgreen)
|
||||
|
||||
/datum/bounty/item/chef/pancakes
|
||||
name = "Pancakes"
|
||||
description = "Here at Nanotrasen we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen."
|
||||
reward = 5000
|
||||
reward = 4000
|
||||
required_count = 13
|
||||
wanted_types = list(/datum/crafting_recipe/food/pancakes)
|
||||
|
||||
/datum/bounty/item/chef/nuggies
|
||||
name = "Chicken Nuggets"
|
||||
description = "The vice president's son won't shut up about chicken nuggies. Would you mind shipping some?"
|
||||
reward = 4000
|
||||
reward = 2500
|
||||
required_count = 6
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/nugget)
|
||||
|
||||
|
||||
@@ -27,41 +27,41 @@
|
||||
/datum/bounty/item/engineering/pacman
|
||||
name = "P.A.C.M.A.N.-type portable generator"
|
||||
description = "A neighboring station had a problem with their SMES, and now need something to power their communications console. Can you send them a P.AC.M.A.N.?"
|
||||
reward = 3500 //2500 for the cargo one
|
||||
reward = 1500 //2500 for the cargo one
|
||||
wanted_types = list(/obj/machinery/power/port_gen/pacman)
|
||||
|
||||
/datum/bounty/item/engineering/canisters
|
||||
name = "Gas Canisters"
|
||||
description = "After a recent debacle in a nearby sector, 10 gas canisters are needed for containing an experimental aerosol before it kills all the local fauna."
|
||||
reward = 5000
|
||||
reward = 3000
|
||||
required_count = 10 //easy to make
|
||||
wanted_types = list(/obj/machinery/portable_atmospherics/canister)
|
||||
|
||||
/datum/bounty/item/engineering/microwave
|
||||
name = "Microwaves"
|
||||
description = "Due to a shortage of microwaves, our chefs are incapable of keeping up with our sheer volume of orders. We need at least three microwaves to keep up with our crew's dietary habits."
|
||||
reward = 2000
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/machinery/microwave)
|
||||
|
||||
/datum/bounty/item/engineering/hydroponicstrays
|
||||
name = "Hydroponics Tray"
|
||||
description = "The garden has become a hot spot of late, they need a few more hydroponics tray to grow more flowers."
|
||||
reward = 2500
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/machinery/hydroponics)
|
||||
|
||||
/datum/bounty/item/engineering/rcd
|
||||
name = "Spare RCD"
|
||||
description = "Construction and repairs to are shuttles are going slowly. As it turns out, we're a little short on RCDs, can you send us a few?"
|
||||
reward = 2500
|
||||
reward = 1500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/construction/rcd)
|
||||
|
||||
/datum/bounty/item/engineering/rpd
|
||||
name = "Spare RPD"
|
||||
description = "Our Atmospheric Technicians are still living in the past, relying on stationary pipe dispensers to produce the pipes necessary to accomplish their strenuous tasks. They could use an upgrade. Could you send us some Rapid Pipe Dispensers?"
|
||||
reward = 3000
|
||||
reward = 2500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/pipe_dispenser)
|
||||
|
||||
@@ -75,19 +75,19 @@
|
||||
/datum/bounty/item/engineering/arcadetrail
|
||||
name = "Orion Trail Arcade Games"
|
||||
description = "The staff have nothing to do when off-work. Can you send us some Orion Trail games to play?"
|
||||
reward = 3000
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/machinery/computer/arcade/orion_trail)
|
||||
|
||||
/datum/bounty/item/engineering/arcadebattle
|
||||
name = "Battle Arcade Games"
|
||||
description = "The staff have nothing to do when off-work. Can you send us some Battle Arcade games to play?"
|
||||
reward = 3000
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/machinery/computer/arcade/battle)
|
||||
|
||||
/datum/bounty/item/engineering/energy_ball
|
||||
name = "Contained Tesla Ball"
|
||||
description = "Station 24 is being overrun by hordes of angry Mothpeople. They are requesting the ultimate bug zapper."
|
||||
reward = 75000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle
|
||||
reward = 50000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle
|
||||
wanted_types = list(/obj/singularity/energy_ball)
|
||||
|
||||
@@ -7,34 +7,34 @@
|
||||
/datum/bounty/item/medical/lung
|
||||
name = "Lungs"
|
||||
description = "A recent explosion at Central Command has left multiple staff with punctured lungs. Ship spare lungs to be rewarded."
|
||||
reward = 10000
|
||||
reward = 3000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/lungs)
|
||||
|
||||
/datum/bounty/item/medical/appendix
|
||||
name = "Appendix"
|
||||
description = "Chef Gibb of Central Command wants to prepare a meal using a very special delicacy: an appendix. If you ship one, he'll pay."
|
||||
reward = 5000 //there are no synthetic appendixes
|
||||
reward = 3500 //there are no synthetic appendixes
|
||||
wanted_types = list(/obj/item/organ/appendix)
|
||||
|
||||
/datum/bounty/item/medical/ears
|
||||
name = "Ears"
|
||||
description = "Multiple staff at Station 12 have been left deaf due to unauthorized clowning. Ship them new ears."
|
||||
reward = 10000
|
||||
reward = 5000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/ears)
|
||||
|
||||
/datum/bounty/item/medical/liver
|
||||
name = "Livers"
|
||||
description = "Multiple high-ranking CentCom diplomats have been hospitalized with liver failure after a recent meeting with Third Soviet Union ambassadors. Help us out, will you?"
|
||||
reward = 10000
|
||||
reward = 5500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/liver)
|
||||
|
||||
/datum/bounty/item/medical/eye
|
||||
name = "Organic Eyes"
|
||||
description = "Station 5's Research Director Willem is requesting a few pairs of non-robotic eyes. Don't ask questions, just ship them."
|
||||
reward = 10000
|
||||
reward = 3000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/eyes)
|
||||
exclude_types = list(/obj/item/organ/eyes/robotic)
|
||||
@@ -42,7 +42,7 @@
|
||||
/datum/bounty/item/medical/tongue
|
||||
name = "Tongues"
|
||||
description = "A recent attack by Mime extremists has left staff at Station 23 speechless. Ship some spare tongues."
|
||||
reward = 10000
|
||||
reward = 4500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/tongue)
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
required_count = 200
|
||||
wanted_types = (L,/datum/reagent/blood)
|
||||
if(istype(L,/datum/reagent/blood))
|
||||
wanted_types += L
|
||||
wanted_types += L
|
||||
|
||||
/datum/bounty/item/medical/bloodu //Dosnt work do to how blood is yet*
|
||||
name = "U-Type Blood"
|
||||
@@ -88,40 +88,40 @@
|
||||
required_count = 200
|
||||
wanted_types = (U,/datum/reagent/blood)
|
||||
if(istype(U,/datum/reagent/blood))
|
||||
wanted_types += U
|
||||
wanted_types += U
|
||||
|
||||
*/
|
||||
|
||||
/datum/bounty/item/medical/surgery
|
||||
name = "Surgery tool implants"
|
||||
description = "Our medical interns keep dropping their Shambler's Juice while they're performing open heart surgery. One of them even had the audacity to say he only had two hands!"
|
||||
reward = 10000
|
||||
reward = 7000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/cyberimp/arm/surgery)
|
||||
|
||||
/datum/bounty/item/medical/chemmaker
|
||||
name = "Portable Chem Dispenser"
|
||||
description = "After a new chemist mixed up some water and a banana, we lost our only chem dispenser. Please send us a replacement and you will be compensated."
|
||||
reward = 7000
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/machinery/chem_dispenser)
|
||||
|
||||
/datum/bounty/item/medical/advhealthscaner
|
||||
name = "Advanced Health Analyzer"
|
||||
description = "A ERT Medical unit needs the new 'advanced health analyzer', for a mission at a Station 4. Can you send some?."
|
||||
reward = 4000
|
||||
reward = 3000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/healthanalyzer/advanced)
|
||||
|
||||
/datum/bounty/item/medical/wallmounts
|
||||
name = "Defibrillator wall mounts"
|
||||
description = "New Space OSHA regulation state that are new cloning medical wing needs a few 'Easy to access defibrillartors'. Can you send a few before we get a lawsuit?"
|
||||
reward = 5000
|
||||
reward = 2000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/machinery/defibrillator_mount)
|
||||
|
||||
/datum/bounty/item/medical/defibrillator
|
||||
name = "New defibillators"
|
||||
description = "After years of storge are defibrillator units have become more liabilities then we want. Please send us some new ones to replace these old ones."
|
||||
reward = 5000
|
||||
reward = 2250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/defibrillator)
|
||||
|
||||
@@ -8,58 +8,58 @@
|
||||
/datum/bounty/item/mining/goliath_boat
|
||||
name = "Goliath Hide Boat"
|
||||
description = "Commander Menkov wants to participate in the annual Lavaland Regatta. He is asking your shipwrights to build the swiftest boat known to man."
|
||||
reward = 10000
|
||||
reward = 5500
|
||||
wanted_types = list(/obj/vehicle/ridden/lavaboat)
|
||||
|
||||
/datum/bounty/item/mining/bone_oar
|
||||
name = "Bone Oars"
|
||||
description = "Commander Menkov requires oars to participate in the annual Lavaland Regatta. Ship a pair over."
|
||||
reward = 4000
|
||||
reward = 2000
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/oar)
|
||||
|
||||
/datum/bounty/item/mining/bone_axe
|
||||
name = "Bone Axe"
|
||||
description = "Station 12 has had their fire axes stolen by marauding clowns. Ship them a bone axe as a replacement."
|
||||
reward = 7500
|
||||
reward = 3500
|
||||
wanted_types = list(/obj/item/twohanded/fireaxe/boneaxe)
|
||||
|
||||
/datum/bounty/item/mining/bone_armor
|
||||
name = "Bone Armor"
|
||||
description = "Station 14 has volunteered their lizard crew for ballistic armor testing. Ship over some bone armor."
|
||||
reward = 5000
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/clothing/suit/armor/bone)
|
||||
|
||||
/datum/bounty/item/mining/skull_helmet
|
||||
name = "Skull Helmet"
|
||||
description = "Station 42's Head of Security has her birthday tomorrow! We want to suprise her with a fashionable skull helmet."
|
||||
reward = 4000
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/clothing/head/helmet/skull)
|
||||
|
||||
/datum/bounty/item/mining/bone_talisman
|
||||
name = "Bone Talismans"
|
||||
description = "Station 14's Research Director claims that pagan bone talismans protect their wearer. Ship them a few so they can start testing."
|
||||
reward = 7500
|
||||
reward = 3500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/clothing/accessory/talisman)
|
||||
|
||||
/datum/bounty/item/mining/bone_dagger
|
||||
name = "Bone Daggers"
|
||||
description = "Central Command's canteen is undergoing budget cuts. Ship over some bone daggers so our Chef can keep working."
|
||||
reward = 5000
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/kitchen/knife/combat/bone)
|
||||
|
||||
/datum/bounty/item/mining/basalt
|
||||
name = "Artificial Basalt Tiles"
|
||||
description = "Central Command's Ash Walker exhibit needs to be expanded again, we just need some more basalt flooring."
|
||||
reward = 5000
|
||||
reward = 2200
|
||||
required_count = 60
|
||||
wanted_types = list(/obj/item/stack/tile/basalt)
|
||||
|
||||
/datum/bounty/item/mining/fruit
|
||||
name = "Cactus Fruit"
|
||||
description = "Central Command's Ash Walker habitat needs more fauna, send us some local fruit seeds!"
|
||||
reward = 2000
|
||||
reward = 1000
|
||||
required_count = 1
|
||||
wanted_types = list(/obj/item/seeds/lavaland/cactus)
|
||||
|
||||
@@ -116,11 +116,11 @@ datum/bounty/reagent/complex_drink/New()
|
||||
wanted_reagent = new reagent_type
|
||||
name = wanted_reagent.name
|
||||
description = "CentCom is offering a reward for talented mixologists. Ship a container of [name] to claim the prize."
|
||||
reward += rand(0, 4) * 500
|
||||
reward += rand(0, 4) * 300
|
||||
|
||||
/datum/bounty/reagent/chemical
|
||||
name = "Chemical"
|
||||
reward = 4000
|
||||
reward = 2750
|
||||
required_volume = 30
|
||||
|
||||
datum/bounty/reagent/chemical/New()
|
||||
|
||||
@@ -1,116 +1,116 @@
|
||||
/datum/bounty/item/science/boh
|
||||
name = "Bag of Holding"
|
||||
description = "Nanotrasen would make good use of high-capacity backpacks. If you have any, please ship them."
|
||||
reward = 10000
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/item/storage/backpack/holding)
|
||||
|
||||
/datum/bounty/item/science/tboh
|
||||
name = "Trash Bag of Holding"
|
||||
description = "Nanotrasen would make good use of high-capacity trash bags. If you have any, please ship them."
|
||||
reward = 10000
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/storage/backpack/holding)
|
||||
|
||||
/datum/bounty/item/science/bluespace_syringe
|
||||
name = "Bluespace Syringe"
|
||||
description = "Nanotrasen would make good use of high-capacity syringes. If you have any, please ship them."
|
||||
reward = 10000
|
||||
reward = 1500
|
||||
wanted_types = list(/obj/item/reagent_containers/syringe/bluespace)
|
||||
|
||||
/datum/bounty/item/science/bluespace_body_bag
|
||||
name = "Bluespace Body Bag"
|
||||
description = "Nanotrasen would make good use of high-capacity body bags. If you have any, please ship them."
|
||||
reward = 10000
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/item/bodybag/bluespace)
|
||||
|
||||
/datum/bounty/item/science/nightvision_goggles
|
||||
name = "Night Vision Goggles"
|
||||
description = "An electrical storm has busted all the lights at CentCom. While management is waiting for replacements, perhaps some night vision goggles can be shipped?"
|
||||
reward = 10000
|
||||
reward = 1000
|
||||
wanted_types = list(/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/meson/night, /obj/item/clothing/glasses/hud/health/night, /obj/item/clothing/glasses/hud/security/night, /obj/item/clothing/glasses/hud/diagnostic/night)
|
||||
|
||||
/datum/bounty/item/science/experimental_welding_tool
|
||||
name = "Experimental Welding Tool"
|
||||
description = "A recent accident has left most of CentCom's welding tools exploded. Ship replacements to be rewarded."
|
||||
reward = 10000
|
||||
reward = 5000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/weldingtool/experimental)
|
||||
|
||||
/datum/bounty/item/science/cryostasis_beaker
|
||||
name = "Cryostasis Beaker"
|
||||
description = "Chemists at Central Command have discovered a new chemical that can only be held in cryostasis beakers. The only problem is they don't have any! Rectify this to receive payment."
|
||||
reward = 10000
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/item/reagent_containers/glass/beaker/noreact)
|
||||
|
||||
/datum/bounty/item/science/diamond_drill
|
||||
name = "Diamond Mining Drill"
|
||||
description = "Central Command is willing to pay three months salary in exchange for one diamond mining drill."
|
||||
reward = 15000
|
||||
reward = 5500
|
||||
wanted_types = list(/obj/item/pickaxe/drill/diamonddrill, /obj/item/mecha_parts/mecha_equipment/drill/diamonddrill)
|
||||
|
||||
/datum/bounty/item/science/floor_buffer
|
||||
name = "Floor Buffer Upgrade"
|
||||
description = "One of CentCom's janitors made a small fortune betting on carp races. Now they'd like to commission an upgrade to their floor buffer."
|
||||
reward = 10000
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/janiupgrade)
|
||||
|
||||
/datum/bounty/item/science/advanced_mop
|
||||
name = "Advanced Mop"
|
||||
description = "Excuse me. I'd like to request $17 for a push broom rebristling. Either that, or an advanced mop."
|
||||
reward = 10000
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/mop/advanced)
|
||||
|
||||
/datum/bounty/item/science/advanced_egun
|
||||
name = "Advanced Energy Gun"
|
||||
description = "With the price of rechargers on the rise, upper management is interested in purchasing guns that are self-powered. If you ship one, they'll pay."
|
||||
reward = 10000
|
||||
reward = 1800
|
||||
wanted_types = list(/obj/item/gun/energy/e_gun/nuclear)
|
||||
|
||||
/datum/bounty/item/science/bscells
|
||||
name = "Bluespace Power Cells"
|
||||
description = "Someone in upper management keeps using the excuse that his tablet battery dies when he's in the middle of work. This will be the last time he doesn't have his presentation, I swear to -"
|
||||
reward = 7000
|
||||
reward = 3000
|
||||
required_count = 10 //Easy to make
|
||||
wanted_types = list(/obj/item/stock_parts/cell/bluespace)
|
||||
|
||||
/datum/bounty/item/science/t4manip
|
||||
name = "Femto-Manipulators"
|
||||
description = "One of our Chief Engineers has OCD. Can you send us some femto-manipulators so he stops complaining that his ID doesn't fit perfectly in the PDA slot?"
|
||||
reward = 7000
|
||||
reward = 2000
|
||||
required_count = 20 //Easy to make
|
||||
wanted_types = list(/obj/item/stock_parts/manipulator/femto)
|
||||
|
||||
/datum/bounty/item/science/t4bins
|
||||
name = "Bluespace Matter Bins"
|
||||
description = "The local Janitorial union has gone on strike. Can you send us some bluespace bins so we don't have to take out our own trash?"
|
||||
reward = 7000
|
||||
reward = 2000
|
||||
required_count = 20 //Easy to make
|
||||
wanted_types = list(/obj/item/stock_parts/matter_bin/bluespace)
|
||||
|
||||
/datum/bounty/item/science/t4capacitor
|
||||
name = "Quadratic Capacitor"
|
||||
description = "One of our linguists doesn't understand why they're called Quadratic capacitors. Can you give him a few so he leaves us alone about it?"
|
||||
reward = 7000
|
||||
reward = 2000
|
||||
required_count = 20 //Easy to make
|
||||
wanted_types = list(/obj/item/stock_parts/capacitor/quadratic)
|
||||
|
||||
/datum/bounty/item/science/t4triphasic
|
||||
name = "Triphasic Scanning Module"
|
||||
description = "One of our scientists got into the liberty caps and is demanding new scanning modules so he can talk to ghosts. At this point we just want him out of our office."
|
||||
reward = 7000
|
||||
reward = 2000
|
||||
required_count = 20 //Easy to make
|
||||
wanted_types = list(/obj/item/stock_parts/scanning_module/triphasic)
|
||||
|
||||
/datum/bounty/item/science/t4microlaser
|
||||
name = "Quad-Ultra Micro-Laser"
|
||||
description = "The cats on Vega 9 are breeding out of control. We need something to corral them into one area so we can saturation bomb it."
|
||||
reward = 7000
|
||||
reward = 2000
|
||||
required_count = 20 //Easy to make
|
||||
wanted_types = list(/obj/item/stock_parts/micro_laser/quadultra)
|
||||
|
||||
/datum/bounty/item/science/fakecrystals
|
||||
name = "synthetic bluespace crystals"
|
||||
description = "Don't, uh, tell anyone, but one of our BSA arrays might have had a little... accident. Send us some bluespace crystals so we can recalibrate it before anyone realizes. The whole set uses artificial bluespace crystals, so we need and not any other type of bluespace crystals..."
|
||||
reward = 10000
|
||||
reward = 8000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/stack/ore/bluespace_crystal/artificial)
|
||||
exclude_types = list(/obj/item/stack/ore/bluespace_crystal,
|
||||
|
||||
@@ -1,54 +1,54 @@
|
||||
/datum/bounty/item/security/riotshotgun
|
||||
name = "Riot Shotguns"
|
||||
description = "Hooligans have boarded CentCom! Ship riot shotguns quick, or things are going to get dirty."
|
||||
reward = 5000
|
||||
reward = 2500
|
||||
required_count = 2
|
||||
wanted_types = list(/obj/item/gun/ballistic/shotgun/riot)
|
||||
|
||||
/datum/bounty/item/security/recharger
|
||||
name = "Rechargers"
|
||||
description = "Nanotrasen military academy is conducting marksmanship exercises. They request that rechargers be shipped."
|
||||
reward = 2000
|
||||
reward = 1700
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/machinery/recharger)
|
||||
|
||||
/datum/bounty/item/security/practice
|
||||
name = "Practice Laser Gun"
|
||||
description = "Nanotrasen Military Academy is conducting routine marksmanship exercises. The clown hid all the practice lasers, and we're not using live weapons after last time."
|
||||
reward = 3000
|
||||
reward = 1500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/gun/energy/laser/practice)
|
||||
|
||||
/datum/bounty/item/security/flashshield
|
||||
name = "Strobe Shield"
|
||||
description = "One of our Emergency Response Agents thinks there's vampires in a local station. Send him something to help with his fear of the dark and protect him, too."
|
||||
reward = 5000
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/assembly/flash/shield)
|
||||
|
||||
/datum/bounty/item/security/sechuds
|
||||
name = "Sec HUDs"
|
||||
description = "Nanotrasen military academy has started to train officers how to use Sec HUDs to the fullest affect. Please send spare Sec HUDs so we can teach the men."
|
||||
reward = 3000
|
||||
reward = 1250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/clothing/glasses/hud/security)
|
||||
|
||||
/datum/bounty/item/security/techslugs
|
||||
name = "Tech Slugs"
|
||||
description = "Nanotrasen Military Academy is conducting an ammo loading and use lessons, on the new 'Tech Slugs'. Problem is we don't have any, please fix this..."
|
||||
reward = 7500
|
||||
reward = 3500
|
||||
required_count = 15
|
||||
wanted_types = list(/obj/item/ammo_casing/shotgun/techshell)
|
||||
|
||||
/datum/bounty/item/security/WT550
|
||||
/datum/bounty/item/security/wt550
|
||||
name = "Spare WT-550 clips"
|
||||
description = "Nanotrasen Military Academy's ammunition is running low, please send in spare ammo for practice."
|
||||
reward = 7500
|
||||
reward = 1500
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/ammo_box/magazine/wt550m9)
|
||||
|
||||
/datum/bounty/item/security/pins
|
||||
name = "Test range firing pins"
|
||||
description = "Nanotrasen Military Academy just got a new set of guns, sadly they didn't come with any pins. Can you send us some Test range locked firing pins?"
|
||||
reward = 5000
|
||||
reward = 2750
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/firing_pin/test_range)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
/datum/bounty/item/slime
|
||||
reward = 3000
|
||||
reward = 1950
|
||||
|
||||
/datum/bounty/item/slime/New()
|
||||
..()
|
||||
description = "Nanotrasen's science lead is hunting for the rare and exotic [name]. A bounty has been offered for finding it."
|
||||
reward += rand(0, 4) * 500
|
||||
reward += rand(0, 4) * 250
|
||||
|
||||
/datum/bounty/item/slime/green
|
||||
name = "Green Slime Extract"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
/datum/bounty/item/alien_organs
|
||||
name = "Alien Organs"
|
||||
description = "Nanotrasen is interested in studying Xenomorph biology. Ship a set of organs to be thoroughly compensated."
|
||||
reward = 25000
|
||||
reward = 13500
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/organ/brain/alien, /obj/item/organ/alien, /obj/item/organ/body_egg/alien_embryo)
|
||||
|
||||
/datum/bounty/item/syndicate_documents
|
||||
name = "Syndicate Documents"
|
||||
description = "Intel regarding the syndicate is highly prized at CentCom. If you find syndicate documents, ship them. You could save lives."
|
||||
reward = 15000
|
||||
reward = 10000
|
||||
wanted_types = list(/obj/item/documents/syndicate, /obj/item/documents/photocopy)
|
||||
|
||||
/datum/bounty/item/syndicate_documents/applies_to(obj/O)
|
||||
@@ -22,15 +22,15 @@
|
||||
/datum/bounty/item/adamantine
|
||||
name = "Adamantine"
|
||||
description = "Nanotrasen's anomalous materials division is in desparate need for Adamantine. Send them a large shipment and we'll make it worth your while."
|
||||
reward = 35000
|
||||
reward = 15000
|
||||
required_count = 10
|
||||
wanted_types = list(/obj/item/stack/sheet/mineral/adamantine)
|
||||
|
||||
/datum/bounty/more_bounties
|
||||
name = "More Bounties"
|
||||
description = "Complete enough bounties and CentCom will issue new ones!"
|
||||
reward = 3 // number of bounties
|
||||
var/required_bounties = 5
|
||||
reward = 8 // number of bounties
|
||||
var/required_bounties = 3
|
||||
|
||||
/datum/bounty/more_bounties/can_claim()
|
||||
return ..() && completed_bounty_count() >= required_bounties
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/bounty/virus
|
||||
reward = 5000
|
||||
reward = 3000
|
||||
var/shipped = FALSE
|
||||
var/stat_value = 0
|
||||
var/stat_name = ""
|
||||
@@ -11,7 +11,7 @@
|
||||
stat_value *= -1
|
||||
name = "Virus ([stat_name] of [stat_value])"
|
||||
description = "Nanotrasen is interested in a virus with a [stat_name] stat of exactly [stat_value]. Central Command will pay handsomely for such a virus."
|
||||
reward += rand(0, 4) * 500
|
||||
reward += rand(0, 4) * 400
|
||||
|
||||
/datum/bounty/virus/completion_string()
|
||||
return shipped ? "Shipped" : "Not Shipped"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* How it works:
|
||||
The shuttle arrives at CentCom dock and calls sell(), which recursively loops through all the shuttle contents that are unanchored.
|
||||
|
||||
|
||||
Each object in the loop is checked for applies_to() of various export datums, except the invalid ones.
|
||||
*/
|
||||
|
||||
@@ -31,7 +31,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
setupExports()
|
||||
|
||||
var/list/contents = AM.GetAllContents()
|
||||
|
||||
|
||||
var/datum/export_report/report = external_report
|
||||
if(!report) //If we don't have any longer transaction going on
|
||||
report = new
|
||||
@@ -58,7 +58,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
var/unit_name = "" // Unit name. Only used in "Received [total_amount] [name]s [message]." message
|
||||
var/message = ""
|
||||
var/cost = 100 // Cost of item, in cargo credits. Must not alow for infinite price dupes, see above.
|
||||
var/k_elasticity = 1/30 //coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity"
|
||||
var/k_elasticity = 1/20 //coefficient used in marginal price calculation that roughly corresponds to the inverse of price elasticity, or "quantity elasticity" - CIT EDIT 30 - > 20
|
||||
var/list/export_types = list() // Type of the exported object. If none, the export datum is considered base type.
|
||||
var/include_subtypes = TRUE // Set to FALSE to make the datum apply only to a strict type.
|
||||
var/list/exclude_types = list() // Types excluded from export
|
||||
@@ -125,9 +125,9 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
|
||||
if(amount <=0 || the_cost <=0)
|
||||
return FALSE
|
||||
|
||||
|
||||
report.total_value[src] += the_cost
|
||||
|
||||
|
||||
if(istype(O, /datum/export/material))
|
||||
report.total_amount[src] += amount*MINERAL_MATERIAL_AMOUNT
|
||||
else
|
||||
@@ -148,7 +148,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
|
||||
|
||||
var/total_value = ex.total_value[src]
|
||||
var/total_amount = ex.total_amount[src]
|
||||
|
||||
|
||||
var/msg = "[total_value] credits: Received [total_amount] "
|
||||
if(total_value > 0)
|
||||
msg = "+" + msg
|
||||
|
||||
@@ -1,83 +1,800 @@
|
||||
/datum/export/gear
|
||||
include_subtypes = FALSE
|
||||
|
||||
//blanket
|
||||
/datum/export/gear/hat
|
||||
cost = 3
|
||||
unit_name = "clothing"
|
||||
export_types = list(/obj/item/clothing)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Hats
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/hat
|
||||
cost = 5
|
||||
unit_name = "hat"
|
||||
export_types = list(/obj/item/clothing/head)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/sec_helmet
|
||||
cost = 100
|
||||
cost = 70
|
||||
unit_name = "helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/sec)
|
||||
|
||||
/datum/export/gear/sec_armor
|
||||
cost = 100
|
||||
unit_name = "armor vest"
|
||||
export_types = list(/obj/item/clothing/suit/armor/vest)
|
||||
/datum/export/gear/sec_soft
|
||||
cost = 50
|
||||
unit_name = "soft sec cap"
|
||||
export_types = list(/obj/item/clothing/head/soft/sec)
|
||||
|
||||
/datum/export/gear/riot_shield
|
||||
cost = 100
|
||||
unit_name = "riot shield"
|
||||
export_types = list(/obj/item/shield/riot)
|
||||
/datum/export/gear/sec_helmetalt
|
||||
cost = 50
|
||||
unit_name = "bullet proof helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/alt)
|
||||
|
||||
/datum/export/gear/sec_helmetold
|
||||
cost = 10
|
||||
unit_name = "old helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/old)
|
||||
|
||||
/datum/export/gear/sec_helmetblue
|
||||
cost = 75
|
||||
unit_name = "blue helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/blueshirt)
|
||||
|
||||
/datum/export/gear/sec_helmetriot
|
||||
cost = 100
|
||||
unit_name = "riot helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/riot)
|
||||
|
||||
/datum/export/gear/sec_helmet_light
|
||||
cost = 20
|
||||
unit_name = "justice helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/justice/escape)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/syndicate_helmetswat
|
||||
cost = 250
|
||||
unit_name = "syndicate helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/swat)
|
||||
|
||||
/datum/export/gear/sec_helmetswat
|
||||
cost = 150
|
||||
unit_name = "swat helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/swat/nanotrasen)
|
||||
|
||||
/datum/export/gear/thunder_helmet
|
||||
cost = 120
|
||||
unit_name = "thunder dome helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/thunderdome)
|
||||
|
||||
/datum/export/gear/roman_real
|
||||
cost = 30
|
||||
unit_name = "roman helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/roman)
|
||||
|
||||
/datum/export/gear/roman_realalt
|
||||
cost = 60
|
||||
unit_name = "legionnaire helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/roman/legionnaire)
|
||||
|
||||
/datum/export/gear/roman_fake
|
||||
cost = 10
|
||||
unit_name = "toy roman helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/roman/fake)
|
||||
|
||||
/datum/export/gear/roman_fakealt
|
||||
cost = 20
|
||||
unit_name = "toy legionnaire helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/roman/legionnaire/fake)
|
||||
|
||||
/datum/export/gear/ash_walker_helm
|
||||
cost = 70
|
||||
unit_name = "gladiator helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/gladiator)
|
||||
|
||||
/datum/export/gear/lasertag
|
||||
cost = 30 //Has armor
|
||||
unit_name = "lasertag helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/redtaghelm)
|
||||
|
||||
/datum/export/gear/lasertag/blue
|
||||
export_types = list(/obj/item/clothing/head/helmet/bluetaghelm)
|
||||
|
||||
/datum/export/gear/knight_helmet
|
||||
cost = 200
|
||||
k_elasticity = 1/5 //Rare, dont flood it
|
||||
unit_name = "knight helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/knight, /obj/item/clothing/head/helmet/knight/blue, /obj/item/clothing/head/helmet/knight/yellow, /obj/item/clothing/head/helmet/knight/red)
|
||||
|
||||
/datum/export/gear/skull_hat
|
||||
cost = 70
|
||||
k_elasticity = 1/15 //Its just a skull
|
||||
unit_name = "skull"
|
||||
export_types = list(/obj/item/clothing/head/helmet/skull)
|
||||
|
||||
/datum/export/gear/durathread_helm
|
||||
cost = 100
|
||||
k_elasticity = 1/15
|
||||
unit_name = "durathread hat"
|
||||
export_types = list(/obj/item/clothing/head/helmet/durathread, /obj/item/clothing/head/beret/durathread, /obj/item/clothing/head/beanie/durathread)
|
||||
|
||||
/datum/export/gear/hard_hats
|
||||
cost = 50
|
||||
unit_name = "hard hat"
|
||||
export_types = list(/obj/item/clothing/head/hardhat, /obj/item/clothing/head/hardhat/orange, /obj/item/clothing/head/hardhat/white, /obj/item/clothing/head/hardhat/dblue)
|
||||
|
||||
/datum/export/gear/atmos_helm
|
||||
cost = 200 //Armored, fire proof, light, and presser proof
|
||||
unit_name = "atmos hard hat"
|
||||
export_types = list(/obj/item/clothing/head/hardhat/atmos)
|
||||
|
||||
/datum/export/gear/crowns
|
||||
cost = 350 //Armored, gold 300cr of gold to make so give them 50 more for working
|
||||
k_elasticity = 1/5 //Anti-floods
|
||||
unit_name = "crown"
|
||||
export_types = list(/obj/item/clothing/head/crown, /obj/item/clothing/head/crown/fancy)
|
||||
|
||||
/datum/export/gear/cchat
|
||||
cost = 40
|
||||
unit_name = "centcom hat"
|
||||
export_types = list(/obj/item/clothing/head/centhat)
|
||||
|
||||
/datum/export/gear/caphat
|
||||
cost = 150
|
||||
unit_name = "command hat"
|
||||
export_types = list(/obj/item/clothing/head/caphat, /obj/item/clothing/head/caphat/parade, /obj/item/clothing/head/caphat/beret)
|
||||
|
||||
/datum/export/gear/hophat
|
||||
cost = 130
|
||||
unit_name = "hop hat"
|
||||
export_types = list(/obj/item/clothing/head/hopcap, /obj/item/clothing/head/hopcap/beret)
|
||||
|
||||
/datum/export/gear/dechat
|
||||
cost = 75
|
||||
k_elasticity = 1/8 //Anti-floods
|
||||
unit_name = "fedora"
|
||||
export_types = list(/obj/item/clothing/head/fedora/det_hat, /obj/item/clothing/head/fedora/curator, /obj/item/clothing/head/fedora)
|
||||
|
||||
/datum/export/gear/hoshat
|
||||
cost = 140
|
||||
unit_name = "hos hat"
|
||||
export_types = list(/obj/item/clothing/head/HoS, /obj/item/clothing/head/HoS/beret, /obj/item/clothing/head/beret/sec/navyhos)
|
||||
|
||||
/datum/export/gear/syndahoshat
|
||||
cost = 300
|
||||
unit_name = "syndicate command hat"
|
||||
export_types = list(/obj/item/clothing/head/HoS/syndicate, /obj/item/clothing/head/HoS/beret/syndicate)
|
||||
|
||||
/datum/export/gear/wardenhat
|
||||
cost = 90
|
||||
unit_name = "warden hat"
|
||||
export_types = list(/obj/item/clothing/head/warden, /obj/item/clothing/head/warden/drill, /obj/item/clothing/head/beret/sec/navywarden)
|
||||
|
||||
/datum/export/gear/sechats
|
||||
cost = 60
|
||||
unit_name = "sec beret"
|
||||
export_types = list(/obj/item/clothing/head/beret/sec, /obj/item/clothing/head/beret/sec/navyofficer)
|
||||
|
||||
/datum/export/gear/berets
|
||||
cost = 30
|
||||
unit_name = "beret"
|
||||
export_types = list(/obj/item/clothing/head/beret/qm, /obj/item/clothing/head/beret/rd, /obj/item/clothing/head/beret/cmo, /obj/item/clothing/head/beret)
|
||||
|
||||
/datum/export/gear/berets
|
||||
cost = 30
|
||||
unit_name = "beret"
|
||||
export_types = list(/obj/item/clothing/head/beret/qm, /obj/item/clothing/head/beret/rd, /obj/item/clothing/head/beret/cmo, /obj/item/clothing/head/beret)
|
||||
|
||||
/datum/export/gear/collectable
|
||||
cost = 500
|
||||
unit_name = "collectable hat"
|
||||
k_elasticity = 1/10 //dont flood these
|
||||
export_types = list(/obj/item/clothing/head/collectable)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/fancyhats
|
||||
cost = 75
|
||||
unit_name = "fancy hat"
|
||||
k_elasticity = 1/10 //dont flood these
|
||||
export_types = list(/obj/item/clothing/head/that, /obj/item/clothing/head/bowler, /obj/item/clothing/head/lizard, /obj/item/clothing/head/canada)
|
||||
|
||||
/datum/export/gear/welders
|
||||
cost = 30
|
||||
unit_name = "welder helm"
|
||||
k_elasticity = 1/20 //dont flood these
|
||||
export_types = list(/obj/item/clothing/head/welding)
|
||||
|
||||
/datum/export/gear/magichat //Magic as is Antags-Wiz/Cults
|
||||
cost = 450
|
||||
unit_name = "magic hat"
|
||||
export_types = list(/obj/item/clothing/head/wizard, /obj/item/clothing/head/culthood, /obj/item/clothing/head/magus, /obj/item/clothing/head/helmet/clockwork)
|
||||
exclude_types = list(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard/marisa/fake)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Shoes
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/shoes
|
||||
cost = 1 //Really dont want to sell EVERY SHOE EVER - yet*
|
||||
unit_name = "shoes"
|
||||
export_types = list(/obj/item/clothing/shoes)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/clown_shoesmk
|
||||
cost = 600
|
||||
unit_name = "mk-honk prototype shoes"
|
||||
export_types = list(/obj/item/clothing/shoes/clown_shoes/banana_shoes)
|
||||
|
||||
/datum/export/gear/magboots
|
||||
cost = 50
|
||||
unit_name = "magboots"
|
||||
export_types = list(/obj/item/clothing/shoes/magboots, /obj/item/clothing/shoes/magboots/atmos)
|
||||
|
||||
/datum/export/gear/nosellboots
|
||||
cost = -5000 //We DONT want scew antags
|
||||
unit_name = "error shipment stolen"
|
||||
export_types = list(/obj/item/clothing/shoes/magboots/advance, /obj/item/clothing/shoes/magboots/deathsquad)
|
||||
|
||||
/datum/export/gear/syndamagboots
|
||||
cost = 250
|
||||
unit_name = "blood redmagboots"
|
||||
export_types = list(/obj/item/clothing/shoes/magboots/syndie)
|
||||
|
||||
/datum/export/gear/combatboots
|
||||
cost = 30
|
||||
unit_name = "combat boots"
|
||||
export_types = list(/obj/item/clothing/shoes/combat)
|
||||
|
||||
/datum/export/gear/swatboots
|
||||
cost = 45
|
||||
unit_name = "swat boots"
|
||||
export_types = list(/obj/item/clothing/shoes/combat/swat)
|
||||
|
||||
/datum/export/gear/galoshes
|
||||
cost = 50
|
||||
unit_name = "galoshes"
|
||||
export_types = list(/obj/item/clothing/shoes/galoshes, /obj/item/clothing/shoes/galoshes/dry)
|
||||
|
||||
/datum/export/gear/clown
|
||||
cost = 10
|
||||
unit_name = "clown shoes"
|
||||
export_types = list(/obj/item/clothing/shoes/clown_shoes, /obj/item/clothing/shoes/clown_shoes/jester)
|
||||
|
||||
/datum/export/gear/dressshoes
|
||||
cost = 10
|
||||
unit_name = "dress shoes"
|
||||
export_types = list(/obj/item/clothing/shoes/laceup, /obj/item/clothing/shoes/singerb, /obj/item/clothing/shoes/singery)
|
||||
|
||||
/datum/export/gear/working
|
||||
cost = 15
|
||||
unit_name = "boots"
|
||||
export_types = list(/obj/item/clothing/shoes/jackboots/fast, /obj/item/clothing/shoes/winterboots, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/workboots, /obj/item/clothing/shoes/workboots/mining)
|
||||
|
||||
/datum/export/gear/hopboots
|
||||
cost = 350 //costs 1000 credits for miners to get
|
||||
unit_name = "jump boots"
|
||||
export_types = list(/obj/item/clothing/shoes/bhop)
|
||||
|
||||
/datum/export/gear/magicboots //Magic as in Antag - Wiz/Cults
|
||||
cost = 450
|
||||
unit_name = "magic shoes"
|
||||
export_types = list(/obj/item/clothing/shoes/sandal/marisa, /obj/item/clothing/shoes/sandal/magic, /obj/item/clothing/shoes/cult, /obj/item/clothing/shoes/clockwork, /obj/item/clothing/shoes/clown_shoes/taeclowndo, /obj/item/clothing/shoes/sandal/slippers)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Headsets/Ears
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/ears
|
||||
cost = 2 //We dont want to sell every headset ever
|
||||
unit_name = "ear gear"
|
||||
export_types = list(/obj/item/clothing/ears, /obj/item/radio/headset)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Gloves
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/gloves
|
||||
cost = 4 //Glove crafting can be done
|
||||
unit_name = "gloves"
|
||||
export_types = list(/obj/item/clothing/gloves)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/boxing
|
||||
cost = 10 //Padding as well as a weapon
|
||||
unit_name = "boxing gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/boxing)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/combatgloves
|
||||
cost = 80
|
||||
unit_name = "combat gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/rapid, /obj/item/clothing/gloves/krav_maga)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/bonegloves
|
||||
cost = 30
|
||||
unit_name = "bone bracers"
|
||||
export_types = list(/obj/item/clothing/gloves/bracer)
|
||||
|
||||
/datum/export/gear/yellowgloves
|
||||
cost = 50
|
||||
unit_name = "insulated gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/red/insulated)
|
||||
|
||||
/datum/export/gear/leathergloves
|
||||
cost = 20
|
||||
unit_name = "leather gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/botanic_leather)
|
||||
|
||||
/datum/export/gear/fancy
|
||||
cost = 25
|
||||
unit_name = "fancy gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/color/black, /obj/item/clothing/gloves/color/captain, /obj/item/clothing/gloves/color/white)
|
||||
|
||||
/datum/export/gear/magicgloves//Magic as in Antag - Wiz/Cults
|
||||
cost = 400
|
||||
unit_name = "magic gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/clockwork)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Ties/neck
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/neck
|
||||
cost = 5 //Fancy!
|
||||
unit_name = "neck based gear"
|
||||
export_types = list(/obj/item/clothing/neck)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/collar
|
||||
cost = 7
|
||||
unit_name = "collar"
|
||||
export_types = list(/obj/item/clothing/neck/petcollar)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/bling
|
||||
cost = 15 //Needs a coin
|
||||
unit_name = "gold plated necklace"
|
||||
export_types = list(/obj/item/clothing/neck/necklace/dope)
|
||||
|
||||
//masks
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/masks
|
||||
cost = 3 //Mostly just fake stuff and clowngear
|
||||
unit_name = "face gear"
|
||||
export_types = list(/obj/item/clothing/mask)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/gasmask
|
||||
cost = 4
|
||||
unit_name = "gas mask"
|
||||
export_types = list(/obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas/glass)
|
||||
|
||||
/datum/export/gear/minermask
|
||||
cost = 10
|
||||
unit_name = "armored mask"
|
||||
export_types = list(/obj/item/clothing/mask/gas/welding, /obj/item/clothing/mask/gas/explorer, /obj/item/clothing/mask/gas/syndicate)
|
||||
|
||||
/datum/export/gear/sechailer
|
||||
cost = 6
|
||||
unit_name = "sec hailer"
|
||||
export_types = list(/obj/item/clothing/mask/gas/sechailer)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/mask/breath
|
||||
cost = 2
|
||||
unit_name = "breath mask"
|
||||
export_types = list(/obj/item/clothing/mask/breath)
|
||||
|
||||
/datum/export/gear/mask/gas
|
||||
cost = 10
|
||||
unit_name = "gas mask"
|
||||
export_types = list(/obj/item/clothing/mask/gas)
|
||||
include_subtypes = FALSE
|
||||
//Hardsuits //If you steal/fine more they are worth selling
|
||||
|
||||
//Blanket
|
||||
/datum/export/gear/hardsuit
|
||||
cost = 250 //Its just metal/plastic after all
|
||||
unit_name = "unknown hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/space/helmet
|
||||
cost = 75
|
||||
/datum/export/gear/engi_hardsuit
|
||||
cost = 500
|
||||
unit_name = "engine hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/engine)
|
||||
|
||||
/datum/export/gear/atmos_hardsuit
|
||||
cost = 600
|
||||
unit_name = "atmos hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/engine/atmos)
|
||||
|
||||
/datum/export/gear/engi_hardsuit
|
||||
cost = 1000
|
||||
unit_name = "elite engine hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/engine/elite)
|
||||
|
||||
/datum/export/gear/mining_hardsuit
|
||||
cost = 350 //common
|
||||
unit_name = "mining hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/mining)
|
||||
|
||||
/datum/export/gear/sec_hardsuit
|
||||
cost = 750
|
||||
unit_name = "sec hardsuit"
|
||||
export_types = list(/obj/item/clothing/head/helmet/space/hardsuit/mining, /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl)
|
||||
|
||||
/datum/export/gear/syndi_hardsuit
|
||||
cost = 1250
|
||||
unit_name = "syndi hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/syndi)
|
||||
|
||||
/datum/export/gear/syndi_hardsuit
|
||||
cost = 2750
|
||||
unit_name = "elite syndi hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/syndi/elite)
|
||||
|
||||
/datum/export/gear/medical_hardsuit
|
||||
cost = 350 //Not all that good
|
||||
unit_name = "meidcal hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/medical)
|
||||
|
||||
/datum/export/gear/rd_hardsuit
|
||||
cost = 850 //rare
|
||||
unit_name = "prototype hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/rd)
|
||||
|
||||
/datum/export/gear/sec_hardsuit
|
||||
cost = 750
|
||||
unit_name = "sec hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/security)
|
||||
|
||||
/datum/export/gear/command_hardsuit
|
||||
cost = 1300
|
||||
unit_name = "command hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/security/hos, /obj/item/clothing/suit/space/hardsuit/captain)
|
||||
|
||||
/datum/export/gear/magic_hardsuit
|
||||
cost = 3000
|
||||
unit_name = "magic hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/cult)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/shield_hardsuit
|
||||
cost = 2000
|
||||
unit_name = "shielded hardsuit"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/shielded)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/rigs
|
||||
cost = 2750
|
||||
unit_name = "RIG"
|
||||
export_types = list(/obj/item/clothing/suit/space/hardsuit/ancient, /obj/item/clothing/suit/space/hardsuit/ancient/mason)
|
||||
|
||||
//Soft Suits
|
||||
|
||||
//Blanket
|
||||
datum/export/gear/space/helmet
|
||||
cost = 55
|
||||
unit_name = "space helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/space, /obj/item/clothing/head/helmet/space/eva, /obj/item/clothing/head/helmet/space/nasavoid)
|
||||
include_subtypes = FALSE
|
||||
export_types = list(/obj/item/clothing/head/helmet/space)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/space/suit
|
||||
cost = 150
|
||||
cost = 60
|
||||
unit_name = "space suit"
|
||||
export_types = list(/obj/item/clothing/suit/space, /obj/item/clothing/suit/space/eva, /obj/item/clothing/suit/space/nasavoid)
|
||||
include_subtypes = FALSE
|
||||
export_types = list(/obj/item/clothing/suit/space)
|
||||
include_subtypes = TRUE
|
||||
|
||||
datum/export/gear/space/helmet/plasma
|
||||
cost = 100
|
||||
unit_name = "plasmaman space helmet"
|
||||
export_types = list(/obj/item/clothing/suit/space/eva/plasmaman)
|
||||
|
||||
/datum/export/gear/space/syndiehelmet
|
||||
cost = 150
|
||||
unit_name = "Syndicate space helmet"
|
||||
/datum/export/gear/space/suit/plasma
|
||||
cost = 100
|
||||
unit_name = "plasmaman space suit"
|
||||
export_types = list(/obj/item/clothing/suit/space/eva/plasmaman)
|
||||
|
||||
datum/export/gear/space/helmet/synda
|
||||
cost = 150 //Flash proof
|
||||
unit_name = "syndicate space helmet"
|
||||
export_types = list(/obj/item/clothing/head/helmet/space/syndicate)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/space/syndiesuit
|
||||
cost = 300
|
||||
unit_name = "Syndicate space suit"
|
||||
export_types = list(/obj/item/clothing/suit/space/syndicate)
|
||||
/datum/export/gear/space/suit/synda
|
||||
cost = 150
|
||||
unit_name = "syndicate space suit"
|
||||
export_types = list(/obj/item/clothing/head/helmet/space/syndicate)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Glasses
|
||||
|
||||
//Blanket
|
||||
datum/export/gear/glasses //glasses are not worth selling
|
||||
cost = 3
|
||||
unit_name = "glasses"
|
||||
export_types = list(/obj/item/clothing/glasses)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/mesons
|
||||
cost = 6
|
||||
unit_name = "mesons"
|
||||
export_types = list(/obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/material/mining)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/scigoggles
|
||||
cost = 8
|
||||
unit_name = "chem giggles"
|
||||
export_types = list(/obj/item/clothing/glasses/science)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/nvgoggles
|
||||
cost = 20
|
||||
unit_name = "night vison giggles"
|
||||
export_types = list(/obj/item/clothing/glasses/night)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/sunglasses
|
||||
cost = 12
|
||||
unit_name = "sunglasses"
|
||||
export_types = list(/obj/item/clothing/glasses/sunglasses)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/huds
|
||||
cost = 10
|
||||
unit_name = "huds"
|
||||
export_types = list(/obj/item/clothing/glasses/hud)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/huds/glasses
|
||||
cost = 22
|
||||
export_types = list(/obj/item/clothing/glasses/hud/health/sunglasses, /obj/item/clothing/glasses/hud/security/sunglasses)
|
||||
|
||||
/datum/export/gear/weldinggoggles
|
||||
cost = 20
|
||||
unit_name = "welding goggles"
|
||||
export_types = list(/obj/item/clothing/glasses/welding)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/thermals
|
||||
cost = 30
|
||||
unit_name = "heat seeing goggles"
|
||||
export_types = list(/obj/item/clothing/glasses/thermal, /obj/item/clothing/glasses/hud/toggle/thermal)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/magic_glasses
|
||||
cost = 140
|
||||
unit_name = "magic goggles"
|
||||
export_types = list(/obj/item/clothing/glasses/godeye, /obj/item/clothing/glasses/hud/health/night/cultblind, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//////////
|
||||
//UNDER///
|
||||
//////////
|
||||
|
||||
/datum/export/gear/jumpsuit
|
||||
cost = 3
|
||||
unit_name = "jumpsuit"
|
||||
k_elasticity = 1/100 //you can craft white jumpsuits, if someone does that 300 times, they deserve the 800 credits
|
||||
export_types = list(/obj/item/clothing/under)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/fancy_jumpsuit
|
||||
cost = 10
|
||||
unit_name = "fancy clothing"
|
||||
k_elasticity = 1/90 //These will be what sells
|
||||
export_types = list(/obj/item/clothing/under/scratch, /obj/item/clothing/under/sl_suit, /obj/item/clothing/under/rank/vice, /obj/item/clothing/under/suit_jacket, \
|
||||
/obj/item/clothing/under/burial, /obj/item/clothing/under/skirt/black, /obj/item/clothing/under/captainparade, /obj/item/clothing/under/hosparademale, \
|
||||
/obj/item/clothing/under/hosparadefem, /obj/item/clothing/under/assistantformal, /obj/item/clothing/under/stripeddress, /obj/item/clothing/under/redeveninggown, \
|
||||
/obj/item/clothing/under/plaid_skirt, /obj/item/clothing/under/geisha, /obj/item/clothing/under/trek, /obj/item/clothing/under/wedding, /obj/item/clothing/under/aviatoruniform,\
|
||||
/obj/item/clothing/under/mega, /obj/item/clothing/under/cia, /obj/item/clothing/under/casualwear, /obj/item/clothing/under/rank)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/armored_jumpsuit
|
||||
cost = 15
|
||||
unit_name = "armored_jumpsuit"
|
||||
k_elasticity = 1/90 //These will be what sells
|
||||
export_types = list(/obj/item/clothing/under/durathread, /obj/item/clothing/under/rank/security, /obj/item/clothing/under/plasmaman, /obj/item/clothing/under/syndicate, \
|
||||
/obj/item/clothing/under/rank/det, /obj/item/clothing/under/rank/head_of_security, /obj/item/clothing/under/rank/security/spacepol)
|
||||
exclude_types = list(/obj/item/clothing/under/syndicate/tacticool, /obj/item/clothing/under/syndicate/tacticool/skirt)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/jumpsuit_addon
|
||||
cost = 12 //Few and rare as well as quick drop off of vaule
|
||||
unit_name = "jumpsuit add on"
|
||||
k_elasticity = 1/10
|
||||
export_types = list(/obj/item/clothing/accessory)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/robes_magic
|
||||
cost = 120
|
||||
unit_name = "magic robes"
|
||||
export_types = list(/obj/item/clothing/suit/wizrobe, /obj/item/clothing/suit/cultrobes, /obj/item/clothing/suit/magusred, /obj/item/clothing/suit/hooded/cultrobes)
|
||||
exclude_types = list(/obj/item/clothing/suit/wizrobe/fake)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//Amror
|
||||
/datum/export/gear/armor
|
||||
cost = 80
|
||||
unit_name = "misc armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/sec_armor
|
||||
cost = 180
|
||||
unit_name = "sec armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/vest/leather, /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/suit/armor/vest/det_suit)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/hosarmor
|
||||
cost = 380
|
||||
unit_name = "hos armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/hos)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/wardenarmor
|
||||
cost = 280
|
||||
unit_name = "warden armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/vest/warden)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/reflector
|
||||
cost = 500
|
||||
unit_name = "reflector armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/laserproof)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/heavy_armor
|
||||
cost = 600 //REALY hard to fine/make takes lots of slimes
|
||||
unit_name = "heavy armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/heavy)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/plate_armor
|
||||
cost = 200
|
||||
unit_name = "plate armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/riot/knight)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/riot_armor
|
||||
cost = 250
|
||||
unit_name = "riot armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/riot)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/bone_armor
|
||||
cost = 50
|
||||
unit_name = "bone armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/bone)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/swat_armor
|
||||
cost = 350
|
||||
unit_name = "swat mki armor"
|
||||
export_types = list(/obj/item/clothing/suit/space/swat)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/dragon_armor
|
||||
cost = 750
|
||||
unit_name = "drake bone armor"
|
||||
export_types = list(/obj/item/clothing/suit/hooded/cloak/drake)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/commandamor
|
||||
cost = 480
|
||||
unit_name = "command armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/vest/capcarapace, /obj/item/clothing/suit/armor/centcom)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/reactive_base
|
||||
cost = 600
|
||||
k_elasticity = 1/2 //Lets not go over board
|
||||
unit_name = "hollow reactive armor"
|
||||
export_types = list(/obj/item/reactive_armour_shell, /obj/item/clothing/suit/armor/reactive)
|
||||
|
||||
/datum/export/gear/reactive_active
|
||||
cost = 1200
|
||||
k_elasticity = 1/3 //Lets not go over board
|
||||
unit_name = "working reactive armor"
|
||||
export_types = list(/obj/item/clothing/suit/armor/reactive/repulse, /obj/item/clothing/suit/armor/reactive/tesla, /obj/item/clothing/suit/armor/reactive/teleport)
|
||||
|
||||
///////////////////////////
|
||||
//Bomb/Rad/Bio Suits/Fire//
|
||||
///////////////////////////
|
||||
|
||||
/datum/export/gear/radhelmet
|
||||
cost = 50
|
||||
cost = 20
|
||||
unit_name = "radsuit hood"
|
||||
export_types = list(/obj/item/clothing/head/radiation)
|
||||
|
||||
/datum/export/gear/radsuit
|
||||
cost = 100
|
||||
cost = 40
|
||||
unit_name = "radsuit"
|
||||
export_types = list(/obj/item/clothing/suit/radiation)
|
||||
|
||||
/datum/export/gear/firehelmet
|
||||
cost = 10
|
||||
unit_name = "firesuit helmet"
|
||||
export_types = list(/obj/item/clothing/head/hardhat/red)
|
||||
|
||||
/datum/export/gear/fireatmos
|
||||
cost = 120
|
||||
unit_name = "atmos firesuit"
|
||||
export_types = list(/obj/item/clothing/suit/fire/atmos)
|
||||
|
||||
/datum/export/gear/firesuit
|
||||
cost = 20
|
||||
unit_name = "firesuit"
|
||||
export_types = list(/obj/item/clothing/suit/fire, /obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/suit/fire/heavy)
|
||||
|
||||
/datum/export/gear/biohood
|
||||
cost = 50
|
||||
cost = 40
|
||||
unit_name = "biosuit hood"
|
||||
export_types = list(/obj/item/clothing/head/bio_hood)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/biosuit
|
||||
cost = 100
|
||||
cost = 60
|
||||
unit_name = "biosuit"
|
||||
export_types = list(/obj/item/clothing/suit/bio_suit)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/bombhelmet
|
||||
cost = 50
|
||||
cost = 40
|
||||
unit_name = "bomb suit hood"
|
||||
export_types = list(/obj/item/clothing/head/bomb_hood)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/bombsuit
|
||||
cost = 100
|
||||
cost = 60
|
||||
unit_name = "bomb suit"
|
||||
export_types = list(/obj/item/clothing/suit/bomb_suit)
|
||||
include_subtypes = TRUE
|
||||
|
||||
////////////////////
|
||||
//Cloaks and Coats//
|
||||
////////////////////
|
||||
|
||||
/datum/export/gear/cloaks
|
||||
cost = 30
|
||||
unit_name = "cloak"
|
||||
export_types = list(/obj/item/clothing/neck/cloak)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/cloaksmining
|
||||
cost = 90
|
||||
unit_name = "lava land cloak"
|
||||
export_types = list(/obj/item/clothing/suit/hooded/cloak/goliath)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/labcoats
|
||||
cost = 15
|
||||
unit_name = "labcoats"
|
||||
export_types = list(/obj/item/clothing/suit/toggle/labcoat)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/wintercoats
|
||||
cost = 25
|
||||
unit_name = "wintercoats"
|
||||
export_types = list(/obj/item/clothing/suit/hooded/wintercoat)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//////////
|
||||
//SUITS///
|
||||
//////////
|
||||
|
||||
/datum/export/gear/suits
|
||||
cost = 40
|
||||
unit_name = "suit"
|
||||
export_types = list(/obj/item/clothing/suit)
|
||||
include_subtypes = TRUE
|
||||
|
||||
//////////////////////
|
||||
//Chameleon Gear//////
|
||||
//////////////////////
|
||||
/datum/export/gear/chameleon //Selling a full kit is easy money for 2 tc
|
||||
cost = 280
|
||||
unit_name = "chameleon item"
|
||||
export_types = list(/obj/item/clothing/head/chameleon, /obj/item/clothing/mask/chameleon, /obj/item/clothing/under/chameleon, /obj/item/clothing/suit/chameleon, /obj/item/clothing/glasses/chameleon,\
|
||||
/obj/item/clothing/gloves/chameleon, /obj/item/clothing/head/chameleon, /obj/item/clothing/shoes/chameleon, /obj/item/storage/backpack/chameleon, \
|
||||
/obj/item/storage/belt/chameleon, /obj/item/radio/headset/chameleon, /obj/item/pda/chameleon, /obj/item/stamp/chameleon, /obj/item/clothing/neck/cloak/chameleon)
|
||||
include_subtypes = TRUE
|
||||
@@ -1,3 +1,6 @@
|
||||
/datum/export/large
|
||||
k_elasticity = 0
|
||||
|
||||
/datum/export/large/crate
|
||||
cost = 500
|
||||
k_elasticity = 0
|
||||
@@ -21,13 +24,13 @@
|
||||
export_types = list(/obj/structure/ore_box)
|
||||
|
||||
/datum/export/large/crate/wood
|
||||
cost = 240
|
||||
cost = 140
|
||||
unit_name = "wooden crate"
|
||||
export_types = list(/obj/structure/closet/crate/wooden)
|
||||
exclude_types = list()
|
||||
|
||||
/datum/export/large/crate/coffin
|
||||
cost = 250//50 wooden crates cost 2000 points, and you can make 10 coffins in seconds with those planks. Each coffin selling for 250 means you can make a net gain of 500 points for wasting your time making coffins.
|
||||
cost = 150
|
||||
unit_name = "coffin"
|
||||
export_types = list(/obj/structure/closet/crate/coffin)
|
||||
|
||||
@@ -131,16 +134,48 @@
|
||||
unit_name = "security barrier"
|
||||
export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security)
|
||||
|
||||
/datum/export/large/frame
|
||||
cost = 20
|
||||
unit_name = "structure frame"
|
||||
export_types = list(/obj/structure/frame, /obj/structure/table_frame)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/large/pacman
|
||||
cost = 125
|
||||
unit_name = "pacman"
|
||||
export_types = list(/obj/machinery/power/port_gen/pacman)
|
||||
|
||||
/datum/export/large/pacman
|
||||
cost = 150
|
||||
unit_name = "super pacman"
|
||||
export_types = list(/obj/machinery/power/port_gen/pacman/super)
|
||||
|
||||
/datum/export/large/pacman
|
||||
cost = 175
|
||||
unit_name = "mrs super pacman"
|
||||
export_types = list(/obj/machinery/power/port_gen/pacman/mrs)
|
||||
|
||||
/datum/export/large/hydroponics
|
||||
cost = 120
|
||||
unit_name = "hydroponics tray"
|
||||
export_types = list(/obj/machinery/hydroponics)
|
||||
|
||||
/datum/export/large/nice_chair
|
||||
cost = 12
|
||||
unit_name = "Padded Chair"
|
||||
export_types = list(/obj/structure/chair/comfy)
|
||||
|
||||
/datum/export/large/gas_canister
|
||||
cost = 10 //Base cost of canister. You get more for nice gases inside.
|
||||
unit_name = "Gas Canister"
|
||||
export_types = list(/obj/machinery/portable_atmospherics/canister)
|
||||
|
||||
/datum/export/large/gas_canister/get_cost(obj/O)
|
||||
var/obj/machinery/portable_atmospherics/canister/C = O
|
||||
var/worth = 10
|
||||
var/gases = C.air_contents.gases
|
||||
|
||||
worth += gases[/datum/gas/bz]*4
|
||||
worth += gases[/datum/gas/bz]*4
|
||||
worth += gases[/datum/gas/stimulum]*25
|
||||
worth += gases[/datum/gas/hypernoblium]*1000
|
||||
worth += gases[/datum/gas/miasma]*15
|
||||
@@ -149,86 +184,169 @@
|
||||
worth += gases[/datum/gas/nitryl]*30
|
||||
return worth
|
||||
|
||||
/datum/export/large/odysseus
|
||||
|
||||
//////////////
|
||||
//Matstatues//
|
||||
//////////////
|
||||
|
||||
/datum/export/large/nukestatue
|
||||
cost = 175
|
||||
unit_name = "Nuke statue"
|
||||
export_types = list(/obj/structure/statue/uranium/nuke)
|
||||
|
||||
/datum/export/large/engstatue
|
||||
cost = 175
|
||||
unit_name = "Engine statue"
|
||||
export_types = list(/obj/structure/statue/uranium/eng)
|
||||
|
||||
/datum/export/large/plasmastatue
|
||||
cost = 720
|
||||
unit_name = "Scientist statue"
|
||||
export_types = list(/obj/structure/statue/plasma/scientist)
|
||||
|
||||
/datum/export/large/hosstatue
|
||||
cost = 225
|
||||
unit_name = "HoS statue"
|
||||
export_types = list(/obj/structure/statue/gold/hos)
|
||||
|
||||
/datum/export/large/rdstatue
|
||||
cost = 225
|
||||
unit_name = "RD statue"
|
||||
export_types = list(/obj/structure/statue/gold/rd)
|
||||
|
||||
/datum/export/large/hopstatue
|
||||
cost = 225
|
||||
unit_name = "HoP statue"
|
||||
export_types = list(/obj/structure/statue/gold/hop)
|
||||
|
||||
/datum/export/large/cmostatue
|
||||
cost = 225
|
||||
unit_name = "CMO statue"
|
||||
export_types = list(/obj/structure/statue/gold/cmo)
|
||||
|
||||
/datum/export/large/cestatue
|
||||
cost = 225
|
||||
unit_name = "CE statue"
|
||||
export_types = list(/obj/structure/statue/gold/ce)
|
||||
|
||||
/datum/export/large/mdstatue
|
||||
cost = 200
|
||||
unit_name = "MD statue"
|
||||
export_types = list(/obj/structure/statue/silver/md)
|
||||
|
||||
/datum/export/large/janitorstatue
|
||||
cost = 200
|
||||
unit_name = "Janitor statue"
|
||||
export_types = list(/obj/structure/statue/silver/janitor)
|
||||
|
||||
/datum/export/large/secstatue
|
||||
cost = 200
|
||||
unit_name = "Sec statue"
|
||||
export_types = list(/obj/structure/statue/silver/sec)
|
||||
|
||||
/datum/export/large/medborgstatue
|
||||
cost = 200
|
||||
unit_name = "Medborg statue"
|
||||
export_types = list(/obj/structure/statue/silver/medborg)
|
||||
|
||||
/datum/export/large/secborgstatue
|
||||
cost = 200
|
||||
unit_name = "Secborg statue"
|
||||
export_types = list(/obj/structure/statue/silver/secborg)
|
||||
|
||||
/datum/export/large/capstatue
|
||||
cost = 1200
|
||||
unit_name = "Captain statue"
|
||||
export_types = list(/obj/structure/statue/diamond/captain)
|
||||
|
||||
/datum/export/large/aistatue
|
||||
cost = 1200
|
||||
unit_name = "AI statue"
|
||||
export_types = list(/obj/structure/statue/diamond/ai1, /obj/structure/statue/diamond/ai2)
|
||||
|
||||
/datum/export/large/clownstatue
|
||||
cost = 2750
|
||||
unit_name = "Clown statue"
|
||||
export_types = list(/obj/structure/statue/bananium/clown)
|
||||
|
||||
/datum/export/large/sandstatue
|
||||
cost = 90 //Big cash
|
||||
unit_name = "sandstone statue"
|
||||
export_types = list(/obj/structure/statue/sandstone/assistant)
|
||||
|
||||
////////////
|
||||
//MECHS/////
|
||||
////////////
|
||||
|
||||
/datum/export/large/mech
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/mech/odysseus
|
||||
cost = 5500
|
||||
unit_name = "working odysseus"
|
||||
export_types = list(/obj/mecha/medical/odysseus)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/ripley
|
||||
/datum/export/large/mech/ripley
|
||||
cost = 6500
|
||||
unit_name = "working ripley"
|
||||
export_types = list(/obj/mecha/working/ripley)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/firefighter
|
||||
/datum/export/large/mech/firefighter
|
||||
cost = 9000
|
||||
unit_name = "working firefighter"
|
||||
export_types = list(/obj/mecha/working/ripley/firefighter)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/gygax
|
||||
/datum/export/large/mech/gygax
|
||||
cost = 19000
|
||||
unit_name = "working gygax"
|
||||
export_types = list(/obj/mecha/combat/gygax)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/durand
|
||||
/datum/export/large/mech/durand
|
||||
cost = 10000
|
||||
unit_name = "working durand"
|
||||
export_types = list(/obj/mecha/combat/durand)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/phazon
|
||||
/datum/export/large/mech/phazon
|
||||
cost = 25000 //Little over half do to needing a core
|
||||
unit_name = "working phazon"
|
||||
export_types = list(/obj/mecha/combat/phazon)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/marauder
|
||||
/datum/export/large/mech/marauder
|
||||
cost = 15000 //Still a Combat class mech - CC tech as well! 150% "normal" boundy price.
|
||||
unit_name = "working marauder"
|
||||
export_types = list(/obj/mecha/combat/marauder)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/deathripley
|
||||
/datum/export/large/mech/deathripley
|
||||
cost = 8500 //Still a "Combat class" mech - Illegal tech as well! 165% "normal" boundy price.
|
||||
unit_name = "working illegally modified"
|
||||
export_types = list(/obj/mecha/working/ripley/deathripley)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/gygaxdark
|
||||
/datum/export/large/mech/gygaxdark
|
||||
cost = 28500 //Still a Combat class mech - Illegal tech as well! 150% "normal" boundy price.
|
||||
unit_name = "working illegally modified gygax"
|
||||
export_types = list(/obj/mecha/combat/gygax/dark)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/oldripley
|
||||
/datum/export/large/mech/oldripley
|
||||
cost = 6250 //old mech - Scrap metal ! 50% "normal" boundy price.
|
||||
unit_name = "working miner ripley"
|
||||
export_types = list(/obj/mecha/working/ripley/mining)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/honk
|
||||
/datum/export/large/mech/honk
|
||||
cost = 12000 //Still a "Combat class" mech - Comats bordem honk!
|
||||
unit_name = "working honker"
|
||||
export_types = list(/obj/mecha/combat/honker)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/reticence
|
||||
/datum/export/large/mech/reticence
|
||||
cost = 12000 //Still a "Combat class" mech - Has cloking and lethal weaponds.
|
||||
unit_name = "working reticence"
|
||||
export_types = list(/obj/mecha/combat/reticence)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/seraph
|
||||
/datum/export/large/mech/seraph
|
||||
cost = 25500 //Still a Combat class mech - CC tech as well! 150% "normal" boundy price.
|
||||
unit_name = "working seraph"
|
||||
export_types = list(/obj/mecha/combat/marauder/seraph)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/large/mauler
|
||||
/datum/export/large/mech/mauler
|
||||
cost = 12000 //Still a Combat class mech - CC lethal weaponds.
|
||||
unit_name = "working legally modified marauder"
|
||||
export_types = list(/obj/mecha/combat/marauder/mauler)
|
||||
include_subtypes = FALSE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/datum/export/material
|
||||
k_elasticity = 0
|
||||
cost = 5 // Cost per MINERAL_MATERIAL_AMOUNT, which is 2000cm3 as of April 2016.
|
||||
message = "cm3 of developer's tears. Please, report this on github"
|
||||
var/material_id = null
|
||||
@@ -27,51 +28,56 @@
|
||||
|
||||
return round(amount/MINERAL_MATERIAL_AMOUNT)
|
||||
|
||||
// Materials. Nothing but plasma is really worth selling. Better leave it all to RnD and sell some plasma instead.
|
||||
// Materials. Selling raw can lead to a big payout but takes a lot of work for miners to get a lot. Best to craft art/rnd gear
|
||||
|
||||
/datum/export/material/bananium
|
||||
cost = 1000
|
||||
cost = 500
|
||||
material_id = MAT_BANANIUM
|
||||
message = "cm3 of bananium"
|
||||
|
||||
/datum/export/material/diamond
|
||||
cost = 500
|
||||
cost = 250
|
||||
material_id = MAT_DIAMOND
|
||||
message = "cm3 of diamonds"
|
||||
|
||||
/datum/export/material/plasma
|
||||
cost = 200
|
||||
cost = 100
|
||||
k_elasticity = 0
|
||||
material_id = MAT_PLASMA
|
||||
message = "cm3 of plasma"
|
||||
|
||||
/datum/export/material/uranium
|
||||
cost = 100
|
||||
cost = 50
|
||||
material_id = MAT_URANIUM
|
||||
message = "cm3 of uranium"
|
||||
|
||||
/datum/export/material/gold
|
||||
cost = 125
|
||||
cost = 60
|
||||
material_id = MAT_GOLD
|
||||
message = "cm3 of gold"
|
||||
|
||||
/datum/export/material/silver
|
||||
cost = 50
|
||||
cost = 25
|
||||
material_id = MAT_SILVER
|
||||
message = "cm3 of silver"
|
||||
|
||||
/datum/export/material/titanium
|
||||
cost = 125
|
||||
cost = 60
|
||||
material_id = MAT_TITANIUM
|
||||
message = "cm3 of titanium"
|
||||
|
||||
/datum/export/material/plastitanium
|
||||
cost = 325 // plasma + titanium costs
|
||||
cost = 165 // plasma + titanium costs
|
||||
material_id = MAT_TITANIUM // code can only check for one material_id; plastitanium is half plasma, half titanium
|
||||
message = "cm3 of plastitanium"
|
||||
|
||||
/datum/export/material/metal
|
||||
/datum/export/material/plastic
|
||||
cost = 5
|
||||
material_id = MAT_PLASTIC
|
||||
message = "cm3 of plastic"
|
||||
|
||||
/datum/export/material/metal
|
||||
cost = 3
|
||||
message = "cm3 of metal"
|
||||
material_id = MAT_METAL
|
||||
export_types = list(
|
||||
@@ -79,7 +85,7 @@
|
||||
/obj/item/stack/rods, /obj/item/stack/ore, /obj/item/coin)
|
||||
|
||||
/datum/export/material/glass
|
||||
cost = 5
|
||||
cost = 3
|
||||
message = "cm3 of glass"
|
||||
material_id = MAT_GLASS
|
||||
export_types = list(/obj/item/stack/sheet/glass, /obj/item/stack/ore,
|
||||
|
||||
141
code/modules/cargo/exports/orgains_robotics.dm
Normal file
141
code/modules/cargo/exports/orgains_robotics.dm
Normal file
@@ -0,0 +1,141 @@
|
||||
// Orgains and Robotics exports. Hearts, new lims, implants, etc.
|
||||
|
||||
/datum/export/robotics
|
||||
include_subtypes = FALSE
|
||||
k_elasticity = 0 //ALWAYS worth selling upgrades
|
||||
|
||||
/datum/export/implant
|
||||
include_subtypes = FALSE
|
||||
k_elasticity = 0 //ALWAYS worth selling upgrades
|
||||
|
||||
/datum/export/orgains
|
||||
include_subtypes = TRUE
|
||||
k_elasticity = 0 //ALWAYS worth selling orgains
|
||||
|
||||
/datum/export/implant/autodoc
|
||||
cost = 150
|
||||
unit_name = "autsurgeon"
|
||||
export_types = list(/obj/item/autosurgeon)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/implant/implant
|
||||
cost = 50
|
||||
unit_name = "implant"
|
||||
export_types = list(/obj/item/implant)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/implant/cnsreboot
|
||||
cost = 350
|
||||
unit_name = "anti drop implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/brain/anti_drop)
|
||||
|
||||
/datum/export/implant/antistun
|
||||
cost = 450
|
||||
unit_name = "rebooter implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/brain/anti_stun)
|
||||
|
||||
/datum/export/implant/breathtube
|
||||
cost = 150
|
||||
unit_name = "breath implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/mouth/breathing_tube)
|
||||
|
||||
/datum/export/implant/hungerbgone
|
||||
cost = 200
|
||||
unit_name = "nutriment implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/chest/nutriment)
|
||||
|
||||
/datum/export/implant/hungerbgoneplus
|
||||
cost = 300
|
||||
unit_name = "upgraded nutriment implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/chest/nutriment/plus)
|
||||
|
||||
/datum/export/implant/reviver
|
||||
cost = 350
|
||||
unit_name = "reviver implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/chest/reviver)
|
||||
|
||||
/datum/export/implant/thrusters
|
||||
cost = 150
|
||||
unit_name = "thrusters set implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/chest/thrusters)
|
||||
|
||||
/datum/export/implant/thrusters
|
||||
cost = 150
|
||||
unit_name = "thrusters set implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/chest/thrusters)
|
||||
|
||||
/datum/export/implant/arm
|
||||
cost = 200
|
||||
unit_name = "arm set implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/arm/toolset, /obj/item/organ/cyberimp/arm/surgery)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/implant/combatarm
|
||||
cost = 800
|
||||
unit_name = "combat arm set implant"
|
||||
export_types = list(/obj/item/organ/cyberimp/arm/gun/laser, /obj/item/organ/cyberimp/arm/gun/taser, /obj/item/organ/cyberimp/arm/esword, /obj/item/organ/cyberimp/arm/medibeam, /obj/item/organ/cyberimp/arm/combat, /obj/item/organ/cyberimp/arm/flash, /obj/item/organ/cyberimp/arm/baton)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/orgains/heart
|
||||
cost = 250
|
||||
unit_name = "heart"
|
||||
export_types = list(/obj/item/organ/heart)
|
||||
exclude_types = list(/obj/item/organ/heart/cursed, /obj/item/organ/heart/cybernetic)
|
||||
|
||||
/datum/export/orgains/tongue
|
||||
cost = 75
|
||||
unit_name = "tongue"
|
||||
export_types = list(/obj/item/organ/tongue)
|
||||
|
||||
/datum/export/orgains/eyes
|
||||
cost = 50 //So many things take your eyes out anyways
|
||||
unit_name = "eyes"
|
||||
export_types = list(/obj/item/organ/eyes)
|
||||
exclude_types = list(/obj/item/organ/eyes/robotic)
|
||||
|
||||
/datum/export/orgains/stomach
|
||||
cost = 50 //can be replaced
|
||||
unit_name = "stomach"
|
||||
export_types = list(/obj/item/organ/stomach)
|
||||
|
||||
/datum/export/orgains/lungs
|
||||
cost = 150
|
||||
unit_name = "lungs"
|
||||
export_types = list(/obj/item/organ/lungs)
|
||||
exclude_types = list(/obj/item/organ/lungs/cybernetic, /obj/item/organ/lungs/cybernetic/upgraded)
|
||||
|
||||
/datum/export/orgains/liver
|
||||
cost = 175
|
||||
unit_name = "liver"
|
||||
export_types = list(/obj/item/organ/liver)
|
||||
exclude_types = list(/obj/item/organ/liver/cybernetic, /obj/item/organ/liver/cybernetic/upgraded)
|
||||
|
||||
/datum/export/orgains/tail //Shhh
|
||||
cost = 500
|
||||
unit_name = "error shipment failer"
|
||||
export_types = list(/obj/item/organ/tail)
|
||||
|
||||
/datum/export/orgains/vocal_cords
|
||||
cost = 500
|
||||
unit_name = "vocal cords"
|
||||
export_types = list(/obj/item/organ/vocal_cords) //These are gotten via different races
|
||||
|
||||
/datum/export/robotics/lims
|
||||
cost = 30
|
||||
unit_name = "robotic lim replacement"
|
||||
export_types = list(/obj/item/bodypart/l_arm/robot, /obj/item/bodypart/r_arm/robot, /obj/item/bodypart/l_leg/robot, /obj/item/bodypart/r_leg/robot, /obj/item/bodypart/chest/robot, /obj/item/bodypart/head/robot)
|
||||
|
||||
/datum/export/robotics/surpluse
|
||||
cost = 40
|
||||
unit_name = "robotic lim replacement"
|
||||
export_types = list(/obj/item/bodypart/l_arm/robot/surplus, /obj/item/bodypart/r_arm/robot/surplus, /obj/item/bodypart/l_leg/robot/surplus, /obj/item/bodypart/r_leg/robot/surplus)
|
||||
|
||||
/datum/export/robotics/surplus_upgraded
|
||||
cost = 50
|
||||
unit_name = "upgraded robotic lim replacement"
|
||||
export_types = list(/obj/item/bodypart/l_arm/robot/surplus_upgraded, /obj/item/bodypart/r_arm/robot/surplus_upgraded, /obj/item/bodypart/l_leg/robot/surplus_upgraded, /obj/item/bodypart/r_leg/robot/surplus_upgraded)
|
||||
|
||||
/datum/export/robotics/surgery_gear_basic
|
||||
cost = 5
|
||||
unit_name = "surgery tool"
|
||||
export_types = list(/obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, /obj/item/surgical_drapes)
|
||||
@@ -6,16 +6,96 @@
|
||||
export_types = list(/obj/item/solar_assembly)
|
||||
|
||||
/datum/export/solar/tracker_board
|
||||
cost = 100
|
||||
cost = 30
|
||||
unit_name = "solar tracker board"
|
||||
export_types = list(/obj/item/electronics/tracker)
|
||||
|
||||
/datum/export/solar/control_board
|
||||
cost = 150
|
||||
cost = 75
|
||||
unit_name = "solar panel control board"
|
||||
export_types = list(/obj/item/circuitboard/computer/solar_control)
|
||||
|
||||
/datum/export/swarmer
|
||||
cost = 2000
|
||||
cost = 500
|
||||
unit_name = "deactivated alien deconstruction drone"
|
||||
export_types = list(/obj/item/deactivated_swarmer)
|
||||
|
||||
//Board
|
||||
|
||||
/datum/export/board
|
||||
cost = 5
|
||||
unit_name = "circuit board"
|
||||
export_types = list(/obj/item/circuitboard)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/board/SMES
|
||||
cost = 20
|
||||
k_elasticity = 1/2 //Only a few
|
||||
unit_name = "smes board"
|
||||
export_types = list(/obj/item/circuitboard/machine/smes)
|
||||
|
||||
//Stock Parts
|
||||
|
||||
/datum/export/subspace
|
||||
cost = 3
|
||||
unit_name = "subspace part"
|
||||
export_types = list(/obj/item/stock_parts/subspace)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/t1
|
||||
cost = 1
|
||||
unit_name = "basic stock part"
|
||||
export_types = list(/obj/item/stock_parts/capacitor, /obj/item/stock_parts/scanning_module, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/micro_laser, /obj/item/stock_parts/matter_bin)
|
||||
|
||||
/datum/export/t2
|
||||
cost = 2
|
||||
unit_name = "upgraded stock part"
|
||||
export_types = list(/obj/item/stock_parts/capacitor/adv, /obj/item/stock_parts/scanning_module/adv, /obj/item/stock_parts/manipulator/nano, /obj/item/stock_parts/micro_laser/high, /obj/item/stock_parts/matter_bin/adv)
|
||||
|
||||
/datum/export/t3
|
||||
cost = 3
|
||||
unit_name = "advanced stock part"
|
||||
export_types = list(/obj/item/stock_parts/capacitor/super, /obj/item/stock_parts/scanning_module/phasic, /obj/item/stock_parts/manipulator/pico, /obj/item/stock_parts/micro_laser/ultra, /obj/item/stock_parts/matter_bin/super)
|
||||
|
||||
/datum/export/t4
|
||||
cost = 4
|
||||
unit_name = "blue space stock part"
|
||||
export_types = list(/obj/item/stock_parts/capacitor/quadratic, /obj/item/stock_parts/scanning_module/triphasic, /obj/item/stock_parts/manipulator/femto, /obj/item/stock_parts/micro_laser/quadultra, /obj/item/stock_parts/matter_bin/bluespace)
|
||||
|
||||
//Cells
|
||||
|
||||
/datum/export/cell
|
||||
cost = 5
|
||||
unit_name = "power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/cell
|
||||
cost = 10
|
||||
unit_name = "upgraded power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/upgraded, /obj/item/stock_parts/cell/upgraded/plus)
|
||||
|
||||
/datum/export/cellhigh
|
||||
cost = 15
|
||||
unit_name = "high power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high/plus)
|
||||
|
||||
/datum/export/cellhyper
|
||||
cost = 20
|
||||
unit_name = "super-capacity power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/super, /obj/item/stock_parts/cell/hyper)
|
||||
|
||||
/datum/export/cellbs
|
||||
cost = 25
|
||||
unit_name = "bluespace power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/bluespace)
|
||||
|
||||
/datum/export/cellyellow
|
||||
cost = 40
|
||||
unit_name = "slime power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/high/slime)
|
||||
|
||||
/datum/export/cellyellowhyper
|
||||
cost = 120 //Takes a lot to make and is really good
|
||||
unit_name = "hyper slime power cell"
|
||||
export_types = list(/obj/item/stock_parts/cell/high/slime/hypercharged)
|
||||
@@ -1,5 +1,6 @@
|
||||
/datum/export/stack
|
||||
unit_name = "sheet"
|
||||
k_elasticity = 0
|
||||
|
||||
/datum/export/stack/get_amount(obj/O)
|
||||
var/obj/item/stack/S = O
|
||||
@@ -9,47 +10,52 @@
|
||||
|
||||
// Hides
|
||||
|
||||
/datum/export/stack/leather
|
||||
cost = 30
|
||||
unit_name = "leather"
|
||||
export_types = list(/obj/item/stack/sheet/leather)
|
||||
|
||||
/datum/export/stack/skin/monkey
|
||||
cost = 50
|
||||
cost = 30
|
||||
unit_name = "monkey hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/monkey)
|
||||
|
||||
/datum/export/stack/skin/human
|
||||
cost = 100
|
||||
cost = 70
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "piece"
|
||||
message = "of human skin"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/human)
|
||||
|
||||
/datum/export/stack/skin/goliath_hide
|
||||
cost = 200
|
||||
cost = 160
|
||||
unit_name = "goliath hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide)
|
||||
|
||||
/datum/export/stack/skin/cat
|
||||
cost = 150
|
||||
cost = 120
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "cat hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/cat)
|
||||
|
||||
/datum/export/stack/skin/corgi
|
||||
cost = 200
|
||||
cost = 140
|
||||
export_category = EXPORT_CONTRABAND
|
||||
unit_name = "corgi hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/corgi)
|
||||
|
||||
/datum/export/stack/skin/lizard
|
||||
cost = 150
|
||||
cost = 50
|
||||
unit_name = "lizard hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/lizard)
|
||||
|
||||
/datum/export/stack/skin/gondola
|
||||
cost = 5000
|
||||
cost = 1000
|
||||
unit_name = "gondola hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/gondola)
|
||||
|
||||
/datum/export/stack/skin/xeno
|
||||
cost = 500
|
||||
cost = 300
|
||||
unit_name = "alien hide"
|
||||
export_types = list(/obj/item/stack/sheet/animalhide/xeno)
|
||||
|
||||
@@ -57,23 +63,23 @@
|
||||
// For base materials, see materials.dm
|
||||
|
||||
/datum/export/stack/plasteel
|
||||
cost = 155 // 2000u of plasma + 2000u of metal.
|
||||
cost = 105 // 2000u of plasma + 2000u of metal.
|
||||
message = "of plasteel"
|
||||
export_types = list(/obj/item/stack/sheet/plasteel)
|
||||
|
||||
// 1 glass + 0.5 metal, cost is rounded up.
|
||||
/datum/export/stack/rglass
|
||||
cost = 8
|
||||
cost = 6
|
||||
message = "of reinforced glass"
|
||||
export_types = list(/obj/item/stack/sheet/rglass)
|
||||
|
||||
/datum/export/stack/bscrystal
|
||||
cost = 300
|
||||
cost = 150
|
||||
message = "of bluespace crystals"
|
||||
export_types = list(/obj/item/stack/sheet/bluespace_crystal)
|
||||
|
||||
/datum/export/stack/wood
|
||||
cost = 30
|
||||
cost = 15
|
||||
unit_name = "wood plank"
|
||||
export_types = list(/obj/item/stack/sheet/mineral/wood)
|
||||
|
||||
@@ -93,16 +99,50 @@
|
||||
unit_name = "cable piece"
|
||||
export_types = list(/obj/item/stack/cable_coil)
|
||||
|
||||
/datum/export/stack/cloth
|
||||
cost = 10
|
||||
unit_name = "sheets"
|
||||
message = "of cloth"
|
||||
export_types = list(/obj/item/stack/sheet/cloth)
|
||||
|
||||
/datum/export/stack/duracloth
|
||||
cost = 40
|
||||
unit_name = "sheets"
|
||||
message = "of duracloth"
|
||||
export_types = list(/obj/item/stack/sheet/durathread)
|
||||
|
||||
// Weird Stuff
|
||||
|
||||
/datum/export/stack/abductor
|
||||
cost = 1000
|
||||
cost = 400
|
||||
message = "of alien alloy"
|
||||
export_types = list(/obj/item/stack/sheet/mineral/abductor)
|
||||
|
||||
/datum/export/stack/adamantine
|
||||
unit_name = "bar"
|
||||
cost = 500
|
||||
cost = 250
|
||||
message = "of adamantine"
|
||||
export_types = list(/obj/item/stack/sheet/mineral/adamantine)
|
||||
|
||||
/datum/export/stack/bone
|
||||
cost = 20
|
||||
message = "of bones"
|
||||
export_types = list(/obj/item/stack/sheet/bone)
|
||||
|
||||
/datum/export/stack/bronze
|
||||
unit_name = "tiles"
|
||||
cost = 5
|
||||
message = "of brozne"
|
||||
export_types = list(/obj/item/stack/tile/bronze)
|
||||
|
||||
/datum/export/stack/brass
|
||||
unit_name = "tiles"
|
||||
cost = 50
|
||||
message = "of brass"
|
||||
export_types = list(/obj/item/stack/tile/brass)
|
||||
|
||||
/datum/export/stack/paper
|
||||
unit_name = "sheets"
|
||||
cost = 30
|
||||
message = "of paperframes"
|
||||
export_types = list(/obj/item/stack/sheet/paperframes)
|
||||
@@ -1,5 +1,5 @@
|
||||
/datum/export/toolbox
|
||||
cost = 4
|
||||
cost = 6
|
||||
unit_name = "toolbox"
|
||||
export_types = list(/obj/item/storage/toolbox)
|
||||
|
||||
@@ -8,7 +8,80 @@
|
||||
// electrical toolbox: 36cr
|
||||
// robust: priceless
|
||||
|
||||
// Adv tools
|
||||
|
||||
/datum/export/gear/powerdrill
|
||||
cost = 25
|
||||
k_elasticity = 1/40 //Market can only take so much
|
||||
unit_name = "power tool"
|
||||
export_types = list(/obj/item/crowbar/power, /obj/item/screwdriver/power, \
|
||||
/obj/item/weldingtool/experimental, /obj/item/wirecutters/power, /obj/item/wrench/power)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/gear/advtool
|
||||
cost = 175
|
||||
k_elasticity = 0 //Only known to be made by 2 station, market is hungery for it
|
||||
unit_name = "adv tool"
|
||||
export_types = list(/obj/item/crowbar/advanced, /obj/item/crowbar/abductor, /obj/item/screwdriver/abductor, /obj/item/screwdriver/advanced, \
|
||||
/obj/item/weldingtool/abductor, /obj/item/weldingtool/advanced, /obj/item/wirecutters/abductor, /obj/item/wirecutters/advanced, \
|
||||
/obj/item/wrench/abductor, /obj/item/wrench/advanced)
|
||||
include_subtypes = TRUE
|
||||
|
||||
// Lights/Eletronic
|
||||
|
||||
/datum/export/lights
|
||||
cost = 10
|
||||
unit_name = "light fixer"
|
||||
export_types = list(/obj/item/wallframe/light_fixture)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/apc_board
|
||||
cost = 5
|
||||
unit_name = "apc electronics"
|
||||
export_types = list(/obj/item/electronics/apc)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/apc_frame
|
||||
cost = 3
|
||||
unit_name = "apc frame"
|
||||
export_types = list(/obj/item/wallframe/apc)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/floodlights
|
||||
cost = 15
|
||||
unit_name = "floodlight fixer"
|
||||
export_types = list(/obj/structure/floodlight_frame)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/bolbstubes
|
||||
cost = 1 //Time
|
||||
unit_name = "light replacement"
|
||||
export_types = list(/obj/item/light/tube, /obj/item/light/bulb)
|
||||
|
||||
/datum/export/lightreplacer
|
||||
cost = 20
|
||||
unit_name = "lightreplacer"
|
||||
export_types = list(/obj/item/lightreplacer)
|
||||
|
||||
// Basic tools
|
||||
/datum/export/basicmining
|
||||
cost = 20
|
||||
unit_name = "basic mining tool"
|
||||
export_types = list(/obj/item/pickaxe, /obj/item/pickaxe/mini, /obj/item/shovel, /obj/item/resonator)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/upgradedmining
|
||||
cost = 50
|
||||
unit_name = "mining tool"
|
||||
export_types = list(/obj/item/pickaxe/silver, /obj/item/pickaxe/drill, /obj/item/gun/energy/plasmacutter, /obj/item/resonator/upgraded)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/advdmining
|
||||
cost = 150
|
||||
unit_name = "advanced mining tool"
|
||||
export_types = list(/obj/item/pickaxe/diamond, /obj/item/pickaxe/drill/diamonddrill, /obj/item/pickaxe/drill/jackhammer, /obj/item/gun/energy/plasmacutter/adv)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/screwdriver
|
||||
cost = 2
|
||||
unit_name = "screwdriver"
|
||||
@@ -31,7 +104,6 @@
|
||||
message = "of wirecutters"
|
||||
export_types = list(/obj/item/wirecutters)
|
||||
|
||||
|
||||
/datum/export/weldingtool
|
||||
cost = 5
|
||||
unit_name = "welding tool"
|
||||
@@ -48,9 +120,8 @@
|
||||
unit_name = "industrial welding tool"
|
||||
export_types = list(/obj/item/weldingtool/largetank, /obj/item/weldingtool/hugetank)
|
||||
|
||||
|
||||
/datum/export/extinguisher
|
||||
cost = 15
|
||||
cost = 10
|
||||
unit_name = "fire extinguisher"
|
||||
export_types = list(/obj/item/extinguisher)
|
||||
include_subtypes = FALSE
|
||||
@@ -60,9 +131,8 @@
|
||||
unit_name = "pocket fire extinguisher"
|
||||
export_types = list(/obj/item/extinguisher/mini)
|
||||
|
||||
|
||||
/datum/export/flashlight
|
||||
cost = 5
|
||||
cost = 3
|
||||
unit_name = "flashlight"
|
||||
export_types = list(/obj/item/flashlight)
|
||||
include_subtypes = FALSE
|
||||
@@ -73,11 +143,10 @@
|
||||
export_types = list(/obj/item/flashlight/flare)
|
||||
|
||||
/datum/export/flashlight/seclite
|
||||
cost = 10
|
||||
cost = 5
|
||||
unit_name = "seclite"
|
||||
export_types = list(/obj/item/flashlight/seclite)
|
||||
|
||||
|
||||
/datum/export/analyzer
|
||||
cost = 5
|
||||
unit_name = "analyzer"
|
||||
@@ -88,14 +157,12 @@
|
||||
unit_name = "t-ray scanner"
|
||||
export_types = list(/obj/item/t_scanner)
|
||||
|
||||
|
||||
/datum/export/radio
|
||||
cost = 5
|
||||
unit_name = "radio"
|
||||
export_types = list(/obj/item/radio)
|
||||
exclude_types = list(/obj/item/radio/mech)
|
||||
|
||||
|
||||
/datum/export/rcd
|
||||
cost = 100
|
||||
unit_name = "rapid construction device"
|
||||
@@ -111,6 +178,21 @@
|
||||
unit_name = "rapid piping device"
|
||||
export_types = list(/obj/item/pipe_dispenser)
|
||||
|
||||
/datum/export/rld
|
||||
cost = 150
|
||||
unit_name = "rapid light device"
|
||||
export_types = list(/obj/item/construction/rld)
|
||||
|
||||
/datum/export/rped
|
||||
cost = 100
|
||||
unit_name = "rapid part exchange device"
|
||||
export_types = list(/obj/item/storage/part_replacer)
|
||||
|
||||
/datum/export/bsrped
|
||||
cost = 200
|
||||
unit_name = "blue space part exchange device"
|
||||
export_types = list(/obj/item/storage/part_replacer/bluespace)
|
||||
|
||||
/datum/export/singulo //failsafe in case someone decides to ship a live singularity to CentCom without the corresponding bounty
|
||||
cost = 1
|
||||
unit_name = "singularity"
|
||||
|
||||
@@ -3,6 +3,26 @@
|
||||
/datum/export/weapon
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/export/weapon/makeshift_shield
|
||||
cost = 30
|
||||
unit_name = "unknown shield"
|
||||
export_types = list(/obj/item/shield/riot, /obj/item/shield/riot/roman, /obj/item/shield/riot/buckler, /obj/item/shield/makeshift)
|
||||
|
||||
/datum/export/weapon/riot_shield
|
||||
cost = 50
|
||||
unit_name = "riot shield"
|
||||
export_types = list(/obj/item/shield/riot, /obj/item/shield/riot/tower)
|
||||
|
||||
/datum/export/weapon/riot_shield
|
||||
cost = 70
|
||||
unit_name = "flash shield"
|
||||
export_types = list(/obj/item/assembly/flash/shield)
|
||||
|
||||
/datum/export/weapon/tele_shield
|
||||
cost = 100
|
||||
unit_name = "tele shield"
|
||||
export_types = list(/obj/item/shield/riot/tele, /obj/item/shield/energy)
|
||||
|
||||
/datum/export/weapon/baton
|
||||
cost = 100
|
||||
unit_name = "stun baton"
|
||||
@@ -15,7 +35,6 @@
|
||||
unit_name = "combat knife"
|
||||
export_types = list(/obj/item/kitchen/knife/combat)
|
||||
|
||||
|
||||
/datum/export/weapon/taser
|
||||
cost = 200
|
||||
unit_name = "advanced taser"
|
||||
@@ -27,26 +46,25 @@
|
||||
export_types = list(/obj/item/gun/energy/laser)
|
||||
|
||||
/datum/export/weapon/disabler
|
||||
cost = 100
|
||||
cost = 50
|
||||
unit_name = "disabler"
|
||||
export_types = list(/obj/item/gun/energy/disabler)
|
||||
|
||||
/datum/export/weapon/energy_gun
|
||||
cost = 300
|
||||
cost = 200
|
||||
unit_name = "energy gun"
|
||||
export_types = list(/obj/item/gun/energy/e_gun)
|
||||
|
||||
/datum/export/weapon/wt550
|
||||
cost = 300
|
||||
cost = 130
|
||||
unit_name = "WT-550 automatic rifle"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/wt550)
|
||||
|
||||
/datum/export/weapon/shotgun
|
||||
cost = 300
|
||||
cost = 200
|
||||
unit_name = "combat shotgun"
|
||||
export_types = list(/obj/item/gun/ballistic/shotgun/automatic/combat)
|
||||
|
||||
|
||||
/datum/export/weapon/flashbang
|
||||
cost = 5
|
||||
unit_name = "flashbang grenade"
|
||||
@@ -57,7 +75,6 @@
|
||||
unit_name = "tear gas grenade"
|
||||
export_types = list(/obj/item/grenade/chem_grenade/teargas)
|
||||
|
||||
|
||||
/datum/export/weapon/flash
|
||||
cost = 5
|
||||
unit_name = "handheld flash"
|
||||
@@ -69,3 +86,271 @@
|
||||
unit_name = "pair"
|
||||
message = "of handcuffs"
|
||||
export_types = list(/obj/item/restraints/handcuffs)
|
||||
|
||||
//////////////
|
||||
//RND Guns////
|
||||
//////////////
|
||||
|
||||
/datum/export/weapon/lasercarbine
|
||||
cost = 120
|
||||
unit_name = "laser carbine"
|
||||
export_types = list(/obj/item/gun/energy/laser/carbine)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/teslagun
|
||||
cost = 130
|
||||
unit_name = "tesla revolver"
|
||||
export_types = list(/obj/item/gun/energy/tesla_revolver)
|
||||
|
||||
/datum/export/weapon/aeg
|
||||
cost = 200 //Endless power
|
||||
unit_name = "advance engery gun"
|
||||
export_types = list(/obj/item/gun/energy/e_gun/nuclear)
|
||||
|
||||
/datum/export/weapon/deconer
|
||||
cost = 600
|
||||
unit_name = "deconer"
|
||||
export_types = list(/obj/item/gun/energy/decloner)
|
||||
|
||||
/datum/export/weapon/ntsniper
|
||||
cost = 500
|
||||
unit_name = "beam rifle"
|
||||
export_types = list(/obj/item/gun/energy/beam_rifle)
|
||||
|
||||
/datum/export/weapon/needle_gun
|
||||
cost = 50
|
||||
unit_name = "syringe revolver"
|
||||
export_types = list(/obj/item/gun/syringe/rapidsyringe)
|
||||
|
||||
/datum/export/weapon/temp_gun
|
||||
cost = 175 //Its just smaller
|
||||
unit_name = "small temperature gun"
|
||||
k_elasticity = 1/5 //Its just a smaller temperature gun, easy to mass make
|
||||
export_types = list(/obj/item/gun/energy/temperature)
|
||||
|
||||
/datum/export/weapon/flowergun
|
||||
cost = 100
|
||||
unit_name = "floral somatoray"
|
||||
export_types = list(/obj/item/gun/energy/floragun)
|
||||
|
||||
/datum/export/weapon/xraygun
|
||||
cost = 300 //Wall hacks
|
||||
unit_name = "x ray gun"
|
||||
export_types = list(/obj/item/gun/energy/xray)
|
||||
|
||||
/datum/export/weapon/ioncarbine
|
||||
cost = 200
|
||||
k_elasticity = 1/5 //Its just a smaller temperature gun, easy to mass make
|
||||
unit_name = "ion carbine"
|
||||
export_types = list(/obj/item/gun/energy/ionrifle/carbine)
|
||||
|
||||
/datum/export/weapon/largeebow
|
||||
cost = 500
|
||||
unit_name = "crossbow"
|
||||
export_types = list(/obj/item/gun/energy/kinetic_accelerator/crossbow/large)
|
||||
|
||||
/datum/export/weapon/largebomb
|
||||
cost = 20
|
||||
unit_name = "large grenade"
|
||||
export_types = list(/obj/item/grenade/chem_grenade/large)
|
||||
|
||||
/datum/export/weapon/gravworm
|
||||
cost = 150
|
||||
unit_name = "bluespace weapon"
|
||||
export_types = list(/obj/item/gun/energy/wormhole_projector, /obj/item/gun/energy/gravity_gun)
|
||||
|
||||
/datum/export/weapon/cryopryo
|
||||
cost = 70
|
||||
unit_name = "heat based grenade"
|
||||
export_types = list(/obj/item/grenade/chem_grenade/pyro, /obj/item/grenade/chem_grenade/cryo)
|
||||
|
||||
/datum/export/weapon/advgrenade
|
||||
cost = 80
|
||||
unit_name = "advanced grenade"
|
||||
export_types = list(/obj/item/grenade/chem_grenade/adv_release)
|
||||
|
||||
/////////////////
|
||||
//Ammo and Pins//
|
||||
/////////////////
|
||||
|
||||
/datum/export/weapon/wtammo
|
||||
cost = 10
|
||||
unit_name = "WT-550 automatic rifle ammo"
|
||||
export_types = list(/obj/item/ammo_box/magazine/wt550m9, /obj/item/ammo_box/magazine/wt550m9/wtrubber)
|
||||
|
||||
/datum/export/weapon/wtammo/advanced
|
||||
cost = 30
|
||||
unit_name = "advanced WT-550 automatic rifle ammo"
|
||||
export_types = list( /obj/item/ammo_box/magazine/wt550m9/wtap, /obj/item/ammo_box/magazine/wt550m9/wttx, /obj/item/ammo_box/magazine/wt550m9/wtic)
|
||||
|
||||
/datum/export/weapon/mindshield
|
||||
cost = 80
|
||||
unit_name = "mindshield locked pin"
|
||||
export_types = list(/obj/item/firing_pin/implant/mindshield)
|
||||
|
||||
/datum/export/weapon/testrange
|
||||
cost = 20
|
||||
unit_name = "test range pin"
|
||||
export_types = list(/obj/item/firing_pin/test_range)
|
||||
|
||||
/datum/export/weapon/techslug
|
||||
cost = 15
|
||||
k_elasticity = 0
|
||||
unit_name = "advanced shotgun shell"
|
||||
export_types = list(/obj/item/ammo_casing/shotgun/dragonsbreath, /obj/item/ammo_casing/shotgun/meteorslug, /obj/item/ammo_casing/shotgun/pulseslug, /obj/item/ammo_casing/shotgun/frag12, /obj/item/ammo_casing/shotgun/ion, /obj/item/ammo_casing/shotgun/laserslug)
|
||||
|
||||
/////////////////////////
|
||||
//The Traitor Sell Outs//
|
||||
/////////////////////////
|
||||
|
||||
/datum/export/weapon/pistol
|
||||
cost = 120
|
||||
unit_name = "illegal firearm"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/pistol)
|
||||
|
||||
/datum/export/weapon/revolver
|
||||
cost = 200
|
||||
unit_name = "large handgun"
|
||||
export_types = list(/obj/item/gun/ballistic/revolver/syndie)
|
||||
|
||||
/datum/export/weapon/rocketlauncher
|
||||
cost = 1000
|
||||
unit_name = "rocketlauncher"
|
||||
export_types = list(/obj/item/gun/ballistic/rocketlauncher)
|
||||
|
||||
/datum/export/weapon/antitank
|
||||
cost = 300
|
||||
unit_name = "hand cannon"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/pistol/antitank/syndicate)
|
||||
|
||||
/datum/export/weapon/clownstuff
|
||||
cost = 500
|
||||
unit_name = "clown war tech"
|
||||
export_types = list(/obj/item/pneumatic_cannon/pie/selfcharge, /obj/item/shield/energy/bananium, /obj/item/melee/transforming/energy/sword/bananium, )
|
||||
|
||||
/datum/export/weapon/bulldog
|
||||
cost = 400
|
||||
unit_name = "drum loaded shotgun"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/shotgun/bulldog)
|
||||
|
||||
/datum/export/weapon/smg
|
||||
cost = 350
|
||||
unit_name = "automatic c-20r"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/c20r)
|
||||
|
||||
/datum/export/weapon/duelsaber
|
||||
cost = 360 //Get it?
|
||||
unit_name = "energy saber"
|
||||
export_types = list(/obj/item/twohanded/dualsaber)
|
||||
|
||||
/datum/export/weapon/esword
|
||||
cost = 130
|
||||
unit_name = "energy sword"
|
||||
export_types = list(/obj/item/melee/transforming/energy/sword/cx/traitor, /obj/item/melee/transforming/energy/sword/saber)
|
||||
|
||||
/datum/export/weapon/rapier
|
||||
cost = 150
|
||||
unit_name = "rapier"
|
||||
export_types = list(/obj/item/storage/belt/sabre/rapier)
|
||||
|
||||
/datum/export/weapon/flamer
|
||||
cost = 20 //welder + some rods cheap
|
||||
unit_name = "flamethrower"
|
||||
export_types = list(/obj/item/flamethrower)
|
||||
|
||||
/datum/export/weapon/gloves
|
||||
cost = 90
|
||||
unit_name = "star struck gloves"
|
||||
export_types = list(/obj/item/clothing/gloves/rapid)
|
||||
|
||||
/datum/export/weapon/l6
|
||||
cost = 500
|
||||
unit_name = "law 6 saw"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/l6_saw)
|
||||
|
||||
/datum/export/weapon/m90
|
||||
cost = 400
|
||||
unit_name = "assault class weapon"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/m90)
|
||||
|
||||
/datum/export/weapon/powerglove
|
||||
cost = 100
|
||||
unit_name = "hydraulic glove"
|
||||
export_types = list(/obj/item/melee/powerfist)
|
||||
|
||||
/datum/export/weapon/sniper
|
||||
cost = 750
|
||||
unit_name = ".50 sniper"
|
||||
export_types = list(/obj/item/gun/ballistic/automatic/sniper_rifle/syndicate)
|
||||
|
||||
/datum/export/weapon/ebow
|
||||
cost = 600
|
||||
unit_name = "mini crossbow"
|
||||
export_types = list(/obj/item/gun/energy/kinetic_accelerator/crossbow)
|
||||
|
||||
/datum/export/weapon/m10mm
|
||||
cost = 10
|
||||
unit_name = "10mm magazine"
|
||||
export_types = list(/obj/item/ammo_box/magazine/m10mm)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/dj_a_bomb
|
||||
cost = 100
|
||||
unit_name = "40mm shell"
|
||||
export_types = list(/obj/item/ammo_casing/a40mm)
|
||||
|
||||
/datum/export/weapon/point50mags
|
||||
cost = 50
|
||||
unit_name = ".50 magazine"
|
||||
export_types = list(/obj/item/ammo_box/magazine/sniper_rounds)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/smg_mag
|
||||
cost = 45
|
||||
unit_name = "smg magazine"
|
||||
export_types = list(/obj/item/ammo_box/magazine/smgm45, /obj/item/ammo_box/magazine/m556)
|
||||
|
||||
/datum/export/weapon/l6sawammo
|
||||
cost = 60
|
||||
unit_name = "law 6 saw ammo box"
|
||||
export_types = list(/obj/item/ammo_box/magazine/mm195x129)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/rocket
|
||||
cost = 120
|
||||
unit_name = "rocket"
|
||||
export_types = list(/obj/item/ammo_casing/caseless/rocket)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/ninemmammo
|
||||
cost = 20
|
||||
unit_name = "9mm ammo magazine"
|
||||
export_types = list(/obj/item/ammo_box/magazine/pistolm9mm)
|
||||
|
||||
/datum/export/weapon/fletcher_ammo
|
||||
cost = 60
|
||||
unit_name = "illegal ammo magazines"
|
||||
export_types = list(/obj/item/ammo_box/magazine/flechette)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/dj_a_pizzabomb
|
||||
cost = -6000
|
||||
unit_name = "Repair Costs"
|
||||
export_types = list(/obj/item/pizzabox/bomb, /obj/item/sbeacondrop/bomb)
|
||||
|
||||
/datum/export/weapon/real_toolbox
|
||||
cost = 600
|
||||
unit_name = "golden toolbox"
|
||||
export_types = list(/obj/item/storage/toolbox/gold_real)
|
||||
|
||||
/datum/export/weapon/melee
|
||||
cost = 30
|
||||
unit_name = "unlisted weapon"
|
||||
export_types = list(/obj/item/melee)
|
||||
include_subtypes = TRUE
|
||||
|
||||
/datum/export/weapon/gun
|
||||
cost = 30
|
||||
unit_name = "unlisted weapon"
|
||||
export_types = list(/obj/item/gun)
|
||||
include_subtypes = TRUE
|
||||
File diff suppressed because it is too large
Load Diff
244
code/modules/cargo/packs/armory.dm
Normal file
244
code/modules/cargo/packs/armory.dm
Normal file
@@ -0,0 +1,244 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Armory //////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/security/armory
|
||||
group = "Armory"
|
||||
access = ACCESS_ARMORY
|
||||
crate_type = /obj/structure/closet/crate/secure/weapon
|
||||
|
||||
/datum/supply_pack/security/armory/bulletarmor
|
||||
name = "Bulletproof Armor Crate"
|
||||
desc = "Contains three sets of bulletproof armor. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open."
|
||||
cost = 1250
|
||||
contains = list(/obj/item/clothing/suit/armor/bulletproof,
|
||||
/obj/item/clothing/suit/armor/bulletproof,
|
||||
/obj/item/clothing/suit/armor/bulletproof)
|
||||
crate_name = "bulletproof armor crate"
|
||||
|
||||
/datum/supply_pack/security/armory/bullethelmets
|
||||
name = "Bulletproof Helmet Crate"
|
||||
desc = "Contains three sets of bulletproof helmets. Guaranteed to reduce a bullet's stopping power by over half. Requires Armory access to open."
|
||||
cost = 1250
|
||||
contains = list(/obj/item/clothing/head/helmet/alt,
|
||||
/obj/item/clothing/head/helmet/alt,
|
||||
/obj/item/clothing/head/helmet/alt)
|
||||
crate_name = "bulletproof helmet crate"
|
||||
|
||||
/datum/supply_pack/security/armory/chemimp
|
||||
name = "Chemical Implants Crate"
|
||||
desc = "Contains five Remote Chemical implants. Requires Armory access to open."
|
||||
cost = 1700
|
||||
contains = list(/obj/item/storage/box/chemimp)
|
||||
crate_name = "chemical implant crate"
|
||||
|
||||
/datum/supply_pack/security/armory/combatknives
|
||||
name = "Combat Knives Crate"
|
||||
desc = "Contains three sharpened combat knives. Each knife guaranteed to fit snugly inside any Nanotrasen-standard boot. Requires Armory access to open."
|
||||
cost = 3200
|
||||
contains = list(/obj/item/kitchen/knife/combat,
|
||||
/obj/item/kitchen/knife/combat,
|
||||
/obj/item/kitchen/knife/combat)
|
||||
crate_name = "combat knife crate"
|
||||
|
||||
/datum/supply_pack/security/armory/ballistic
|
||||
name = "Combat Shotguns Crate"
|
||||
desc = "For when the enemy absolutely needs to be replaced with lead. Contains three Aussec-designed Combat Shotguns, with three Shotgun Bandoliers, as well as seven buchshot and 12g shotgun slugs. Requires Armory access to open."
|
||||
cost = 8000
|
||||
contains = list(/obj/item/gun/ballistic/shotgun/automatic/combat,
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat,
|
||||
/obj/item/gun/ballistic/shotgun/automatic/combat,
|
||||
/obj/item/storage/belt/bandolier,
|
||||
/obj/item/storage/belt/bandolier,
|
||||
/obj/item/storage/belt/bandolier,
|
||||
/obj/item/storage/box/lethalshot,
|
||||
/obj/item/storage/box/lethalslugs)
|
||||
crate_name = "combat shotguns crate"
|
||||
|
||||
/datum/supply_pack/security/armory/dragnetgun
|
||||
name = "DRAGnet gun Crate"
|
||||
desc = "Contains two DRAGnet gun. A Dynamic Rapid-Apprehension of the Guilty net the revolution in law enforcement technology that YOU Want! Requires Armory access to open."
|
||||
cost = 3250
|
||||
contains = list(/obj/item/gun/energy/e_gun/dragnet,
|
||||
/obj/item/gun/energy/e_gun/dragnet)
|
||||
crate_name = "anti riot net guns crate"
|
||||
|
||||
/datum/supply_pack/security/armory/energy
|
||||
name = "Energy Guns Crate"
|
||||
desc = "Contains three Energy Guns, capable of firing both nonlethal and lethal blasts of light. Requires Armory access to open."
|
||||
cost = 3250
|
||||
contains = list(/obj/item/gun/energy/e_gun,
|
||||
/obj/item/gun/energy/e_gun,
|
||||
/obj/item/gun/energy/e_gun)
|
||||
crate_name = "energy gun crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
|
||||
/datum/supply_pack/security/armory/exileimp // Theres boxes in 2 lockers as well as gateway never realy being used sad
|
||||
name = "Exile Implants Crate"
|
||||
desc = "Contains five Exile implants. Requires Armory access to open."
|
||||
cost = 1050 //stops endless points
|
||||
contains = list(/obj/item/storage/box/exileimp)
|
||||
crate_name = "exile implant crate"
|
||||
|
||||
/datum/supply_pack/security/armory/mindshield
|
||||
name = "Mindshield Implants Crate"
|
||||
desc = "Prevent against radical thoughts with three Mindshield implants. Requires Armory access to open."
|
||||
cost = 4000
|
||||
contains = list(/obj/item/storage/lockbox/loyalty)
|
||||
crate_name = "mindshield implant crate"
|
||||
|
||||
/datum/supply_pack/security/armory/trackingimp
|
||||
name = "Tracking Implants Crate"
|
||||
desc = "Contains four tracking implants. Requires Armory access to open."
|
||||
cost = 1050
|
||||
contains = list(/obj/item/storage/box/trackimp)
|
||||
crate_name = "tracking implant crate"
|
||||
|
||||
/datum/supply_pack/security/armory/fire
|
||||
name = "Incendiary Weapons Crate"
|
||||
desc = "Burn, baby burn. Contains three incendiary grenades, seven incendiary slugs, three plasma canisters, and a flamethrower. Requires Brige access to open."
|
||||
cost = 1750
|
||||
access = ACCESS_HEADS
|
||||
contains = list(/obj/item/flamethrower/full,
|
||||
/obj/item/tank/internals/plasma,
|
||||
/obj/item/tank/internals/plasma,
|
||||
/obj/item/tank/internals/plasma,
|
||||
/obj/item/grenade/chem_grenade/incendiary,
|
||||
/obj/item/grenade/chem_grenade/incendiary,
|
||||
/obj/item/grenade/chem_grenade/incendiary,
|
||||
/obj/item/storage/box/fireshot)
|
||||
crate_name = "incendiary weapons crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/security/armory/miniguns
|
||||
name = "Personal Miniature Energy Guns"
|
||||
desc = "Contains three miniature energy guns. Each gun has a disabler and a lethal option. Requires Armory access to open."
|
||||
cost = 3000
|
||||
contains = list(/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/e_gun/mini,
|
||||
/obj/item/gun/energy/e_gun/mini)
|
||||
crate_name = "personal energy guns crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
|
||||
/datum/supply_pack/security/armory/laserarmor
|
||||
name = "Reflector Vest Crate"
|
||||
desc = "Contains two vests of highly reflective material. Each armor piece diffuses a laser's energy by over half, as well as offering a good chance to reflect the laser entirely. Requires Armory access to open."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/clothing/suit/armor/laserproof,
|
||||
/obj/item/clothing/suit/armor/laserproof)
|
||||
crate_name = "reflector vest crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
|
||||
/datum/supply_pack/security/armory/riotarmor
|
||||
name = "Riot Armor Crate"
|
||||
desc = "Contains three sets of heavy body armor. Advanced padding protects against close-ranged weaponry, making melee attacks feel only half as potent to the user. Requires Armory access to open."
|
||||
cost = 1750
|
||||
contains = list(/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/suit/armor/riot,
|
||||
/obj/item/clothing/suit/armor/riot)
|
||||
crate_name = "riot armor crate"
|
||||
|
||||
/datum/supply_pack/security/armory/riothelmets
|
||||
name = "Riot Helmets Crate"
|
||||
desc = "Contains three riot helmets. Requires Armory access to open."
|
||||
cost = 1750
|
||||
contains = list(/obj/item/clothing/head/helmet/riot,
|
||||
/obj/item/clothing/head/helmet/riot,
|
||||
/obj/item/clothing/head/helmet/riot)
|
||||
crate_name = "riot helmets crate"
|
||||
|
||||
/datum/supply_pack/security/armory/riotshields
|
||||
name = "Riot Shields Crate"
|
||||
desc = "For when the greytide gets really uppity. Contains three riot shields. Requires Armory access to open."
|
||||
cost = 2200
|
||||
contains = list(/obj/item/shield/riot,
|
||||
/obj/item/shield/riot,
|
||||
/obj/item/shield/riot)
|
||||
crate_name = "riot shields crate"
|
||||
|
||||
/datum/supply_pack/security/armory/riotshotguns
|
||||
name = "Riot Shotgun Crate"
|
||||
desc = "For when the greytide gets really uppity. Contains three riot shotguns, seven rubber shot and beanbag shells. Requires Armory access to open."
|
||||
cost = 6500
|
||||
contains = list(/obj/item/gun/ballistic/shotgun/riot,
|
||||
/obj/item/gun/ballistic/shotgun/riot,
|
||||
/obj/item/gun/ballistic/shotgun/riot,
|
||||
/obj/item/storage/box/rubbershot,
|
||||
/obj/item/storage/box/beanbag)
|
||||
crate_name = "riot shotgun crate"
|
||||
|
||||
/datum/supply_pack/security/armory/swat
|
||||
name = "SWAT Crate"
|
||||
desc = "Contains two fullbody sets of tough, fireproof, pressurized suits designed in a joint effort by IS-ERI and Nanotrasen. Each set contains a suit, helmet, mask, combat belt, and combat gloves. Requires Armory access to open."
|
||||
cost = 6750
|
||||
contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen,
|
||||
/obj/item/clothing/head/helmet/swat/nanotrasen,
|
||||
/obj/item/clothing/suit/space/swat,
|
||||
/obj/item/clothing/suit/space/swat,
|
||||
/obj/item/clothing/mask/gas/sechailer/swat,
|
||||
/obj/item/clothing/mask/gas/sechailer/swat,
|
||||
/obj/item/storage/belt/military/assault,
|
||||
/obj/item/storage/belt/military/assault,
|
||||
/obj/item/clothing/gloves/combat,
|
||||
/obj/item/clothing/gloves/combat)
|
||||
crate_name = "swat crate"
|
||||
|
||||
/datum/supply_pack/security/armory/swattasers //Lesser AEG tbh
|
||||
name = "SWAT tatical tasers Crate"
|
||||
desc = "Contains two tactical energy gun, these guns are able to tase, disable and lethal as well as hold a seclight. Requires Armory access to open."
|
||||
cost = 7000
|
||||
contains = list(/obj/item/gun/energy/e_gun/stun,
|
||||
/obj/item/gun/energy/e_gun/stun)
|
||||
crate_name = "swat taser crate"
|
||||
|
||||
/datum/supply_pack/security/armory/woodstock
|
||||
name = "Classic WoodStock Shotguns Crate"
|
||||
desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open."
|
||||
cost = 3500
|
||||
contains = list(/obj/item/gun/ballistic/shotgun,
|
||||
/obj/item/gun/ballistic/shotgun,
|
||||
/obj/item/gun/ballistic/shotgun)
|
||||
crate_name = "woodstock shotguns crate"
|
||||
|
||||
/datum/supply_pack/security/armory/wt550
|
||||
name = "WT-550 Semi-Auto Rifle Crate"
|
||||
desc = "Contains two high-powered, semiautomatic rifles chambered in 4.6x30mm. Requires Armory access to open."
|
||||
cost = 3250
|
||||
contains = list(/obj/item/gun/ballistic/automatic/wt550,
|
||||
/obj/item/gun/ballistic/automatic/wt550)
|
||||
crate_name = "auto rifle crate"
|
||||
|
||||
/datum/supply_pack/security/armory/wt550ammo
|
||||
name = "WT-550 Semi-Auto SMG Ammo Crate"
|
||||
desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open."
|
||||
cost = 2750
|
||||
contains = list(/obj/item/ammo_box/magazine/wt550m9,
|
||||
/obj/item/ammo_box/magazine/wt550m9,
|
||||
/obj/item/ammo_box/magazine/wt550m9,
|
||||
/obj/item/ammo_box/magazine/wt550m9)
|
||||
crate_name = "auto rifle ammo crate"
|
||||
|
||||
/datum/supply_pack/security/armory/wt550ammo_nonlethal // Takes around 12 shots to stun crit someone
|
||||
name = "WT-550 Semi-Auto SMG Non-Lethal Ammo Crate"
|
||||
desc = "Contains four 20-round magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/ammo_box/magazine/wt550m9/wtrubber,
|
||||
/obj/item/ammo_box/magazine/wt550m9/wtrubber,
|
||||
/obj/item/ammo_box/magazine/wt550m9/wtrubber,
|
||||
/obj/item/ammo_box/magazine/wt550m9/wtrubber)
|
||||
crate_name = "auto rifle ammo crate"
|
||||
|
||||
/datum/supply_pack/security/armory/wt550ammo_special
|
||||
name = "WT-550 Semi-Auto SMG Special Ammo Crate"
|
||||
desc = "Contains 2 20-round Armour Piercing and Incendiary magazines for the WT-550 Semi-Auto SMG. Each magazine is designed to facilitate rapid tactical reloads. Requires Armory access to open."
|
||||
cost = 3500
|
||||
contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap,
|
||||
/obj/item/ammo_box/magazine/wt550m9/wtap,
|
||||
/obj/item/ammo_box/magazine/wt550m9/wtic,
|
||||
/obj/item/ammo_box/magazine/wt550m9/wtic)
|
||||
crate_name = "auto rifle ammo crate"
|
||||
369
code/modules/cargo/packs/costumes_toys.dm
Normal file
369
code/modules/cargo/packs/costumes_toys.dm
Normal file
@@ -0,0 +1,369 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Costumes & Toys /////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/costumes_toys
|
||||
group = "Costumes & Toys"
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised
|
||||
name = "Collectable Hats Crate"
|
||||
desc = "Flaunt your status with three unique, highly-collectable hats!"
|
||||
cost = 20000
|
||||
var/num_contained = 3 //number of items picked to be contained in a randomised crate
|
||||
contains = list(/obj/item/clothing/head/collectable/chef,
|
||||
/obj/item/clothing/head/collectable/paper,
|
||||
/obj/item/clothing/head/collectable/tophat,
|
||||
/obj/item/clothing/head/collectable/captain,
|
||||
/obj/item/clothing/head/collectable/beret,
|
||||
/obj/item/clothing/head/collectable/welding,
|
||||
/obj/item/clothing/head/collectable/flatcap,
|
||||
/obj/item/clothing/head/collectable/pirate,
|
||||
/obj/item/clothing/head/collectable/kitty,
|
||||
/obj/item/clothing/head/collectable/rabbitears,
|
||||
/obj/item/clothing/head/collectable/wizard,
|
||||
/obj/item/clothing/head/collectable/hardhat,
|
||||
/obj/item/clothing/head/collectable/HoS,
|
||||
/obj/item/clothing/head/collectable/HoP,
|
||||
/obj/item/clothing/head/collectable/thunderdome,
|
||||
/obj/item/clothing/head/collectable/swat,
|
||||
/obj/item/clothing/head/collectable/slime,
|
||||
/obj/item/clothing/head/collectable/police,
|
||||
/obj/item/clothing/head/collectable/slime,
|
||||
/obj/item/clothing/head/collectable/xenom,
|
||||
/obj/item/clothing/head/collectable/petehat)
|
||||
crate_name = "collectable hats crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/contraband
|
||||
name = "Contraband Crate"
|
||||
desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, dank, even some sponsored items...you know, the good stuff. Just keep it away from the cops, kay?"
|
||||
contraband = TRUE
|
||||
cost = 3000
|
||||
num_contained = 5 //SOME
|
||||
contains = list(/obj/item/poster/random_contraband,
|
||||
/obj/item/poster/random_contraband,
|
||||
/obj/item/reagent_containers/food/snacks/grown/cannabis,
|
||||
/obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow,
|
||||
/obj/item/reagent_containers/food/snacks/grown/cannabis/white,
|
||||
/obj/item/storage/pill_bottle/zoom,
|
||||
/obj/item/storage/pill_bottle/happy,
|
||||
/obj/item/storage/pill_bottle/lsd,
|
||||
/obj/item/storage/pill_bottle/aranesp,
|
||||
/obj/item/storage/pill_bottle/stimulant,
|
||||
/obj/item/toy/cards/deck/syndicate,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/absinthe,
|
||||
/obj/item/clothing/under/syndicate/tacticool,
|
||||
/obj/item/clothing/under/syndicate,
|
||||
/obj/item/suppressor,
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_syndicate,
|
||||
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims,
|
||||
/obj/item/clothing/mask/gas/syndicate,
|
||||
/obj/item/clothing/neck/necklace/dope,
|
||||
/obj/item/vending_refill/donksoft,
|
||||
/obj/item/circuitboard/computer/arcade/amputation)
|
||||
crate_name = "crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/foamforce
|
||||
name = "Foam Force Crate"
|
||||
desc = "Break out the big guns with eight Foam Force shotguns!"
|
||||
cost = 1000
|
||||
contains = list(/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy,
|
||||
/obj/item/gun/ballistic/shotgun/toy)
|
||||
crate_name = "foam force crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/foamforce/bonus
|
||||
name = "Foam Force Pistols Crate"
|
||||
desc = "Psst.. hey bud... remember those old foam force pistols that got discontinued for being too cool? Well I got two of those right here with your name on em. I'll even throw in a spare mag for each, waddya say?"
|
||||
contraband = TRUE
|
||||
cost = 4000
|
||||
contains = list(/obj/item/gun/ballistic/automatic/toy/pistol,
|
||||
/obj/item/gun/ballistic/automatic/toy/pistol,
|
||||
/obj/item/ammo_box/magazine/toy/pistol,
|
||||
/obj/item/ammo_box/magazine/toy/pistol)
|
||||
crate_name = "foam force crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/formalwear
|
||||
name = "Formalwear Crate"
|
||||
desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing."
|
||||
cost = 4750 //Lots of fancy clothing that can be sold back!
|
||||
contains = list(/obj/item/clothing/under/blacktango,
|
||||
/obj/item/clothing/under/assistantformal,
|
||||
/obj/item/clothing/under/assistantformal,
|
||||
/obj/item/clothing/under/lawyer/bluesuit,
|
||||
/obj/item/clothing/suit/toggle/lawyer,
|
||||
/obj/item/clothing/under/lawyer/purpsuit,
|
||||
/obj/item/clothing/suit/toggle/lawyer/purple,
|
||||
/obj/item/clothing/under/lawyer/blacksuit,
|
||||
/obj/item/clothing/suit/toggle/lawyer/black,
|
||||
/obj/item/clothing/accessory/waistcoat,
|
||||
/obj/item/clothing/neck/tie/blue,
|
||||
/obj/item/clothing/neck/tie/red,
|
||||
/obj/item/clothing/neck/tie/black,
|
||||
/obj/item/clothing/head/bowler,
|
||||
/obj/item/clothing/head/fedora,
|
||||
/obj/item/clothing/head/flatcap,
|
||||
/obj/item/clothing/head/beret,
|
||||
/obj/item/clothing/head/that,
|
||||
/obj/item/clothing/shoes/laceup,
|
||||
/obj/item/clothing/shoes/laceup,
|
||||
/obj/item/clothing/shoes/laceup,
|
||||
/obj/item/clothing/under/suit_jacket/charcoal,
|
||||
/obj/item/clothing/under/suit_jacket/navy,
|
||||
/obj/item/clothing/under/suit_jacket/burgundy,
|
||||
/obj/item/clothing/under/suit_jacket/checkered,
|
||||
/obj/item/clothing/under/suit_jacket/tan,
|
||||
/obj/item/lipstick/random)
|
||||
crate_name = "formalwear crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/clownpin
|
||||
name = "Hilarious Firing Pin Crate"
|
||||
desc = "I uh... I'm not really sure what this does. Wanna buy it?"
|
||||
cost = 5000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/firing_pin/clown)
|
||||
crate_name = "toy crate" // It's /technically/ a toy. For the clown, at least.
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/lasertag
|
||||
name = "Laser Tag Crate"
|
||||
desc = "Foam Force is for boys. Laser Tag is for men. Contains three sets of red suits, blue suits, matching helmets, and matching laser tag guns."
|
||||
cost = 3500
|
||||
contains = list(/obj/item/gun/energy/laser/redtag,
|
||||
/obj/item/gun/energy/laser/redtag,
|
||||
/obj/item/gun/energy/laser/redtag,
|
||||
/obj/item/gun/energy/laser/bluetag,
|
||||
/obj/item/gun/energy/laser/bluetag,
|
||||
/obj/item/gun/energy/laser/bluetag,
|
||||
/obj/item/clothing/suit/redtag,
|
||||
/obj/item/clothing/suit/redtag,
|
||||
/obj/item/clothing/suit/redtag,
|
||||
/obj/item/clothing/suit/bluetag,
|
||||
/obj/item/clothing/suit/bluetag,
|
||||
/obj/item/clothing/suit/bluetag,
|
||||
/obj/item/clothing/head/helmet/redtaghelm,
|
||||
/obj/item/clothing/head/helmet/redtaghelm,
|
||||
/obj/item/clothing/head/helmet/redtaghelm,
|
||||
/obj/item/clothing/head/helmet/bluetaghelm,
|
||||
/obj/item/clothing/head/helmet/bluetaghelm,
|
||||
/obj/item/clothing/head/helmet/bluetaghelm)
|
||||
crate_name = "laser tag crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/lasertag/pins
|
||||
name = "Laser Tag Firing Pins Crate"
|
||||
desc = "Three laser tag firing pins used in laser-tag units to ensure users are wearing their vests."
|
||||
cost = 3000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/storage/box/lasertagpins)
|
||||
crate_name = "laser tag crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/costume_original
|
||||
name = "Original Costume Crate"
|
||||
desc = "Reenact Shakespearean plays with this assortment of outfits. Contains eight different costumes!"
|
||||
cost = 1750
|
||||
contains = list(/obj/item/clothing/head/snowman,
|
||||
/obj/item/clothing/suit/snowman,
|
||||
/obj/item/clothing/head/chicken,
|
||||
/obj/item/clothing/suit/chickensuit,
|
||||
/obj/item/clothing/mask/gas/monkeymask,
|
||||
/obj/item/clothing/suit/monkeysuit,
|
||||
/obj/item/clothing/head/cardborg,
|
||||
/obj/item/clothing/suit/cardborg,
|
||||
/obj/item/clothing/head/xenos,
|
||||
/obj/item/clothing/suit/xenos,
|
||||
/obj/item/clothing/suit/hooded/ian_costume,
|
||||
/obj/item/clothing/suit/hooded/carp_costume,
|
||||
/obj/item/clothing/suit/hooded/bee_costume)
|
||||
crate_name = "original costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/costume
|
||||
name = "Standard Costume Crate"
|
||||
desc = "Supply the station's entertainers with the equipment of their trade with these Nanotrasen-approved costumes! Contains a full clown and mime outfit, along with a bike horn and a bottle of nothing."
|
||||
cost = 1300
|
||||
access = ACCESS_THEATRE
|
||||
contains = list(/obj/item/storage/backpack/clown,
|
||||
/obj/item/clothing/shoes/clown_shoes,
|
||||
/obj/item/clothing/mask/gas/clown_hat,
|
||||
/obj/item/clothing/under/rank/clown,
|
||||
/obj/item/bikehorn,
|
||||
/obj/item/clothing/under/rank/mime,
|
||||
/obj/item/clothing/shoes/sneakers/black,
|
||||
/obj/item/clothing/gloves/color/white,
|
||||
/obj/item/clothing/mask/gas/mime,
|
||||
/obj/item/clothing/head/beret,
|
||||
/obj/item/clothing/suit/suspenders,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing,
|
||||
/obj/item/storage/backpack/mime)
|
||||
crate_name = "standard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/toys
|
||||
name = "Toy Crate"
|
||||
desc = "Who cares about pride and accomplishment? Skip the gaming and get straight to the sweet rewards with this product! Contains five random toys. Warranty void if used to prank research directors."
|
||||
cost = 1500 // or play the arcade machines ya lazy bum
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/storage/box/snappops,
|
||||
/obj/item/toy/talking/AI,
|
||||
/obj/item/toy/talking/codex_gigas,
|
||||
/obj/item/clothing/under/syndicate/tacticool,
|
||||
/obj/item/toy/sword ,
|
||||
/obj/item/toy/gun,
|
||||
/obj/item/gun/ballistic/shotgun/toy/crossbow,
|
||||
/obj/item/storage/box/fakesyndiesuit,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/toy/spinningtoy,
|
||||
/obj/item/toy/prize/ripley,
|
||||
/obj/item/toy/prize/fireripley,
|
||||
/obj/item/toy/prize/deathripley,
|
||||
/obj/item/toy/prize/gygax,
|
||||
/obj/item/toy/prize/durand,
|
||||
/obj/item/toy/prize/honk,
|
||||
/obj/item/toy/prize/marauder,
|
||||
/obj/item/toy/prize/seraph,
|
||||
/obj/item/toy/prize/mauler,
|
||||
/obj/item/toy/prize/odysseus,
|
||||
/obj/item/toy/prize/phazon,
|
||||
/obj/item/toy/prize/reticence,
|
||||
/obj/item/toy/cards/deck,
|
||||
/obj/item/toy/nuke,
|
||||
/obj/item/toy/minimeteor,
|
||||
/obj/item/toy/redbutton,
|
||||
/obj/item/toy/talking/owl,
|
||||
/obj/item/toy/talking/griffin,
|
||||
/obj/item/coin/antagtoken,
|
||||
/obj/item/stack/tile/fakespace/loaded,
|
||||
/obj/item/stack/tile/fakepit/loaded,
|
||||
/obj/item/toy/toy_xeno,
|
||||
/obj/item/storage/box/actionfigure,
|
||||
/obj/item/restraints/handcuffs/fake,
|
||||
/obj/item/grenade/chem_grenade/glitter/pink,
|
||||
/obj/item/grenade/chem_grenade/glitter/blue,
|
||||
/obj/item/grenade/chem_grenade/glitter/white,
|
||||
/obj/item/toy/eightball,
|
||||
/obj/item/toy/windupToolbox,
|
||||
/obj/item/toy/clockwork_watch,
|
||||
/obj/item/toy/toy_dagger,
|
||||
/obj/item/extendohand/acme,
|
||||
/obj/item/hot_potato/harmless/toy,
|
||||
/obj/item/card/emagfake,
|
||||
/obj/item/clothing/shoes/wheelys,
|
||||
/obj/item/clothing/shoes/kindleKicks,
|
||||
/obj/item/storage/belt/military/snack,
|
||||
/obj/item/toy/eightball,
|
||||
/obj/item/vending_refill/donksoft)
|
||||
crate_name = "toy crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/plush
|
||||
name = "Plush Crate"
|
||||
desc = "Plush tide station wide. Contains 5 random plushies for you to love. Warranty void if your love violates the terms of use."
|
||||
cost = 1500 // or play the arcade machines ya lazy bum
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/toy/plush/random,
|
||||
/obj/item/toy/plush/random,
|
||||
/obj/item/toy/plush/random,
|
||||
/obj/item/toy/plush/random,
|
||||
/obj/item/toy/plush/random) //I'm lazy
|
||||
crate_name = "plushie crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/wizard
|
||||
name = "Wizard Costume Crate"
|
||||
desc = "Pretend to join the Wizard Federation with this full wizard outfit! Nanotrasen would like to remind its employees that actually joining the Wizard Federation is subject to termination of job and life."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/staff,
|
||||
/obj/item/clothing/suit/wizrobe/fake,
|
||||
/obj/item/clothing/shoes/sandal,
|
||||
/obj/item/clothing/head/wizard/fake)
|
||||
crate_name = "wizard costume crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C)
|
||||
var/list/L = contains.Copy()
|
||||
for(var/i in 1 to num_contained)
|
||||
var/item = pick_n_take(L)
|
||||
new item(C)
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/autodrobe
|
||||
name = "Autodrobe Supply Crate"
|
||||
desc = "Autodrobe missing your favorite dress? Solve that issue today with this autodrobe refill."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/autodrobe)
|
||||
crate_name = "autodrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/cargo
|
||||
name = "Cargo Wardrobe Supply Crate"
|
||||
desc = "This crate contains a refill for the CargoDrobe."
|
||||
cost = 750
|
||||
contains = list(/obj/item/vending_refill/wardrobe/cargo_wardrobe)
|
||||
crate_name = "cargo department supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/engineering
|
||||
name = "Engineering Wardrobe Supply Crate"
|
||||
desc = "This crate contains refills for the EngiDrobe and AtmosDrobe."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/wardrobe/engi_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/atmos_wardrobe)
|
||||
crate_name = "engineering department wardrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/general
|
||||
name = "General Wardrobes Supply Crate"
|
||||
desc = "This crate contains refills for the CuraDrobe, BarDrobe, ChefDrobe, JaniDrobe, ChapDrobe."
|
||||
cost = 3750
|
||||
contains = list(/obj/item/vending_refill/wardrobe/curator_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/bar_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/chef_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/jani_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/chap_wardrobe)
|
||||
crate_name = "general wardrobes vendor refills"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/hydroponics
|
||||
name = "Hydrobe Supply Crate"
|
||||
desc = "This crate contains a refill for the Hydrobe."
|
||||
cost = 750
|
||||
contains = list(/obj/item/vending_refill/wardrobe/hydro_wardrobe)
|
||||
crate_name = "hydrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/medical
|
||||
name = "Medical Wardrobe Supply Crate"
|
||||
desc = "This crate contains refills for the MediDrobe, ChemDrobe, GeneDrobe, and ViroDrobe."
|
||||
cost = 3000
|
||||
contains = list(/obj/item/vending_refill/wardrobe/medi_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/chem_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/gene_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/viro_wardrobe)
|
||||
crate_name = "medical department wardrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/science
|
||||
name = "Science Wardrobe Supply Crate"
|
||||
desc = "This crate contains refills for the SciDrobe and RoboDrobe."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/wardrobe/robo_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/science_wardrobe)
|
||||
crate_name = "science department wardrobe supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/wardrobes/security
|
||||
name = "Security Wardrobe Supply Crate"
|
||||
desc = "This crate contains refills for the SecDrobe and LawDrobe."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/wardrobe/sec_wardrobe,
|
||||
/obj/item/vending_refill/wardrobe/law_wardrobe)
|
||||
crate_name = "security department supply crate"
|
||||
|
||||
/datum/supply_pack/costumes_toys/kinkmate
|
||||
name = "Kinkmate construction kit"
|
||||
cost = 2000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate)
|
||||
crate_name = "Kinkmate construction kit"
|
||||
275
code/modules/cargo/packs/emergency.dm
Normal file
275
code/modules/cargo/packs/emergency.dm
Normal file
@@ -0,0 +1,275 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Emergency ///////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/emergency
|
||||
group = "Emergency"
|
||||
|
||||
/datum/supply_pack/emergency/vehicle
|
||||
name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN
|
||||
desc = "TUNNEL SNAKES OWN THIS TOWN. Contains an unbranded All Terrain Vehicle, and a complete gang outfit -- consists of black gloves, a menacing skull bandanna, and a SWEET leather overcoat!"
|
||||
cost = 2800
|
||||
contraband = TRUE
|
||||
contains = list(/obj/vehicle/ridden/atv,
|
||||
/obj/item/key,
|
||||
/obj/item/clothing/suit/jacket/leather/overcoat,
|
||||
/obj/item/clothing/gloves/color/black,
|
||||
/obj/item/clothing/head/soft,
|
||||
/obj/item/clothing/mask/bandana/skull)//so you can properly #cargoniabikergang
|
||||
crate_name = "Biker Kit"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/emergency/equipment
|
||||
name = "Emergency Bot/Internals Crate"
|
||||
desc = "Explosions got you down? These supplies are guaranteed to patch up holes, in stations and people alike! Comes with two floorbots, two medbots, five oxygen masks and five small oxygen tanks."
|
||||
cost = 3750
|
||||
contains = list(/mob/living/simple_animal/bot/floorbot,
|
||||
/mob/living/simple_animal/bot/floorbot,
|
||||
/mob/living/simple_animal/bot/medbot,
|
||||
/mob/living/simple_animal/bot/medbot,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas)
|
||||
crate_name = "emergency crate"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/emergency/radiatione_emergency
|
||||
name = "Emergenc Radiation Protection Crate"
|
||||
desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a few pill bottles that are able to handles radiation and the affects of the poisoning."
|
||||
cost = 2500
|
||||
contains = list(/obj/item/clothing/head/radiation,
|
||||
/obj/item/clothing/head/radiation,
|
||||
/obj/item/clothing/suit/radiation,
|
||||
/obj/item/clothing/suit/radiation,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/storage/pill_bottle/mutarad,
|
||||
/obj/item/storage/firstaid/radbgone)
|
||||
crate_name = "radiation protection crate"
|
||||
crate_type = /obj/structure/closet/crate/radiation
|
||||
|
||||
/datum/supply_pack/emergency/rcds
|
||||
name = "Emergency RCDs"
|
||||
desc = "Bombs going off on station? SME blown and now you need to fix the hole it left behind? Well this crate has a pare of Rcds to be able to easily fix up any problem you may have!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/construction/rcd,
|
||||
/obj/item/construction/rcd)
|
||||
crate_name = "emergency rcds"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/emergency/soft_suit
|
||||
name = "Emergency Space Suit "
|
||||
desc = "Is there bombs going off left and right? Is there meteors shooting around the station? Well we have two fragile space suit for emergencys as well as air and masks."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/suit/space/fragile,
|
||||
/obj/item/clothing/suit/space/fragile,
|
||||
/obj/item/clothing/head/helmet/space/fragile,
|
||||
/obj/item/clothing/head/helmet/space/fragile)
|
||||
crate_name = "emergency crate"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/emergency/firefighting
|
||||
name = "Firefighting Crate"
|
||||
desc = "Only you can prevent station fires. Partner up with two firefighter suits, gas masks, flashlights, large oxygen tanks, extinguishers, and hardhats!"
|
||||
cost = 1200
|
||||
contains = list(/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/suit/fire/firefighter,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/flashlight,
|
||||
/obj/item/tank/internals/oxygen/red,
|
||||
/obj/item/tank/internals/oxygen/red,
|
||||
/obj/item/extinguisher/advanced,
|
||||
/obj/item/extinguisher/advanced,
|
||||
/obj/item/clothing/head/hardhat/red,
|
||||
/obj/item/clothing/head/hardhat/red)
|
||||
crate_name = "firefighting crate"
|
||||
|
||||
/datum/supply_pack/emergency/atmostank
|
||||
name = "Firefighting Tank Backpack"
|
||||
desc = "Mow down fires with this high-capacity fire fighting tank backpack. Requires Atmospherics access to open."
|
||||
cost = 1000
|
||||
access = ACCESS_ATMOSPHERICS
|
||||
contains = list(/obj/item/watertank/atmos)
|
||||
crate_name = "firefighting backpack crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/emergency/internals
|
||||
name = "Internals Crate"
|
||||
desc = "Master your life energy and control your breathing with three breath masks, three emergency oxygen tanks and three large air tanks."//IS THAT A
|
||||
cost = 1000
|
||||
contains = list(/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/tank/internals/air)
|
||||
crate_name = "internals crate"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/emergency/metalfoam
|
||||
name = "Metal Foam Grenade Crate"
|
||||
desc = "Seal up those pesky hull breaches with 14 Metal Foam Grenades."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/box/metalfoam,
|
||||
/obj/item/storage/box/metalfoam)
|
||||
crate_name = "metal foam grenade crate"
|
||||
|
||||
/datum/supply_pack/emergency/syndicate
|
||||
name = "NULL_ENTRY"
|
||||
desc = "(#@&^$THIS PACKAGE CONTAINS 30TC WORTH OF SOME RANDOM SYNDICATE GEAR WE HAD LYING AROUND THE WAREHOUSE. GIVE EM HELL, OPERATIVE@&!*() "
|
||||
hidden = TRUE
|
||||
cost = 20000
|
||||
contains = list()
|
||||
crate_name = "emergency crate"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C)
|
||||
var/crate_value = 30
|
||||
var/list/uplink_items = get_uplink_items(SSticker.mode)
|
||||
while(crate_value)
|
||||
var/category = pick(uplink_items)
|
||||
var/item = pick(uplink_items[category])
|
||||
var/datum/uplink_item/I = uplink_items[category][item]
|
||||
if(!I.surplus_nullcrates || prob(100 - I.surplus_nullcrates))
|
||||
continue
|
||||
if(crate_value < I.cost)
|
||||
continue
|
||||
crate_value -= I.cost
|
||||
new I.item(C)
|
||||
|
||||
/datum/supply_pack/emergency/plasma_spacesuit
|
||||
name = "Plasmaman Space Envirosuits"
|
||||
desc = "Contains two space-worthy envirosuits for Plasmamen. Order now and we'll throw in two free helmets! Requires EVA access to open."
|
||||
cost = 4000
|
||||
access = ACCESS_EVA
|
||||
contains = list(/obj/item/clothing/suit/space/eva/plasmaman,
|
||||
/obj/item/clothing/suit/space/eva/plasmaman,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman)
|
||||
crate_name = "plasmaman EVA crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/emergency/plasmaman
|
||||
name = "Plasmaman Supply Kit"
|
||||
desc = "Keep those Plasmamen alive with two sets of Plasmaman outfits. Each set contains a plasmaman jumpsuit, internals tank, and helmet."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/clothing/under/plasmaman,
|
||||
/obj/item/clothing/under/plasmaman,
|
||||
/obj/item/tank/internals/plasmaman/belt/full,
|
||||
/obj/item/tank/internals/plasmaman/belt/full,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman,
|
||||
/obj/item/clothing/head/helmet/space/plasmaman)
|
||||
crate_name = "plasmaman supply kit"
|
||||
|
||||
/datum/supply_pack/emergency/radiation
|
||||
name = "Radiation Protection Crate"
|
||||
desc = "Survive the Nuclear Apocalypse and Supermatter Engine alike with two sets of Radiation suits. Each set contains a helmet, suit, and Geiger counter. We'll even throw in a bottle of vodka and some glasses too, considering the life-expectancy of people who order this."
|
||||
cost = 1300
|
||||
contains = list(/obj/item/clothing/head/radiation,
|
||||
/obj/item/clothing/head/radiation,
|
||||
/obj/item/clothing/suit/radiation,
|
||||
/obj/item/clothing/suit/radiation,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/vodka,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass)
|
||||
crate_name = "radiation protection crate"
|
||||
crate_type = /obj/structure/closet/crate/radiation
|
||||
|
||||
/datum/supply_pack/emergency/spacesuit
|
||||
name = "Space Suit Crate"
|
||||
desc = "Contains two aging suits from Space-Goodwill. Requires EVA access to open."
|
||||
cost = 3000
|
||||
access = ACCESS_EVA
|
||||
contains = list(/obj/item/clothing/suit/space,
|
||||
/obj/item/clothing/suit/space,
|
||||
/obj/item/clothing/head/helmet/space,
|
||||
/obj/item/clothing/head/helmet/space,
|
||||
/obj/item/clothing/mask/breath,
|
||||
/obj/item/clothing/mask/breath)
|
||||
crate_name = "space suit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/emergency/spacejets
|
||||
name = "Spare EVA Jetpacks"
|
||||
desc = "Contains three EVA grade jectpaks. Requires EVA access to open."
|
||||
cost = 2000
|
||||
access = ACCESS_EVA
|
||||
contains = list(/obj/item/tank/jetpack/carbondioxide/eva,
|
||||
/obj/item/tank/jetpack/carbondioxide/eva,
|
||||
/obj/item/tank/jetpack/carbondioxide/eva)
|
||||
crate_name = "eva jetpacks crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/emergency/specialops
|
||||
name = "Special Ops Supplies"
|
||||
desc = "(*!&@#TOO CHEAP FOR THAT NULL_ENTRY, HUH OPERATIVE? WELL, THIS LITTLE ORDER CAN STILL HELP YOU OUT IN A PINCH. CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, AN INCENDIARY GRENADE, AND A \"SLEEPY PEN\" FULL OF NICE TOXINS!#@*$"
|
||||
hidden = TRUE
|
||||
cost = 2200
|
||||
contains = list(/obj/item/storage/box/emps,
|
||||
/obj/item/grenade/smokebomb,
|
||||
/obj/item/grenade/smokebomb,
|
||||
/obj/item/grenade/smokebomb,
|
||||
/obj/item/pen/sleepy,
|
||||
/obj/item/grenade/chem_grenade/incendiary)
|
||||
crate_name = "emergency crate"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/emergency/weedcontrol
|
||||
name = "Weed Control Crate"
|
||||
desc = "Keep those invasive species OUT. Contains a scythe, gasmask, two sprays of Plant-B-Gone, and two anti-weed chemical grenades. Warranty void if used on ambrosia. Requires Hydroponics access to open."
|
||||
cost = 1800
|
||||
access = ACCESS_HYDROPONICS
|
||||
contains = list(/obj/item/scythe,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/grenade/chem_grenade/antiweed,
|
||||
/obj/item/grenade/chem_grenade/antiweed,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/spray/plantbgone)
|
||||
crate_name = "weed control crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/hydroponics
|
||||
|
||||
/datum/supply_pack/medical/anitvirus
|
||||
name = "Virus Containment Crate"
|
||||
desc = "Viro let out a death plague Mk II again? Someone didnt wash there hands? Old plagues born anew? Well this crate is for you! Hope you cure it before it brakes out of the station... This crate needs medical access to open and has two bio suits, a box of needles and beakers, five spaceacillin needles, and a medibot."
|
||||
cost = 3000
|
||||
access = ACCESS_MEDICAL
|
||||
contains = list(/mob/living/simple_animal/bot/medbot,
|
||||
/obj/item/clothing/head/bio_hood,
|
||||
/obj/item/clothing/head/bio_hood,
|
||||
/obj/item/clothing/suit/bio_suit,
|
||||
/obj/item/clothing/suit/bio_suit,
|
||||
/obj/item/reagent_containers/syringe/antiviral,
|
||||
/obj/item/reagent_containers/syringe/antiviral,
|
||||
/obj/item/reagent_containers/syringe/antiviral,
|
||||
/obj/item/reagent_containers/syringe/antiviral,
|
||||
/obj/item/reagent_containers/syringe/antiviral,
|
||||
/obj/item/storage/box/syringes,
|
||||
/obj/item/storage/box/beakers)
|
||||
crate_name = "virus containment unit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
169
code/modules/cargo/packs/engine.dm
Normal file
169
code/modules/cargo/packs/engine.dm
Normal file
@@ -0,0 +1,169 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////// Engine Construction /////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/engine
|
||||
group = "Engine Construction"
|
||||
crate_type = /obj/structure/closet/crate/engineering
|
||||
|
||||
/datum/supply_pack/engine/am_jar
|
||||
name = "Antimatter Containment Jar Crate"
|
||||
desc = "Two Antimatter containment jars stuffed into a single crate."
|
||||
cost = 2300
|
||||
contains = list(/obj/item/am_containment,
|
||||
/obj/item/am_containment)
|
||||
crate_name = "antimatter jar crate"
|
||||
|
||||
/datum/supply_pack/engine/am_core
|
||||
name = "Antimatter Control Crate"
|
||||
desc = "The brains of the Antimatter engine, this device is sure to teach the station's powergrid the true meaning of real power."
|
||||
cost = 5200
|
||||
contains = list(/obj/machinery/power/am_control_unit)
|
||||
crate_name = "antimatter control crate"
|
||||
|
||||
/datum/supply_pack/engine/am_shielding
|
||||
name = "Antimatter Shielding Crate"
|
||||
desc = "Contains ten Antimatter shields, somehow crammed into a crate."
|
||||
cost = 2500
|
||||
contains = list(/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container,
|
||||
/obj/item/am_shielding_container) //10 shields: 3x3 containment and a core
|
||||
crate_name = "antimatter shielding crate"
|
||||
|
||||
/datum/supply_pack/engine/emitter
|
||||
name = "Emitter Crate"
|
||||
desc = "Useful for powering forcefield generators while destroying locked crates and intruders alike. Contains two high-powered energy emitters. Requires CE access to open."
|
||||
cost = 1750
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/machinery/power/emitter,
|
||||
/obj/machinery/power/emitter)
|
||||
crate_name = "emitter crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/engine/field_gen
|
||||
name = "Field Generator Crate"
|
||||
desc = "Typically the only thing standing between the station and a messy death. Powered by emitters. Contains two field generators."
|
||||
cost = 1750
|
||||
contains = list(/obj/machinery/field/generator,
|
||||
/obj/machinery/field/generator)
|
||||
crate_name = "field generator crate"
|
||||
|
||||
/datum/supply_pack/engine/grounding_rods
|
||||
name = "Grounding Rod Crate"
|
||||
desc = "Four grounding rods guaranteed to keep any uppity tesla's lightning under control."
|
||||
cost = 2200
|
||||
contains = list(/obj/machinery/power/grounding_rod,
|
||||
/obj/machinery/power/grounding_rod,
|
||||
/obj/machinery/power/grounding_rod,
|
||||
/obj/machinery/power/grounding_rod)
|
||||
crate_name = "grounding rod crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_pack/engine/mason
|
||||
name = "M.A.S.O.N RIG Crate"
|
||||
desc = "The rare M.A.S.O.N RIG. Requires CE access to open."
|
||||
cost = 15000
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/item/clothing/suit/space/hardsuit/ancient/mason)
|
||||
crate_name = "M.A.S.O.N Rig"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
/datum/supply_pack/engine/PA
|
||||
name = "Particle Accelerator Crate"
|
||||
desc = "A supermassive black hole or hyper-powered teslaball are the perfect way to spice up any party! This \"My First Apocalypse\" kit contains everything you need to build your own Particle Accelerator! Ages 10 and up."
|
||||
cost = 3750
|
||||
contains = list(/obj/structure/particle_accelerator/fuel_chamber,
|
||||
/obj/machinery/particle_accelerator/control_box,
|
||||
/obj/structure/particle_accelerator/particle_emitter/center,
|
||||
/obj/structure/particle_accelerator/particle_emitter/left,
|
||||
/obj/structure/particle_accelerator/particle_emitter/right,
|
||||
/obj/structure/particle_accelerator/power_box,
|
||||
/obj/structure/particle_accelerator/end_cap)
|
||||
crate_name = "particle accelerator crate"
|
||||
|
||||
/datum/supply_pack/engine/collector
|
||||
name = "Radiation Collector Crate"
|
||||
desc = "Contains three radiation collectors. Useful for collecting energy off nearby Supermatter Crystals, Singularities or Teslas!"
|
||||
cost = 2750
|
||||
contains = list(/obj/machinery/power/rad_collector,
|
||||
/obj/machinery/power/rad_collector,
|
||||
/obj/machinery/power/rad_collector)
|
||||
crate_name = "collector crate"
|
||||
|
||||
/datum/supply_pack/engine/sing_gen
|
||||
name = "Singularity Generator Crate"
|
||||
desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included."
|
||||
cost = 6000
|
||||
contains = list(/obj/machinery/the_singularitygen)
|
||||
crate_name = "singularity generator crate"
|
||||
|
||||
/datum/supply_pack/engine/solar
|
||||
name = "Solar Panel Crate"
|
||||
desc = "Go green with this DIY advanced solar array. Contains twenty one solar assemblies, a solar-control circuit board, and tracker. If you have any questions, please check out the enclosed instruction book."
|
||||
cost = 2850
|
||||
contains = list(/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/solar_assembly,
|
||||
/obj/item/circuitboard/computer/solar_control,
|
||||
/obj/item/electronics/tracker,
|
||||
/obj/item/paper/guides/jobs/engi/solars)
|
||||
crate_name = "solar panel crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_pack/engine/supermatter_shard
|
||||
name = "Supermatter Shard Crate"
|
||||
desc = "The power of the heavens condensed into a single crystal. Requires CE access to open."
|
||||
cost = 10000
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/machinery/power/supermatter_crystal/shard)
|
||||
crate_name = "supermatter shard crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/engine/tesla_coils
|
||||
name = "Tesla Coil Crate"
|
||||
desc = "Whether it's high-voltage executions, creating research points, or just plain old power generation: This pack of four Tesla coils can do it all!"
|
||||
cost = 3500
|
||||
contains = list(/obj/machinery/power/tesla_coil,
|
||||
/obj/machinery/power/tesla_coil,
|
||||
/obj/machinery/power/tesla_coil,
|
||||
/obj/machinery/power/tesla_coil)
|
||||
crate_name = "tesla coil crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_pack/engine/tesla_gen
|
||||
name = "Tesla Generator Crate"
|
||||
desc = "The key to unlocking the power of the Tesla energy ball. Particle Accelerator not included."
|
||||
cost = 7000
|
||||
contains = list(/obj/machinery/the_singularitygen/tesla)
|
||||
crate_name = "tesla generator crate"
|
||||
203
code/modules/cargo/packs/engineering.dm
Normal file
203
code/modules/cargo/packs/engineering.dm
Normal file
@@ -0,0 +1,203 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Engineering /////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/engineering
|
||||
group = "Engineering"
|
||||
crate_type = /obj/structure/closet/crate/engineering
|
||||
|
||||
/datum/supply_pack/engineering/shieldgen
|
||||
name = "Anti-breach Shield Projector Crate"
|
||||
desc = "Hull breaches again? Say no more with the Nanotrasen Anti-Breach Shield Projector! Uses forcefield technology to keep the air in, and the space out. Contains two shield projectors."
|
||||
cost = 2500
|
||||
contains = list(/obj/machinery/shieldgen,
|
||||
/obj/machinery/shieldgen)
|
||||
crate_name = "anti-breach shield projector crate"
|
||||
|
||||
/datum/supply_pack/engineering/conveyor
|
||||
name = "Conveyor Assembly Crate"
|
||||
desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book."
|
||||
cost = 750
|
||||
contains = list(/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_construct,
|
||||
/obj/item/conveyor_switch_construct,
|
||||
/obj/item/paper/guides/conveyor)
|
||||
crate_name = "conveyor assembly crate"
|
||||
|
||||
/datum/supply_pack/engineering/engiequipment
|
||||
name = "Engineering Gear Crate"
|
||||
desc = "Gear up with three toolbelts, high-visibility vests, welding helmets, hardhats, and two pairs of meson goggles!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/storage/belt/utility,
|
||||
/obj/item/storage/belt/utility,
|
||||
/obj/item/storage/belt/utility,
|
||||
/obj/item/clothing/suit/hazardvest,
|
||||
/obj/item/clothing/suit/hazardvest,
|
||||
/obj/item/clothing/suit/hazardvest,
|
||||
/obj/item/clothing/head/welding,
|
||||
/obj/item/clothing/head/welding,
|
||||
/obj/item/clothing/head/welding,
|
||||
/obj/item/clothing/head/hardhat,
|
||||
/obj/item/clothing/head/hardhat,
|
||||
/obj/item/clothing/head/hardhat,
|
||||
/obj/item/clothing/glasses/meson/engine,
|
||||
/obj/item/clothing/glasses/meson/engine)
|
||||
crate_name = "engineering gear crate"
|
||||
|
||||
/datum/supply_pack/engineering/engihardsuit
|
||||
name = "Engineering Hardsuit"
|
||||
desc = "Poly 'Who stole all the hardsuits!' Well now you can get more hardsuits if needed! NOTE ONE HARDSUIT IS IN THIS CRATE, as well as one air tank and mask!"
|
||||
cost = 2750
|
||||
contains = list(/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine)
|
||||
crate_name = "engineering hardsuit"
|
||||
|
||||
/datum/supply_pack/engineering/atmoshardsuit
|
||||
name = "Atmospherics Hardsuit"
|
||||
desc = "Too many techs and not enough hardsuits? Time to buy some more! Comes with gas mask and air tank. Ask the CE to open."
|
||||
cost = 5000
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine/atmos)
|
||||
crate_name = "atmospherics hardsuit"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
/datum/supply_pack/engineering/industrialrcd
|
||||
name = "Industrial RCD"
|
||||
desc = "A industrial RCD in case the station has gone through more then one meteor storm and the CE needs to bring out the somthing a bit more reliable. Dose not contain spare ammo for the industrial RCD or any other RCD modles."
|
||||
cost = 4500
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/item/construction/rcd/industrial)
|
||||
crate_name = "industrial rcd"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
|
||||
/datum/supply_pack/engineering/powergamermitts
|
||||
name = "Insulated Gloves Crate"
|
||||
desc = "The backbone of modern society. Barely ever ordered for actual engineering. Contains three insulated gloves."
|
||||
cost = 2750 //Made of pure-grade bullshittinium
|
||||
contains = list(/obj/item/clothing/gloves/color/yellow,
|
||||
/obj/item/clothing/gloves/color/yellow,
|
||||
/obj/item/clothing/gloves/color/yellow)
|
||||
crate_name = "insulated gloves crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/obj/item/stock_parts/cell/inducer_supply
|
||||
maxcharge = 5000
|
||||
charge = 5000
|
||||
|
||||
/datum/supply_pack/engineering/inducers
|
||||
name = "NT-75 Electromagnetic Power Inducers Crate"
|
||||
desc = "No rechargers? No problem, with the NT-75 EPI, you can recharge any standard cell-based equipment anytime, anywhere. Contains two Inducers."
|
||||
cost = 2300
|
||||
contains = list(/obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}, /obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}) //FALSE doesn't work in modified type paths apparently.
|
||||
crate_name = "inducer crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_pack/engineering/pacman
|
||||
name = "P.A.C.M.A.N Generator Crate"
|
||||
desc = "Engineers can't set up the engine? Not an issue for you, once you get your hands on this P.A.C.M.A.N. Generator! Takes in plasma and spits out sweet sweet energy."
|
||||
cost = 2250
|
||||
contains = list(/obj/machinery/power/port_gen/pacman)
|
||||
crate_name = "PACMAN generator crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_pack/engineering/power
|
||||
name = "Power Cell Crate"
|
||||
desc = "Looking for power overwhelming? Look no further. Contains three high-voltage power cells."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stock_parts/cell/high,
|
||||
/obj/item/stock_parts/cell/high,
|
||||
/obj/item/stock_parts/cell/high)
|
||||
crate_name = "power cell crate"
|
||||
crate_type = /obj/structure/closet/crate/engineering/electrical
|
||||
|
||||
/datum/supply_pack/engineering/shuttle_engine
|
||||
name = "Shuttle Engine Crate"
|
||||
desc = "Through advanced bluespace-shenanigans, our engineers have managed to fit an entire shuttle engine into one tiny little crate. Requires CE access to open."
|
||||
cost = 5000
|
||||
access = ACCESS_CE
|
||||
contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo)
|
||||
crate_name = "shuttle engine crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/engineering
|
||||
special = TRUE
|
||||
|
||||
/datum/supply_pack/engineering/tools
|
||||
name = "Toolbox Crate"
|
||||
desc = "Any robust spaceman is never far from their trusty toolbox. Contains three electrical toolboxes and three mechanical toolboxes."
|
||||
contains = list(/obj/item/storage/toolbox/electrical,
|
||||
/obj/item/storage/toolbox/electrical,
|
||||
/obj/item/storage/toolbox/electrical,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/storage/toolbox/mechanical,
|
||||
/obj/item/storage/toolbox/mechanical)
|
||||
cost = 1200
|
||||
crate_name = "toolbox crate"
|
||||
|
||||
/datum/supply_pack/engineering/bsa
|
||||
name = "Bluespace Artillery Parts"
|
||||
desc = "The pride of Nanotrasen Naval Command. The legendary Bluespace Artillery Cannon is a devastating feat of human engineering and testament to wartime determination. Highly advanced research is required for proper construction. "
|
||||
cost = 15000
|
||||
special = TRUE
|
||||
contains = list(/obj/item/circuitboard/machine/bsa/front,
|
||||
/obj/item/circuitboard/machine/bsa/middle,
|
||||
/obj/item/circuitboard/machine/bsa/back,
|
||||
/obj/item/circuitboard/computer/bsa_control
|
||||
)
|
||||
crate_name= "bluespace artillery parts crate"
|
||||
|
||||
/datum/supply_pack/engineering/dna_vault
|
||||
name = "DNA Vault Parts"
|
||||
desc = "Secure the longevity of the current state of humanity within this massive library of scientific knowledge, capable of granting superhuman powers and abilities. Highly advanced research is required for proper construction. Also contains five DNA probes."
|
||||
cost = 12000
|
||||
special = TRUE
|
||||
contains = list(
|
||||
/obj/item/circuitboard/machine/dna_vault,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe
|
||||
)
|
||||
crate_name= "dna vault parts crate"
|
||||
|
||||
/datum/supply_pack/engineering/dna_probes
|
||||
name = "DNA Vault Samplers"
|
||||
desc = "Contains five DNA probes for use in the DNA vault."
|
||||
cost = 3000
|
||||
special = TRUE
|
||||
contains = list(/obj/item/dna_probe,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe,
|
||||
/obj/item/dna_probe
|
||||
)
|
||||
crate_name= "dna samplers crate"
|
||||
|
||||
|
||||
/datum/supply_pack/engineering/shield_sat
|
||||
name = "Shield Generator Satellite"
|
||||
desc = "Protect the very existence of this station with these Anti-Meteor defenses. Contains three Shield Generator Satellites."
|
||||
cost = 4000
|
||||
contains = list(
|
||||
/obj/machinery/satellite/meteor_shield,
|
||||
/obj/machinery/satellite/meteor_shield,
|
||||
/obj/machinery/satellite/meteor_shield
|
||||
)
|
||||
crate_name= "shield sat crate"
|
||||
|
||||
/datum/supply_pack/engineering/shield_sat_control
|
||||
name = "Shield System Control Board"
|
||||
desc = "A control system for the Shield Generator Satellite system."
|
||||
cost = 4000
|
||||
contains = list(/obj/item/circuitboard/computer/sat_control)
|
||||
crate_name= "shield control board crate"
|
||||
154
code/modules/cargo/packs/livestock.dm
Normal file
154
code/modules/cargo/packs/livestock.dm
Normal file
@@ -0,0 +1,154 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////// Livestock /////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/critter
|
||||
group = "Livestock"
|
||||
crate_type = /obj/structure/closet/crate/critter
|
||||
|
||||
/datum/supply_pack/critter/butterfly
|
||||
name = "Butterflies Crate"
|
||||
desc = "Not a very dangerous insect, but they do give off a better image than, say, flies or cockroaches."//is that a motherfucking worm reference
|
||||
contraband = TRUE
|
||||
cost = 5000
|
||||
contains = list(/mob/living/simple_animal/butterfly)
|
||||
crate_name = "entomology samples crate"
|
||||
|
||||
/datum/supply_pack/critter/butterfly/generate()
|
||||
. = ..()
|
||||
for(var/i in 1 to 49)
|
||||
new /mob/living/simple_animal/butterfly(.)
|
||||
|
||||
/datum/supply_pack/critter/cat
|
||||
name = "Cat Crate"
|
||||
desc = "The cat goes meow! Comes with a collar and a nice cat toy! Cheeseburger not included."//i can't believe im making this reference
|
||||
cost = 5000 //Cats are worth as much as corgis.
|
||||
contains = list(/mob/living/simple_animal/pet/cat,
|
||||
/obj/item/clothing/neck/petcollar,
|
||||
/obj/item/toy/cattoy)
|
||||
crate_name = "cat crate"
|
||||
|
||||
/datum/supply_pack/critter/cat/generate()
|
||||
. = ..()
|
||||
if(prob(50))
|
||||
var/mob/living/simple_animal/pet/cat/C = locate() in .
|
||||
qdel(C)
|
||||
new /mob/living/simple_animal/pet/cat/Proc(.)
|
||||
|
||||
/datum/supply_pack/critter/chick
|
||||
name = "Chicken Crate"
|
||||
desc = "The chicken goes bwaak!"
|
||||
cost = 2000
|
||||
contains = list( /mob/living/simple_animal/chick)
|
||||
crate_name = "chicken crate"
|
||||
|
||||
/datum/supply_pack/critter/crab
|
||||
name = "Crab Rocket"
|
||||
desc = "CRAAAAAAB ROCKET. CRAB ROCKET. CRAB ROCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROCKET. CRAFT. ROCKET. BUY. CRAFT ROCKET. CRAB ROOOCKET. CRAB ROOOOCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROOOOOOOOOOOOOOOOOOOOOOCK EEEEEEEEEEEEEEEEEEEEEEEEE EEEETTTTTTTTTTTTAAAAAAAAA AAAHHHHHHHHHHHHH. CRAB ROCKET. CRAAAB ROCKEEEEEEEEEGGGGHHHHTT CRAB CRAB CRAABROCKET CRAB ROCKEEEET."//fun fact: i actually spent like 10 minutes and transcribed the entire video.
|
||||
cost = 5000
|
||||
contains = list(/mob/living/simple_animal/crab)
|
||||
crate_name = "look sir free crabs"
|
||||
DropPodOnly = TRUE
|
||||
|
||||
/datum/supply_pack/critter/crab/generate()
|
||||
. = ..()
|
||||
for(var/i in 1 to 49)
|
||||
new /mob/living/simple_animal/crab(.)
|
||||
|
||||
/datum/supply_pack/critter/corgi
|
||||
name = "Corgi Crate"
|
||||
desc = "Considered the optimal dog breed by thousands of research scientists, this Corgi is but one dog from the millions of Ian's noble bloodline. Comes with a cute collar!"
|
||||
cost = 5000
|
||||
contains = list(/mob/living/simple_animal/pet/dog/corgi,
|
||||
/obj/item/clothing/neck/petcollar)
|
||||
crate_name = "corgi crate"
|
||||
|
||||
/datum/supply_pack/critter/corgi/generate()
|
||||
. = ..()
|
||||
if(prob(50))
|
||||
var/mob/living/simple_animal/pet/dog/corgi/D = locate() in .
|
||||
if(D.gender == FEMALE)
|
||||
qdel(D)
|
||||
new /mob/living/simple_animal/pet/dog/corgi/Lisa(.)
|
||||
|
||||
/datum/supply_pack/critter/corgis/exotic
|
||||
name = "Exotic Corgi Crate"
|
||||
desc = "Corgis fit for a king, these corgis come in a unique color to signify their superiority. Comes with a cute collar!"
|
||||
cost = 5500
|
||||
contains = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi,
|
||||
/obj/item/clothing/neck/petcollar)
|
||||
crate_name = "exotic corgi crate"
|
||||
|
||||
/datum/supply_pack/critter/cow
|
||||
name = "Cow Crate"
|
||||
desc = "The cow goes moo!"
|
||||
cost = 3000
|
||||
contains = list(/mob/living/simple_animal/cow)
|
||||
crate_name = "cow crate"
|
||||
|
||||
/datum/supply_pack/critter/fox
|
||||
name = "Fox Crate"
|
||||
desc = "The fox goes...? Comes with a collar!"//what does the fox say
|
||||
cost = 5000
|
||||
contains = list(/mob/living/simple_animal/pet/fox,
|
||||
/obj/item/clothing/neck/petcollar)
|
||||
crate_name = "fox crate"
|
||||
|
||||
/datum/supply_pack/critter/goat
|
||||
name = "Goat Crate"
|
||||
desc = "The goat goes baa! Warranty void if used as a replacement for Pete."
|
||||
cost = 2500
|
||||
contains = list(/mob/living/simple_animal/hostile/retaliate/goat)
|
||||
crate_name = "goat crate"
|
||||
|
||||
/datum/supply_pack/critter/goose
|
||||
name = "Goose Crate"
|
||||
desc = "Angry and violent birds. Evil, evil creatures."
|
||||
cost = 2500
|
||||
contains = list(/mob/living/simple_animal/hostile/retaliate/goose)
|
||||
crate_name = "goose crate"
|
||||
|
||||
/datum/supply_pack/critter/monkey
|
||||
name = "Monkey Cube Crate"
|
||||
desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!"
|
||||
cost = 2000
|
||||
contains = list (/obj/item/storage/box/monkeycubes)
|
||||
crate_name = "monkey cube crate"
|
||||
|
||||
/datum/supply_pack/critter/pug
|
||||
name = "Pug Crate"
|
||||
desc = "Like a normal dog, but... squished. Comes with a nice collar!"
|
||||
cost = 5000
|
||||
contains = list(/mob/living/simple_animal/pet/dog/pug,
|
||||
/obj/item/clothing/neck/petcollar)
|
||||
crate_name = "pug crate"
|
||||
|
||||
/datum/supply_pack/organic/critter/kiwi
|
||||
name = "Space kiwi Crate"
|
||||
cost = 2000
|
||||
contains = list( /mob/living/simple_animal/kiwi)
|
||||
crate_name = "space kiwi crate"
|
||||
|
||||
/datum/supply_pack/critter/snake
|
||||
name = "Snake Crate"
|
||||
desc = "Tired of these MOTHER FUCKING snakes on this MOTHER FUCKING space station? Then this isn't the crate for you. Contains three poisonous snakes."
|
||||
cost = 3000
|
||||
contains = list(/mob/living/simple_animal/hostile/retaliate/poison/snake,
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake,
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake)
|
||||
crate_name = "snake crate"
|
||||
|
||||
/datum/supply_pack/critter/secbat
|
||||
name = "Security Bat Crate"
|
||||
desc = "Contains five security bats, perfect to Bat-up any security officer."
|
||||
cost = 2500
|
||||
contains = list(/mob/living/simple_animal/hostile/retaliate/bat/secbat,
|
||||
/mob/living/simple_animal/hostile/retaliate/bat/secbat,
|
||||
/mob/living/simple_animal/hostile/retaliate/bat/secbat,
|
||||
/mob/living/simple_animal/hostile/retaliate/bat/secbat,
|
||||
/mob/living/simple_animal/hostile/retaliate/bat/secbat)
|
||||
crate_name = "security bat crate"
|
||||
170
code/modules/cargo/packs/materials.dm
Normal file
170
code/modules/cargo/packs/materials.dm
Normal file
@@ -0,0 +1,170 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////// Canisters & Materials ////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/materials
|
||||
group = "Canisters & Materials"
|
||||
|
||||
/datum/supply_pack/materials/cardboard50
|
||||
name = "50 Cardboard Sheets"
|
||||
desc = "Create a bunch of boxes."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stack/sheet/cardboard/fifty)
|
||||
crate_name = "cardboard sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/glass50
|
||||
name = "50 Glass Sheets"
|
||||
desc = "Let some nice light in with fifty glass sheets!"
|
||||
cost = 850
|
||||
contains = list(/obj/item/stack/sheet/glass/fifty)
|
||||
crate_name = "glass sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/metal50
|
||||
name = "50 Metal Sheets"
|
||||
desc = "Any construction project begins with a good stack of fifty metal sheets!"
|
||||
cost = 850
|
||||
contains = list(/obj/item/stack/sheet/metal/fifty)
|
||||
crate_name = "metal sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/plasteel20
|
||||
name = "20 Plasteel Sheets"
|
||||
desc = "Reinforce the station's integrity with twenty plasteel sheets!"
|
||||
cost = 4700
|
||||
contains = list(/obj/item/stack/sheet/plasteel/twenty)
|
||||
crate_name = "plasteel sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/plasteel50
|
||||
name = "50 Plasteel Sheets"
|
||||
desc = "For when you REALLY have to reinforce something."
|
||||
cost = 9050
|
||||
contains = list(/obj/item/stack/sheet/plasteel/fifty)
|
||||
crate_name = "plasteel sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/plastic50
|
||||
name = "50 Plastic Sheets"
|
||||
desc = "Build a limitless amount of toys with fifty plastic sheets!"
|
||||
cost = 950
|
||||
contains = list(/obj/item/stack/sheet/plastic/fifty)
|
||||
crate_name = "plastic sheets crate"
|
||||
|
||||
/datum/supply_pack/materials/sandstone30
|
||||
name = "30 Sandstone Blocks"
|
||||
desc = "Neither sandy nor stoney, these thirty blocks will still get the job done."
|
||||
cost = 800
|
||||
contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty)
|
||||
crate_name = "sandstone blocks crate"
|
||||
|
||||
/datum/supply_pack/materials/wood50
|
||||
name = "50 Wood Planks"
|
||||
desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with fifty wooden planks!"
|
||||
cost = 1450
|
||||
contains = list(/obj/item/stack/sheet/mineral/wood/fifty)
|
||||
crate_name = "wood planks crate"
|
||||
|
||||
/datum/supply_pack/materials/rcdammo
|
||||
name = "Spare RDC ammo"
|
||||
desc = "This crate contains sixteen RCD ammo packs, to help with any holes or projects people mite be working on."
|
||||
cost = 3750
|
||||
contains = list(/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo,
|
||||
/obj/item/rcd_ammo)
|
||||
crate_name = "rcd ammo"
|
||||
|
||||
/datum/supply_pack/materials/bz
|
||||
name = "BZ Canister Crate"
|
||||
desc = "Contains a canister of BZ. Requires Toxins access to open."
|
||||
cost = 7500 // Costs 3 credits more than what you can get for selling it.
|
||||
access = ACCESS_TOX_STORAGE
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/bz)
|
||||
crate_name = "BZ canister crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/materials/carbon_dio
|
||||
name = "Carbon Dioxide Canister"
|
||||
desc = "Contains a canister of Carbon Dioxide."
|
||||
cost = 3000
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide)
|
||||
crate_name = "carbon dioxide canister crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/nitrogen
|
||||
name = "Nitrogen Canister"
|
||||
desc = "Contains a canister of Nitrogen."
|
||||
cost = 2000
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen)
|
||||
crate_name = "nitrogen canister crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/nitrous_oxide_canister
|
||||
name = "Nitrous Oxide Canister"
|
||||
desc = "Contains a canister of Nitrous Oxide. Requires Atmospherics access to open."
|
||||
cost = 3000
|
||||
access = ACCESS_ATMOSPHERICS
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide)
|
||||
crate_name = "nitrous oxide canister crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/materials/oxygen
|
||||
name = "Oxygen Canister"
|
||||
desc = "Contains a canister of Oxygen. Canned in Druidia."
|
||||
cost = 1500
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/oxygen)
|
||||
crate_name = "oxygen canister crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/water_vapor
|
||||
name = "Water Vapor Canister"
|
||||
desc = "Contains a canister of Water Vapor. I swear to god if you open this in the halls..."
|
||||
cost = 2500
|
||||
contains = list(/obj/machinery/portable_atmospherics/canister/water_vapor)
|
||||
crate_name = "water vapor canister crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/fueltank
|
||||
name = "Fuel Tank Crate"
|
||||
desc = "Contains a welding fuel tank. Caution, highly flammable."
|
||||
cost = 800
|
||||
contains = list(/obj/structure/reagent_dispensers/fueltank)
|
||||
crate_name = "fuel tank crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/watertank
|
||||
name = "Water Tank Crate"
|
||||
desc = "Contains a tank of dihydrogen monoxide... sounds dangerous."
|
||||
cost = 600
|
||||
contains = list(/obj/structure/reagent_dispensers/watertank)
|
||||
crate_name = "water tank crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/foamtank
|
||||
name = "Firefighting Foam Tank Crate"
|
||||
desc = "Contains a tank of firefighting foam. Also known as \"plasmaman's bane\"."
|
||||
cost = 1500
|
||||
contains = list(/obj/structure/reagent_dispensers/foamtank)
|
||||
crate_name = "foam tank crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/materials/hightank
|
||||
name = "Large Water Tank Crate"
|
||||
desc = "Contains a high-capacity water tank. Useful for botany or other service jobs."
|
||||
cost = 1200
|
||||
contains = list(/obj/structure/reagent_dispensers/watertank/high)
|
||||
crate_name = "high-capacity water tank crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
214
code/modules/cargo/packs/medical.dm
Normal file
214
code/modules/cargo/packs/medical.dm
Normal file
@@ -0,0 +1,214 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Medical /////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/medical
|
||||
group = "Medical"
|
||||
crate_type = /obj/structure/closet/crate/medical
|
||||
|
||||
/datum/supply_pack/medical/firstaidbruises
|
||||
name = "Bruise Treatment Kit Crate"
|
||||
desc = "Contains three first aid kits focused on healing bruises and broken bones."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/storage/firstaid/brute,
|
||||
/obj/item/storage/firstaid/brute,
|
||||
/obj/item/storage/firstaid/brute)
|
||||
crate_name = "brute treatment kit crate"
|
||||
|
||||
/datum/supply_pack/medical/firstaidburns
|
||||
name = "Burn Treatment Kit Crate"
|
||||
desc = "Contains three first aid kits focused on healing severe burns."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/storage/firstaid/fire,
|
||||
/obj/item/storage/firstaid/fire,
|
||||
/obj/item/storage/firstaid/fire)
|
||||
crate_name = "burn treatment kit crate"
|
||||
|
||||
/datum/supply_pack/medical/bloodpacks
|
||||
name = "Blood Pack Variety Crate"
|
||||
desc = "Contains eight different blood packs for reintroducing blood to patients."
|
||||
cost = 3000
|
||||
contains = list(/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood,
|
||||
/obj/item/reagent_containers/blood/APlus,
|
||||
/obj/item/reagent_containers/blood/AMinus,
|
||||
/obj/item/reagent_containers/blood/BPlus,
|
||||
/obj/item/reagent_containers/blood/BMinus,
|
||||
/obj/item/reagent_containers/blood/OPlus,
|
||||
/obj/item/reagent_containers/blood/OMinus,
|
||||
/obj/item/reagent_containers/blood/lizard)
|
||||
crate_name = "blood freezer"
|
||||
crate_type = /obj/structure/closet/crate/freezer
|
||||
|
||||
/datum/supply_pack/medical/defibs
|
||||
name = "Defibrillator Crate"
|
||||
desc = "Contains two defibrillators for bringing the recently deceased back to life."
|
||||
cost = 2500
|
||||
contains = list(/obj/item/defibrillator/loaded,
|
||||
/obj/item/defibrillator/loaded)
|
||||
crate_name = "defibrillator crate"
|
||||
|
||||
/datum/supply_pack/medical/firstaid
|
||||
name = "First Aid Kit Crate"
|
||||
desc = "Contains four first aid kits for healing most types of wounds."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/storage/firstaid/regular,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/obj/item/storage/firstaid/regular,
|
||||
/obj/item/storage/firstaid/regular)
|
||||
crate_name = "first aid kit crate"
|
||||
|
||||
/datum/supply_pack/medical/iv_drip
|
||||
name = "IV Drip Crate"
|
||||
desc = "Contains a single IV drip stand for intravenous delivery."
|
||||
cost = 800
|
||||
contains = list(/obj/machinery/iv_drip)
|
||||
crate_name = "iv drip crate"
|
||||
|
||||
/datum/supply_pack/science/adv_surgery_tools
|
||||
name = "Med-Co Advanced surgery tools"
|
||||
desc = "A full set of Med-Co advanced surgery tools, this crate also comes with a spay of synth flesh as well as a can of . Requires Surgery access to open."
|
||||
cost = 5500
|
||||
access = ACCESS_SURGERY
|
||||
contains = list(/obj/item/storage/belt/medical/surgery_belt_adv,
|
||||
/obj/item/reagent_containers/medspray/synthflesh,
|
||||
/obj/item/reagent_containers/medspray/sterilizine)
|
||||
crate_name = "medco newest surgery tools"
|
||||
crate_type = /obj/structure/closet/crate/medical
|
||||
|
||||
/datum/supply_pack/medical/medicalhardsuit
|
||||
name = "Medical Hardsuit"
|
||||
desc = "Got people being spaced left and right? Hole in the same room as the dead body of Hos or cap? Fear not, now you can buy one medical hardsuit with a mask and air tank to save your fellow crewmembers."
|
||||
cost = 2750
|
||||
contains = list(/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/suit/space/hardsuit/medical)
|
||||
crate_name = "medical hardsuit"
|
||||
|
||||
/datum/supply_pack/medical/supplies
|
||||
name = "Medical Supplies Crate"
|
||||
desc = "Contains seven beakers, syringes, and bodybags. Three morphine bottles, four insulin pills. Two charcoal bottles, epinephrine bottles, antitoxin bottles, and large beakers. Finally, a single roll of medical gauze, as well as a bottle of stimulant pills for long, hard work days. German doctor not included."
|
||||
cost = 2500
|
||||
contains = list(/obj/item/reagent_containers/glass/bottle/charcoal,
|
||||
/obj/item/reagent_containers/glass/bottle/charcoal,
|
||||
/obj/item/reagent_containers/glass/bottle/epinephrine,
|
||||
/obj/item/reagent_containers/glass/bottle/epinephrine,
|
||||
/obj/item/reagent_containers/glass/bottle/morphine,
|
||||
/obj/item/reagent_containers/glass/bottle/morphine,
|
||||
/obj/item/reagent_containers/glass/bottle/morphine,
|
||||
/obj/item/reagent_containers/glass/bottle/toxin,
|
||||
/obj/item/reagent_containers/glass/bottle/toxin,
|
||||
/obj/item/reagent_containers/glass/beaker/large,
|
||||
/obj/item/reagent_containers/glass/beaker/large,
|
||||
/obj/item/reagent_containers/pill/insulin,
|
||||
/obj/item/reagent_containers/pill/insulin,
|
||||
/obj/item/reagent_containers/pill/insulin,
|
||||
/obj/item/reagent_containers/pill/insulin,
|
||||
/obj/item/stack/medical/gauze,
|
||||
/obj/item/storage/box/beakers,
|
||||
/obj/item/storage/box/medsprays,
|
||||
/obj/item/storage/box/syringes,
|
||||
/obj/item/storage/box/bodybags,
|
||||
/obj/item/storage/pill_bottle/stimulant)
|
||||
crate_name = "medical supplies crate"
|
||||
|
||||
/datum/supply_pack/medical/vending
|
||||
name = "Medical Vending Crate"
|
||||
desc = "Contains refills for medical vending machines."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/vending_refill/medical,
|
||||
/obj/item/vending_refill/wallmed)
|
||||
crate_name = "medical vending crate"
|
||||
|
||||
/datum/supply_pack/medical/sprays
|
||||
name = "Medical Sprays"
|
||||
desc = "Contains two cans of Styptic Spray, Silver Sulfadiazine Spray, Synthflesh Spray and Sterilizer Compound Spray."
|
||||
cost = 2250
|
||||
contains = list(/obj/item/reagent_containers/medspray/styptic,
|
||||
/obj/item/reagent_containers/medspray/styptic,
|
||||
/obj/item/reagent_containers/medspray/silver_sulf,
|
||||
/obj/item/reagent_containers/medspray/silver_sulf,
|
||||
/obj/item/reagent_containers/medspray/synthflesh,
|
||||
/obj/item/reagent_containers/medspray/synthflesh,
|
||||
/obj/item/reagent_containers/medspray/sterilizine,
|
||||
/obj/item/reagent_containers/medspray/sterilizine)
|
||||
crate_name = "medical supplies crate"
|
||||
|
||||
/datum/supply_pack/medical/firstaidmixed
|
||||
name = "Mixed Medical Kits"
|
||||
desc = "Contains one of each medical kits for dealing with a variety of injured crewmembers."
|
||||
cost = 1250
|
||||
contains = list(/obj/item/storage/firstaid/toxin,
|
||||
/obj/item/storage/firstaid/o2,
|
||||
/obj/item/storage/firstaid/brute,
|
||||
/obj/item/storage/firstaid/fire,
|
||||
/obj/item/storage/firstaid/regular)
|
||||
crate_name = "medical supplies crate"
|
||||
|
||||
/datum/supply_pack/medical/firstaidoxygen
|
||||
name = "Oxygen Deprivation Kit Crate"
|
||||
desc = "Contains three first aid kits focused on helping oxygen deprivation victims."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/storage/firstaid/o2,
|
||||
/obj/item/storage/firstaid/o2,
|
||||
/obj/item/storage/firstaid/o2)
|
||||
crate_name = "oxygen deprivation kit crate"
|
||||
|
||||
/datum/supply_pack/medical/advrad
|
||||
name = "Radiation Treatment Crate Deluxe"
|
||||
desc = "A crate for when radiation is out of hand... Contains two rad-b-gone kits, one bottle of anti radiation deluxe pill bottle, as well as a radiation treatment deluxe pill bottle!"
|
||||
cost = 3500
|
||||
contains = list(/obj/item/storage/pill_bottle/antirad_plus,
|
||||
/obj/item/storage/pill_bottle/mutarad,
|
||||
/obj/item/storage/firstaid/radbgone,
|
||||
/obj/item/storage/firstaid/radbgone,
|
||||
/obj/item/geiger_counter,
|
||||
/obj/item/geiger_counter)
|
||||
crate_name = "radiation protection crate"
|
||||
crate_type = /obj/structure/closet/crate/radiation
|
||||
|
||||
/datum/supply_pack/medical/surgery
|
||||
name = "Surgical Supplies Crate"
|
||||
desc = "Do you want to perform surgery, but don't have one of those fancy shmancy degrees? Just get started with this crate containing a medical duffelbag, Sterilizine spray and collapsible roller bed."
|
||||
cost = 1300
|
||||
contains = list(/obj/item/storage/backpack/duffelbag/med/surgery,
|
||||
/obj/item/reagent_containers/medspray/sterilizine,
|
||||
/obj/item/roller)
|
||||
crate_name = "surgical supplies crate"
|
||||
|
||||
/datum/supply_pack/medical/firstaidtoxins
|
||||
name = "Toxin Treatment Kit Crate"
|
||||
desc = "Contains three first aid kits focused on healing damage dealt by heavy toxins."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/storage/firstaid/toxin,
|
||||
/obj/item/storage/firstaid/toxin,
|
||||
/obj/item/storage/firstaid/toxin)
|
||||
crate_name = "toxin treatment kit crate"
|
||||
|
||||
/datum/supply_pack/medical/virus
|
||||
name = "Virus Crate"
|
||||
desc = "Contains twelve different bottles, containing several viral samples for virology research. Also includes seven beakers and syringes. Balled-up jeans not included. Requires CMO access to open."
|
||||
cost = 2500
|
||||
access = ACCESS_CMO
|
||||
contains = list(/obj/item/reagent_containers/glass/bottle/flu_virion,
|
||||
/obj/item/reagent_containers/glass/bottle/cold,
|
||||
/obj/item/reagent_containers/glass/bottle/random_virus,
|
||||
/obj/item/reagent_containers/glass/bottle/random_virus,
|
||||
/obj/item/reagent_containers/glass/bottle/random_virus,
|
||||
/obj/item/reagent_containers/glass/bottle/random_virus,
|
||||
/obj/item/reagent_containers/glass/bottle/fake_gbs,
|
||||
/obj/item/reagent_containers/glass/bottle/magnitis,
|
||||
/obj/item/reagent_containers/glass/bottle/pierrot_throat,
|
||||
/obj/item/reagent_containers/glass/bottle/brainrot,
|
||||
/obj/item/reagent_containers/glass/bottle/anxiety,
|
||||
/obj/item/reagent_containers/glass/bottle/beesease,
|
||||
/obj/item/storage/box/syringes,
|
||||
/obj/item/storage/box/beakers,
|
||||
/obj/item/reagent_containers/glass/bottle/mutagen)
|
||||
crate_name = "virus crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
dangerous = TRUE
|
||||
223
code/modules/cargo/packs/misc.dm
Normal file
223
code/modules/cargo/packs/misc.dm
Normal file
@@ -0,0 +1,223 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Miscellaneous ///////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/misc
|
||||
group = "Miscellaneous Supplies"
|
||||
|
||||
/datum/supply_pack/misc/artsupply
|
||||
name = "Art Supplies"
|
||||
desc = "Make some happy little accidents with six canvasses, two easels, two boxes of crayons, and a rainbow crayon!"
|
||||
cost = 800
|
||||
contains = list(/obj/structure/easel,
|
||||
/obj/structure/easel,
|
||||
/obj/item/canvas/nineteenXnineteen,
|
||||
/obj/item/canvas/nineteenXnineteen,
|
||||
/obj/item/canvas/twentythreeXnineteen,
|
||||
/obj/item/canvas/twentythreeXnineteen,
|
||||
/obj/item/canvas/twentythreeXtwentythree,
|
||||
/obj/item/canvas/twentythreeXtwentythree,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/storage/crayons,
|
||||
/obj/item/toy/crayon/rainbow,
|
||||
/obj/item/toy/crayon/white,
|
||||
/obj/item/toy/crayon/white)
|
||||
crate_name = "art supply crate"
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/misc/captain_pen
|
||||
name = "Captain Pen"
|
||||
desc = "A spare Captain fountain pen."
|
||||
access = ACCESS_CAPTAIN
|
||||
cost = 10000
|
||||
contains = list(/obj/item/pen/fountain/captain)
|
||||
crate_name = "captain pen"
|
||||
crate_type = /obj/structure/closet/crate/secure/weapon //It is a combat pen
|
||||
|
||||
/datum/supply_pack/misc/bicycle
|
||||
name = "Bicycle"
|
||||
desc = "Nanotrasen reminds all employees to never toy with powers outside their control."
|
||||
cost = 1000000
|
||||
contains = list(/obj/vehicle/ridden/bicycle)
|
||||
crate_name = "Bicycle Crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/misc/bigband
|
||||
name = "Big Band Instrument Collection"
|
||||
desc = "Get your sad station movin' and groovin' with this fine collection! Contains nine different instruments!"
|
||||
cost = 5000
|
||||
crate_name = "Big band musical instruments collection"
|
||||
contains = list(/obj/item/instrument/violin,
|
||||
/obj/item/instrument/guitar,
|
||||
/obj/item/instrument/glockenspiel,
|
||||
/obj/item/instrument/accordion,
|
||||
/obj/item/instrument/saxophone,
|
||||
/obj/item/instrument/trombone,
|
||||
/obj/item/instrument/recorder,
|
||||
/obj/item/instrument/harmonica,
|
||||
/obj/structure/piano/unanchored)
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/misc/book_crate
|
||||
name = "Book Crate"
|
||||
desc = "Surplus from the Nanotrasen Archives, these five books are sure to be good reads."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/book/codex_gigas,
|
||||
/obj/item/book/manual/random/,
|
||||
/obj/item/book/manual/random/,
|
||||
/obj/item/book/manual/random/,
|
||||
/obj/item/book/random/triple)
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
|
||||
/datum/supply_pack/misc/paper
|
||||
name = "Bureaucracy Crate"
|
||||
desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureaucratic supplies! Contains five pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps as well as a briefcase."//that was too forced
|
||||
cost = 1500
|
||||
contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled,
|
||||
/obj/item/camera_film,
|
||||
/obj/item/hand_labeler,
|
||||
/obj/item/hand_labeler_refill,
|
||||
/obj/item/hand_labeler_refill,
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen/fourcolor,
|
||||
/obj/item/pen/fourcolor,
|
||||
/obj/item/pen,
|
||||
/obj/item/pen/blue,
|
||||
/obj/item/pen/red,
|
||||
/obj/item/folder/blue,
|
||||
/obj/item/folder/red,
|
||||
/obj/item/folder/yellow,
|
||||
/obj/item/clipboard,
|
||||
/obj/item/clipboard,
|
||||
/obj/item/stamp,
|
||||
/obj/item/stamp/denied,
|
||||
/obj/item/storage/briefcase)
|
||||
crate_name = "bureaucracy crate"
|
||||
|
||||
/datum/supply_pack/misc/fountainpens
|
||||
name = "Calligraphy Crate"
|
||||
desc = "Sign death warrants in style with these seven executive fountain pens."
|
||||
cost = 730
|
||||
contains = list(/obj/item/storage/box/fountainpens,
|
||||
/obj/item/paper_bin)
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
crate_name = "calligraphy crate"
|
||||
|
||||
/datum/supply_pack/misc/wrapping_paper
|
||||
name = "Festive Wrapping Paper Crate"
|
||||
desc = "Want to mail your loved ones gift-wrapped chocolates, stuffed animals, the Clown's severed head? You can do all that, with this crate full of wrapping paper."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stack/wrapping_paper)
|
||||
crate_type = /obj/structure/closet/crate/wooden
|
||||
crate_name = "festive wrapping paper crate"
|
||||
|
||||
/datum/supply_pack/misc/paper_work
|
||||
name = "Freelance Paper work"
|
||||
desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up.
|
||||
cost = 700 // Net of 0 credits
|
||||
contains = list(/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/folder/paperwork,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/pen/fountain)
|
||||
crate_name = "Paperwork"
|
||||
|
||||
/datum/supply_pack/misc/funeral
|
||||
name = "Funeral Supply crate"
|
||||
desc = "At the end of the day, someone's gonna want someone dead. Give them a proper send-off with these funeral supplies! Contains a coffin with burial garmets and flowers."
|
||||
cost = 800
|
||||
contains = list(/obj/item/clothing/under/burial,
|
||||
/obj/item/reagent_containers/food/snacks/grown/harebell,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy/geranium
|
||||
)
|
||||
crate_name = "coffin"
|
||||
crate_type = /obj/structure/closet/crate/coffin
|
||||
|
||||
/datum/supply_pack/misc/jukebox
|
||||
name = "Jukebox"
|
||||
cost = 15000
|
||||
contains = list(/obj/machinery/jukebox)
|
||||
crate_name = "Jukebox"
|
||||
|
||||
/datum/supply_pack/misc/lewd
|
||||
name = "Lewd Crate" // OwO
|
||||
desc = "Psss want to have a good time with your sluts? Well I got what you want maid clothing, dildos, collars and more!"
|
||||
cost = 5250
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/dildo/custom,
|
||||
/obj/item/dildo/custom,
|
||||
/obj/item/vending_refill/kink,
|
||||
/obj/item/vending_refill/kink,
|
||||
/obj/item/clothing/under/maid,
|
||||
/obj/item/clothing/under/maid,
|
||||
/obj/item/electropack/shockcollar,
|
||||
/obj/item/electropack/shockcollar,
|
||||
/obj/item/restraints/handcuffs/fake/kinky,
|
||||
/obj/item/restraints/handcuffs/fake/kinky,
|
||||
/obj/item/clothing/head/kitty/genuine, // Why its illegal
|
||||
/obj/item/clothing/head/kitty/genuine,
|
||||
/obj/item/storage/pill_bottle/penis_enlargement,
|
||||
/obj/structure/reagent_dispensers/keg/aphro)
|
||||
crate_name = "lewd kit"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/misc/lewdkeg
|
||||
name = "Lewd Deluxe Keg"
|
||||
desc = "That other stuff not getting you ready? Well I have a Chemslut making tons of the good stuff."
|
||||
cost = 7500 //It can be a weapon
|
||||
contraband = TRUE
|
||||
contains = list(/obj/structure/reagent_dispensers/keg/aphro/strong)
|
||||
crate_name = "deluxe keg"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/misc/religious_supplies
|
||||
name = "Religious Supplies Crate"
|
||||
desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets."
|
||||
cost = 4000 // it costs so much because the Space Church is ran by Space Jews
|
||||
contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/holywater,
|
||||
/obj/item/storage/book/bible/booze,
|
||||
/obj/item/storage/book/bible/booze,
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie,
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie
|
||||
)
|
||||
crate_name = "religious supplies crate"
|
||||
|
||||
/datum/supply_pack/misc/randomised/promiscuous
|
||||
name = "Promiscuous Organs"
|
||||
desc = "Do YOU want to have more genital? Well we have just the thing for you~. This crate has two autosurgeon, that will let you have a new sex, organ to impress that hot stud and or chick."
|
||||
cost = 4000 //Only get 2!
|
||||
contraband = TRUE
|
||||
var/num_contained = 2
|
||||
contains = list(/obj/item/autosurgeon/penis,
|
||||
/obj/item/autosurgeon/testicles,
|
||||
/obj/item/autosurgeon/vagina,
|
||||
/obj/item/autosurgeon/breasts,
|
||||
/obj/item/autosurgeon/womb)
|
||||
crate_name = "promiscuous organs"
|
||||
|
||||
/datum/supply_pack/misc/toner
|
||||
name = "Toner Crate"
|
||||
desc = "Spent too much ink printing butt pictures? Fret not, with these six toner refills, you'll be printing butts 'till the cows come home!'"
|
||||
cost = 1000
|
||||
contains = list(/obj/item/toner,
|
||||
/obj/item/toner,
|
||||
/obj/item/toner,
|
||||
/obj/item/toner,
|
||||
/obj/item/toner,
|
||||
/obj/item/toner)
|
||||
crate_name = "toner crate"
|
||||
290
code/modules/cargo/packs/organic.dm
Normal file
290
code/modules/cargo/packs/organic.dm
Normal file
@@ -0,0 +1,290 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Organic /////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/organic
|
||||
group = "Food & Hydroponics"
|
||||
crate_type = /obj/structure/closet/crate/freezer
|
||||
|
||||
/datum/supply_pack/organic/hydroponics/beekeeping_suits
|
||||
name = "Beekeeper Suit Crate"
|
||||
desc = "Bee business booming? Better be benevolent and boost botany by bestowing bi-Beekeeper-suits! Contains two beekeeper suits and matching headwear."
|
||||
cost = 1300
|
||||
contains = list(/obj/item/clothing/head/beekeeper_head,
|
||||
/obj/item/clothing/suit/beekeeper_suit,
|
||||
/obj/item/clothing/head/beekeeper_head,
|
||||
/obj/item/clothing/suit/beekeeper_suit)
|
||||
crate_name = "beekeeper suits"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/hydroponics/beekeeping_fullkit
|
||||
name = "Beekeeping Starter Crate"
|
||||
desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!"
|
||||
cost = 1800
|
||||
contains = list(/obj/structure/beebox/unwrenched,
|
||||
/obj/item/honey_frame,
|
||||
/obj/item/honey_frame,
|
||||
/obj/item/honey_frame,
|
||||
/obj/item/queen_bee/bought,
|
||||
/obj/item/clothing/head/beekeeper_head,
|
||||
/obj/item/clothing/suit/beekeeper_suit,
|
||||
/obj/item/melee/flyswatter)
|
||||
crate_name = "beekeeping starter crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/candy/randomised
|
||||
name = "Candy Crate"
|
||||
desc = "For people that have a insatiable sweet tooth! Has ten candies to be eaten up.."
|
||||
cost = 2500
|
||||
var/num_contained = 10 //number of items picked to be contained in a randomised crate
|
||||
contains = list(/obj/item/reagent_containers/food/snacks/candy,
|
||||
/obj/item/reagent_containers/food/snacks/lollipop,
|
||||
/obj/item/reagent_containers/food/snacks/gumball,
|
||||
/obj/item/reagent_containers/food/snacks/chocolateegg,
|
||||
/obj/item/reagent_containers/food/snacks/donut,
|
||||
/obj/item/reagent_containers/food/snacks/cookie,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie,
|
||||
/obj/item/reagent_containers/food/snacks/chococornet,
|
||||
/obj/item/reagent_containers/food/snacks/mint,
|
||||
/obj/item/reagent_containers/food/snacks/spiderlollipop,
|
||||
/obj/item/reagent_containers/food/snacks/chococoin,
|
||||
/obj/item/reagent_containers/food/snacks/fudgedice,
|
||||
/obj/item/reagent_containers/food/snacks/chocoorange,
|
||||
/obj/item/reagent_containers/food/snacks/honeybar,
|
||||
/obj/item/reagent_containers/food/snacks/tinychocolate,
|
||||
/obj/item/reagent_containers/food/snacks/spacetwinkie,
|
||||
/obj/item/reagent_containers/food/snacks/syndicake,
|
||||
/obj/item/reagent_containers/food/snacks/cheesiehonkers,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull,
|
||||
/obj/item/reagent_containers/food/snacks/sugarcookie/spookycoffin,
|
||||
/obj/item/reagent_containers/food/snacks/candy_corn,
|
||||
/obj/item/reagent_containers/food/snacks/candiedapple,
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/reagent_containers/food/snacks/candyheart,
|
||||
/obj/item/storage/fancy/heart_box,
|
||||
/obj/item/storage/fancy/donut_box)
|
||||
crate_name = "candy crate"
|
||||
|
||||
/datum/supply_pack/organic/cutlery
|
||||
name = "Kitchen Cutlery Deluxe Set"
|
||||
desc = "Need to slice and dice away those ''Tomatos'' well we got what you need! From a nice set of knifes, forks, plates, glasses, and a whetstone for when you got some grizzle that is a bit harder to slice then normal."
|
||||
cost = 10000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/sharpener,
|
||||
/obj/item/kitchen/fork,
|
||||
/obj/item/kitchen/fork,
|
||||
/obj/item/kitchen/knife,
|
||||
/obj/item/kitchen/knife,
|
||||
/obj/item/kitchen/knife,
|
||||
/obj/item/kitchen/knife,
|
||||
/obj/item/kitchen/knife/butcher,
|
||||
/obj/item/kitchen/knife/butcher,
|
||||
/obj/item/kitchen/rollingpin, //Deluxe for a reason
|
||||
/obj/item/trash/plate,
|
||||
/obj/item/trash/plate,
|
||||
/obj/item/trash/plate,
|
||||
/obj/item/trash/plate,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass,
|
||||
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass)
|
||||
crate_name = "kitchen cutlery deluxe set"
|
||||
|
||||
/datum/supply_pack/organic/food
|
||||
name = "Food Crate"
|
||||
desc = "Get things cooking with this crate full of useful ingredients! Contains a two dozen eggs, three bananas, and two bags of flour and rice, two cartons of milk, soymilk, as well as salt and pepper shakers, a enzyme and sugar bottle, and three slabs of monkeymeat."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/reagent_containers/food/condiment/flour,
|
||||
/obj/item/reagent_containers/food/condiment/flour,
|
||||
/obj/item/reagent_containers/food/condiment/rice,
|
||||
/obj/item/reagent_containers/food/condiment/rice,
|
||||
/obj/item/reagent_containers/food/condiment/milk,
|
||||
/obj/item/reagent_containers/food/condiment/milk,
|
||||
/obj/item/reagent_containers/food/condiment/soymilk,
|
||||
/obj/item/reagent_containers/food/condiment/saltshaker,
|
||||
/obj/item/reagent_containers/food/condiment/peppermill,
|
||||
/obj/item/storage/fancy/egg_box,
|
||||
/obj/item/storage/fancy/egg_box,
|
||||
/obj/item/reagent_containers/food/condiment/enzyme,
|
||||
/obj/item/reagent_containers/food/condiment/sugar,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/monkey,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/monkey,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/monkey,
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana,
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana,
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana)
|
||||
crate_name = "food crate"
|
||||
|
||||
/datum/supply_pack/organic/cream_piee
|
||||
name = "High-yield Clown-grade Cream Pie Crate"
|
||||
desc = "Designed by Aussec's Advanced Warfare Research Division, these high-yield, Clown-grade cream pies are powered by a synergy of performance and efficiency. Guaranteed to provide maximum results."
|
||||
cost = 6000
|
||||
contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie)
|
||||
crate_name = "party equipment crate"
|
||||
contraband = TRUE
|
||||
access = ACCESS_THEATRE
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/organic/hunting
|
||||
name = "Huntting gear"
|
||||
desc = "Even in space, we can fine prey to hunt, this crate contains everthing a fine hunter needs to have a sporting time. This crate needs armory access to open. A true huntter only needs a fine bottle of cognac, a nice coat, some good o' cigars, and of cource a huntting shotgun. "
|
||||
cost = 3500
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/clothing/head/flatcap,
|
||||
/obj/item/clothing/suit/hooded/wintercoat/captain,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/cognac,
|
||||
/obj/item/storage/fancy/cigarettes/cigars/havana,
|
||||
/obj/item/clothing/gloves/color/white,
|
||||
/obj/item/clothing/under/rank/curator,
|
||||
/obj/item/gun/ballistic/shotgun/lethal)
|
||||
access = ACCESS_ARMORY
|
||||
crate_name = "sporting crate"
|
||||
crate_type = /obj/structure/closet/crate/secure // Would have liked a wooden crate but access >:(
|
||||
|
||||
/datum/supply_pack/organic/hydroponics
|
||||
name = "Hydroponics Crate"
|
||||
desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron."
|
||||
cost = 1750
|
||||
contains = list(/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/spray/plantbgone,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/hatchet,
|
||||
/obj/item/cultivator,
|
||||
/obj/item/plant_analyzer,
|
||||
/obj/item/clothing/gloves/botanic_leather,
|
||||
/obj/item/clothing/suit/apron)
|
||||
crate_name = "hydroponics crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/hydroponics/hydrotank
|
||||
name = "Hydroponics Backpack Crate"
|
||||
desc = "Bring on the flood with this high-capacity backpack crate. Contains 500 units of life-giving H2O. Requires hydroponics access to open."
|
||||
cost = 1200
|
||||
access = ACCESS_HYDROPONICS
|
||||
contains = list(/obj/item/watertank)
|
||||
crate_name = "hydroponics backpack crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/organic/mre
|
||||
name = "MRE supply kit (emergency rations)"
|
||||
desc = "The lights are out. Oxygen's running low. You've run out of food except space weevils. Don't let this be you! Order our NT branded MRE kits today! This pack contains 5 MRE packs with a randomized menu and an oxygen tank."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/box/mre/menu1/safe,
|
||||
/obj/item/storage/box/mre/menu1/safe,
|
||||
/obj/item/storage/box/mre/menu2/safe,
|
||||
/obj/item/storage/box/mre/menu2/safe,
|
||||
/obj/item/storage/box/mre/menu3,
|
||||
/obj/item/storage/box/mre/menu4/safe)
|
||||
crate_name = "MRE crate (emergency rations)"
|
||||
|
||||
/datum/supply_pack/organic/pizza
|
||||
name = "Pizza Crate"
|
||||
desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99% anomaly-free!"
|
||||
cost = 6000 // Best prices this side of the galaxy.
|
||||
contains = list(/obj/item/pizzabox/margherita,
|
||||
/obj/item/pizzabox/mushroom,
|
||||
/obj/item/pizzabox/meat,
|
||||
/obj/item/pizzabox/vegetable,
|
||||
/obj/item/pizzabox/pineapple)
|
||||
crate_name = "pizza crate"
|
||||
var/static/anomalous_box_provided = FALSE
|
||||
|
||||
/datum/supply_pack/organic/pizza/fill(obj/structure/closet/crate/C)
|
||||
. = ..()
|
||||
if(!anomalous_box_provided)
|
||||
for(var/obj/item/pizzabox/P in C)
|
||||
if(prob(1)) //1% chance for each box, so 4% total chance per order
|
||||
var/obj/item/pizzabox/infinite/fourfiveeight = new(C)
|
||||
fourfiveeight.boxtag = P.boxtag
|
||||
qdel(P)
|
||||
anomalous_box_provided = TRUE
|
||||
log_game("An anomalous pizza box was provided in a pizza crate at during cargo delivery")
|
||||
if(prob(50))
|
||||
addtimer(CALLBACK(src, .proc/anomalous_pizza_report), rand(300, 1800))
|
||||
else
|
||||
message_admins("An anomalous pizza box was silently created with no command report in a pizza crate delivery.")
|
||||
break
|
||||
|
||||
/datum/supply_pack/organic/pizza/proc/anomalous_pizza_report()
|
||||
print_command_report("[station_name()], our anomalous materials divison has reported a missing object that is highly likely to have been sent to your station during a routine cargo \
|
||||
delivery. Please search all crates and manifests provided with the delivery and return the object if is located. The object resembles a standard <b>\[DATA EXPUNGED\]</b> and is to be \
|
||||
considered <b>\[REDACTED\]</b> and returned at your leisure. Note that objects the anomaly produces are specifically attuned exactly to the individual opening the anomaly; regardless \
|
||||
of species, the individual will find the object edible and it will taste great according to their personal definitions, which vary significantly based on person and species.")
|
||||
|
||||
/datum/supply_pack/organic/potted_plants
|
||||
name = "Potted Plants Crate"
|
||||
desc = "Spruce up the station with these lovely plants! Contains a random assortment of five potted plants from Nanotrasen's potted plant research division. Warranty void if thrown."
|
||||
cost = 730
|
||||
contains = list(/obj/item/twohanded/required/kirbyplants/random,
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
/obj/item/twohanded/required/kirbyplants/random,
|
||||
/obj/item/twohanded/required/kirbyplants/random)
|
||||
crate_name = "potted plants crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/seeds
|
||||
name = "Seeds Crate"
|
||||
desc = "Big things have small beginnings. Contains thirteen different seeds."
|
||||
cost = 1250
|
||||
contains = list(/obj/item/seeds/chili,
|
||||
/obj/item/seeds/berry,
|
||||
/obj/item/seeds/corn,
|
||||
/obj/item/seeds/eggplant,
|
||||
/obj/item/seeds/tomato,
|
||||
/obj/item/seeds/soya,
|
||||
/obj/item/seeds/wheat,
|
||||
/obj/item/seeds/wheat/rice,
|
||||
/obj/item/seeds/carrot,
|
||||
/obj/item/seeds/sunflower,
|
||||
/obj/item/seeds/chanter,
|
||||
/obj/item/seeds/potato,
|
||||
/obj/item/seeds/sugarcane)
|
||||
crate_name = "seeds crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
|
||||
/datum/supply_pack/organic/vday
|
||||
name = "Surplus Valentine Crate"
|
||||
desc = "Turns out we got warehouses of this love-y dove-y crap. Were sending out small barged buddle of Valentine gear. This crate has two boxes of chocolate, three poppy flowers, five candy hearts, and three cards."
|
||||
cost = 3000
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/storage/fancy/heart_box,
|
||||
/obj/item/storage/fancy/heart_box,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy,
|
||||
/obj/item/reagent_containers/food/snacks/grown/poppy,
|
||||
/obj/item/reagent_containers/food/snacks/candyheart,
|
||||
/obj/item/reagent_containers/food/snacks/candyheart,
|
||||
/obj/item/reagent_containers/food/snacks/candyheart,
|
||||
/obj/item/reagent_containers/food/snacks/candyheart,
|
||||
/obj/item/reagent_containers/food/snacks/candyheart,
|
||||
/obj/item/valentine,
|
||||
/obj/item/valentine,
|
||||
/obj/item/valentine)
|
||||
crate_name = "valentine crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/organic/exoticseeds
|
||||
name = "Exotic Seeds Crate"
|
||||
desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/seeds/nettle,
|
||||
/obj/item/seeds/replicapod,
|
||||
/obj/item/seeds/replicapod,
|
||||
/obj/item/seeds/replicapod,
|
||||
/obj/item/seeds/plump,
|
||||
/obj/item/seeds/liberty,
|
||||
/obj/item/seeds/amanita,
|
||||
/obj/item/seeds/reishi,
|
||||
/obj/item/seeds/banana,
|
||||
/obj/item/seeds/eggplant/eggy,
|
||||
/obj/item/seeds/random,
|
||||
/obj/item/seeds/random)
|
||||
crate_name = "exotic seeds crate"
|
||||
crate_type = /obj/structure/closet/crate/hydroponics
|
||||
119
code/modules/cargo/packs/science.dm
Normal file
119
code/modules/cargo/packs/science.dm
Normal file
@@ -0,0 +1,119 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Science /////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/science
|
||||
group = "Science"
|
||||
crate_type = /obj/structure/closet/crate/science
|
||||
|
||||
/datum/supply_pack/science/robotics/mecha_odysseus
|
||||
name = "Circuit Crate (Odysseus)"
|
||||
desc = "Ever wanted to build your own giant medical robot? Well, now you can! Contains the Odysseus main control board and Odysseus peripherals board. Requires Robotics access to open."
|
||||
cost = 2500
|
||||
access = ACCESS_ROBOTICS
|
||||
contains = list(/obj/item/circuitboard/mecha/odysseus/peripherals,
|
||||
/obj/item/circuitboard/mecha/odysseus/main)
|
||||
crate_name = "\improper Odysseus circuit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/robotics/mecha_ripley
|
||||
name = "Circuit Crate (Ripley APLU)"
|
||||
desc = "Rip apart rocks and xenomorphs alike with the Ripley APLU. Contains the Main Ripley control board, as well as the Ripley Peripherals board. Requires Robotics access to open."
|
||||
cost = 3000
|
||||
access = ACCESS_ROBOTICS
|
||||
contains = list(/obj/item/book/manual/ripley_build_and_repair,
|
||||
/obj/item/circuitboard/mecha/ripley/main,
|
||||
/obj/item/circuitboard/mecha/ripley/peripherals)
|
||||
crate_name = "\improper APLU Ripley circuit crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/circuitry
|
||||
name = "Circuitry Starter Pack Crate"
|
||||
desc = "Journey into the mysterious world of Circuitry with this starter pack. Contains a circuit printer, analyzer, debugger and wirer. Power cells not included."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/integrated_electronics/analyzer,
|
||||
/obj/item/integrated_circuit_printer,
|
||||
/obj/item/integrated_electronics/debugger,
|
||||
/obj/item/integrated_electronics/wirer)
|
||||
crate_name = "circuitry starter pack crate"
|
||||
|
||||
/datum/supply_pack/science/plasma
|
||||
name = "Plasma Assembly Crate"
|
||||
desc = "Everything you need to burn something to the ground, this contains three plasma assembly sets. Each set contains a plasma tank, igniter, proximity sensor, and timer! Warranty void if exposed to high temperatures. Requires Toxins access to open."
|
||||
cost = 1800
|
||||
access = ACCESS_TOX_STORAGE
|
||||
contains = list(/obj/item/tank/internals/plasma,
|
||||
/obj/item/tank/internals/plasma,
|
||||
/obj/item/tank/internals/plasma,
|
||||
/obj/item/assembly/igniter,
|
||||
/obj/item/assembly/igniter,
|
||||
/obj/item/assembly/igniter,
|
||||
/obj/item/assembly/prox_sensor,
|
||||
/obj/item/assembly/prox_sensor,
|
||||
/obj/item/assembly/prox_sensor,
|
||||
/obj/item/assembly/timer,
|
||||
/obj/item/assembly/timer,
|
||||
/obj/item/assembly/timer)
|
||||
crate_name = "plasma assembly crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/plasma
|
||||
|
||||
/datum/supply_pack/science/robotics
|
||||
name = "Robotics Assembly Crate"
|
||||
desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains three proximity sensors, two high-powered cells, six flashes, and an electrical toolbox. Requires Robotics access to open."
|
||||
cost = 1500
|
||||
access = ACCESS_ROBOTICS
|
||||
contains = list(/obj/item/assembly/prox_sensor,
|
||||
/obj/item/assembly/prox_sensor,
|
||||
/obj/item/assembly/prox_sensor,
|
||||
/obj/item/storage/toolbox/electrical,
|
||||
/obj/item/storage/box/flashes,
|
||||
/obj/item/stock_parts/cell/high,
|
||||
/obj/item/stock_parts/cell/high)
|
||||
crate_name = "robotics assembly crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/shieldwalls
|
||||
name = "Shield Generator Crate"
|
||||
desc = "These high powered Shield Wall Generators are guaranteed to keep any unwanted lifeforms on the outside, where they belong! Contains four shield wall generators. Requires Teleporter access to open."
|
||||
cost = 2000
|
||||
access = ACCESS_TELEPORTER
|
||||
contains = list(/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen,
|
||||
/obj/machinery/shieldwallgen)
|
||||
crate_name = "shield generators crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
|
||||
/datum/supply_pack/science/tablets
|
||||
name = "Tablet Crate"
|
||||
desc = "What's a computer? Contains five cargo tablets."
|
||||
cost = 5000
|
||||
contains = list(/obj/item/modular_computer/tablet/preset/cargo,
|
||||
/obj/item/modular_computer/tablet/preset/cargo,
|
||||
/obj/item/modular_computer/tablet/preset/cargo,
|
||||
/obj/item/modular_computer/tablet/preset/cargo,
|
||||
/obj/item/modular_computer/tablet/preset/cargo)
|
||||
crate_name = "tablet crate"
|
||||
|
||||
/datum/supply_pack/science/transfer_valves
|
||||
name = "Tank Transfer Valves Crate"
|
||||
desc = "The key ingredient for making a lot of people very angry very fast. Contains two tank transfer valves. Requires RD access to open."
|
||||
cost = 6000
|
||||
access = ACCESS_RD
|
||||
contains = list(/obj/item/transfer_valve,
|
||||
/obj/item/transfer_valve)
|
||||
crate_name = "tank transfer valves crate"
|
||||
crate_type = /obj/structure/closet/crate/secure/science
|
||||
dangerous = TRUE
|
||||
|
||||
/datum/supply_pack/science/tech_slugs
|
||||
name = "Tech Slug Ammo Shells"
|
||||
desc = "A new type of shell that is able to be made into a few different dangerous types. Contains two boxes of tech slugs, 14 shells in all."
|
||||
cost = 1700
|
||||
contains = list(/obj/item/storage/box/techsslug,
|
||||
/obj/item/storage/box/techsslug)
|
||||
crate_name = "tech slug crate"
|
||||
192
code/modules/cargo/packs/security.dm
Normal file
192
code/modules/cargo/packs/security.dm
Normal file
@@ -0,0 +1,192 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//////////////////////////// Security ////////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/security
|
||||
group = "Security"
|
||||
access = ACCESS_SECURITY
|
||||
crate_type = /obj/structure/closet/crate/secure/gear
|
||||
|
||||
/datum/supply_pack/security/armor
|
||||
name = "Armor Crate"
|
||||
desc = "Three vests of well-rounded, decently-protective armor. Requires Security access to open."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/clothing/suit/armor/vest,
|
||||
/obj/item/clothing/suit/armor/vest)
|
||||
crate_name = "armor crate"
|
||||
|
||||
/datum/supply_pack/security/disabler
|
||||
name = "Disabler Crate"
|
||||
desc = "Three stamina-draining disabler weapons. Requires Security access to open."
|
||||
cost = 1300
|
||||
contains = list(/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/disabler,
|
||||
/obj/item/gun/energy/disabler)
|
||||
crate_name = "disabler crate"
|
||||
|
||||
/datum/supply_pack/security/forensics
|
||||
name = "Forensics Crate"
|
||||
desc = "Stay hot on the criminal's heels with Nanotrasen's Detective Essentials(tm). Contains a forensics scanner, six evidence bags, camera, tape recorder, white crayon, and of course, a fedora. Requires Security access to open."
|
||||
cost = 1800
|
||||
contains = list(/obj/item/detective_scanner,
|
||||
/obj/item/storage/box/evidence,
|
||||
/obj/item/camera,
|
||||
/obj/item/taperecorder,
|
||||
/obj/item/toy/crayon/white,
|
||||
/obj/item/clothing/head/fedora/det_hat)
|
||||
crate_name = "forensics crate"
|
||||
|
||||
/datum/supply_pack/security/helmets
|
||||
name = "Helmets Crate"
|
||||
desc = "Contains three standard-issue brain buckets. Requires Security access to open."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/clothing/head/helmet/sec,
|
||||
/obj/item/clothing/head/helmet/sec,
|
||||
/obj/item/clothing/head/helmet/sec)
|
||||
crate_name = "helmet crate"
|
||||
|
||||
/datum/supply_pack/security/laser
|
||||
name = "Lasers Crate"
|
||||
desc = "Contains three lethal, high-energy laser guns. Requires Security access to open."
|
||||
cost = 1750
|
||||
contains = list(/obj/item/gun/energy/laser,
|
||||
/obj/item/gun/energy/laser,
|
||||
/obj/item/gun/energy/laser)
|
||||
crate_name = "laser crate"
|
||||
|
||||
/datum/supply_pack/security/russianclothing
|
||||
name = "Russian Surplus Clothing"
|
||||
desc = "An old russian crate full of surplus armor that they used to use! Has two sets of bulletproff armor, a few union suits and some warm hats!"
|
||||
contraband = TRUE
|
||||
cost = 5750 // Its basicly sec suits, good boots/gloves
|
||||
contains = list(/obj/item/clothing/suit/security/officer/russian,
|
||||
/obj/item/clothing/suit/security/officer/russian,
|
||||
/obj/item/clothing/shoes/combat,
|
||||
/obj/item/clothing/shoes/combat,
|
||||
/obj/item/clothing/head/ushanka,
|
||||
/obj/item/clothing/head/ushanka,
|
||||
/obj/item/clothing/suit/armor/bulletproof,
|
||||
/obj/item/clothing/suit/armor/bulletproof,
|
||||
/obj/item/clothing/head/helmet/alt,
|
||||
/obj/item/clothing/head/helmet/alt,
|
||||
/obj/item/clothing/gloves/combat,
|
||||
/obj/item/clothing/gloves/combat,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/clothing/mask/gas)
|
||||
crate_name = "surplus russian clothing"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/security/russianmosin
|
||||
name = "Russian Minutemen Gear"
|
||||
desc = "An old russian Minutemen crate, comes with a full russian outfit, a mosin and a stripper clip."
|
||||
contraband = TRUE
|
||||
access = FALSE
|
||||
cost = 5500 //
|
||||
contains = list(/obj/item/clothing/suit/security/officer/russian,
|
||||
/obj/item/clothing/shoes/combat,
|
||||
/obj/item/clothing/head/ushanka,
|
||||
/obj/item/clothing/suit/armor/bulletproof,
|
||||
/obj/item/clothing/head/helmet/alt,
|
||||
/obj/item/clothing/gloves/combat,
|
||||
/obj/item/clothing/mask/gas,
|
||||
/obj/item/gun/ballistic/shotgun/boltaction,
|
||||
/obj/item/ammo_box/a762)
|
||||
crate_name = "surplus russian gear"
|
||||
crate_type = /obj/structure/closet/crate/internals
|
||||
|
||||
/datum/supply_pack/security/sechardsuit
|
||||
name = "Sec Hardsuit"
|
||||
desc = "One Sec Hardsuit with a small air tank and mask."
|
||||
cost = 3000 // half of SWAT gear for have the armor and half the gear
|
||||
contains = list(/obj/item/clothing/suit/space/hardsuit/security,
|
||||
/obj/item/tank/internals/air,
|
||||
/obj/item/clothing/mask/gas)
|
||||
crate_name = "sec hardsuit crate"
|
||||
|
||||
/datum/supply_pack/security/securitybarriers
|
||||
name = "Security Barrier Grenades"
|
||||
desc = "Stem the tide with four Security Barrier grenades. Requires Security access to open."
|
||||
contains = list(/obj/item/grenade/barrier,
|
||||
/obj/item/grenade/barrier,
|
||||
/obj/item/grenade/barrier,
|
||||
/obj/item/grenade/barrier)
|
||||
cost = 2000
|
||||
crate_name = "security barriers crate"
|
||||
|
||||
/datum/supply_pack/security/securityclothes
|
||||
name = "Security Clothing Crate"
|
||||
desc = "Contains appropriate outfits for the station's private security force. Contains outfits for the Warden, Head of Security, and two Security Officers. Each outfit comes with a rank-appropriate jumpsuit, suit, and beret. Requires Security access to open."
|
||||
cost = 3250
|
||||
contains = list(/obj/item/clothing/under/rank/security/navyblue,
|
||||
/obj/item/clothing/under/rank/security/navyblue,
|
||||
/obj/item/clothing/suit/security/officer,
|
||||
/obj/item/clothing/suit/security/officer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/head/beret/sec/navyofficer,
|
||||
/obj/item/clothing/under/rank/warden/navyblue,
|
||||
/obj/item/clothing/suit/security/warden,
|
||||
/obj/item/clothing/head/beret/sec/navywarden,
|
||||
/obj/item/clothing/under/rank/head_of_security/navyblue,
|
||||
/obj/item/clothing/suit/security/hos,
|
||||
/obj/item/clothing/head/beret/sec/navyhos)
|
||||
crate_name = "security clothing crate"
|
||||
|
||||
/datum/supply_pack/security/supplies
|
||||
name = "Security Supplies Crate"
|
||||
desc = "Contains seven flashbangs, seven teargas grenades, six flashes, and seven handcuffs. Requires Security access to open."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/storage/box/flashbangs,
|
||||
/obj/item/storage/box/teargas,
|
||||
/obj/item/storage/box/flashes,
|
||||
/obj/item/storage/box/handcuffs)
|
||||
crate_name = "security supply crate"
|
||||
|
||||
/datum/supply_pack/security/firingpins
|
||||
name = "Standard Firing Pins Crate"
|
||||
desc = "Upgrade your arsenal with 10 standard firing pins. Requires Security access to open."
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/box/firingpins,
|
||||
/obj/item/storage/box/firingpins)
|
||||
crate_name = "firing pins crate"
|
||||
|
||||
/datum/supply_pack/security/justiceinbound
|
||||
name = "Standard Justice Enforcer Crate"
|
||||
desc = "This is it. The Bee's Knees. The Creme of the Crop. The Pick of the Litter. The best of the best of the best. The Crown Jewel of Nanotrasen. The Alpha and the Omega of security headwear. Guaranteed to strike fear into the hearts of each and every criminal aboard the station. Also comes with a security gasmask. Requires Security access to open."
|
||||
cost = 6000 //justice comes at a price. An expensive, noisy price.
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/clothing/head/helmet/justice,
|
||||
/obj/item/clothing/mask/gas/sechailer)
|
||||
crate_name = "security clothing crate"
|
||||
|
||||
/datum/supply_pack/security/baton
|
||||
name = "Stun Batons Crate"
|
||||
desc = "Arm the Civil Protection Forces with three stun batons. Batteries included. Requires Security access to open."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/melee/baton/loaded,
|
||||
/obj/item/melee/baton/loaded,
|
||||
/obj/item/melee/baton/loaded)
|
||||
crate_name = "stun baton crate"
|
||||
|
||||
/datum/supply_pack/security/taser
|
||||
name = "Taser Crate"
|
||||
desc = "From the depths of stunbased combat, this order rises above, supreme. Contains three hybrid tasers, capable of firing both electrodes and disabling shots. Requires Security access to open."
|
||||
cost = 3500
|
||||
contains = list(/obj/item/gun/energy/e_gun/advtaser,
|
||||
/obj/item/gun/energy/e_gun/advtaser,
|
||||
/obj/item/gun/energy/e_gun/advtaser)
|
||||
crate_name = "taser crate"
|
||||
|
||||
/datum/supply_pack/security/wall_flash
|
||||
name = "Wall-Mounted Flash Crate"
|
||||
desc = "Contains four wall-mounted flashes. Requires Security access to open."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/storage/box/wall_flash,
|
||||
/obj/item/storage/box/wall_flash,
|
||||
/obj/item/storage/box/wall_flash,
|
||||
/obj/item/storage/box/wall_flash)
|
||||
crate_name = "wall-mounted flash crate"
|
||||
266
code/modules/cargo/packs/service.dm
Normal file
266
code/modules/cargo/packs/service.dm
Normal file
@@ -0,0 +1,266 @@
|
||||
|
||||
//Reminders-
|
||||
// If you add something to this list, please group it by type and sort it alphabetically instead of just jamming it in like an animal
|
||||
// cost = 700- Minimum cost, or infinite points are possible.
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////////// Service //////////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/service
|
||||
group = "Service"
|
||||
|
||||
/datum/supply_pack/service/advlighting
|
||||
name = "Advanced Lighting crate"
|
||||
desc = "Thanks to advanced lighting tech we here at the Lamp Factory have be able to produce more lamps and lamp items! This crate has three lamps, a box of lights and a state of the art rapid-light-device!"
|
||||
cost = 2750
|
||||
contains = list(/obj/item/construction/rld,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/item/flashlight/lamp/green,
|
||||
/obj/item/storage/box/lights/mixed)
|
||||
crate_name = "advanced lighting crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/service/cargo_supples
|
||||
name = "Cargo Supplies Crate"
|
||||
desc = "Sold everything that wasn't bolted down? You can get right back to work with this crate containing stamps, an export scanner, destination tagger, hand labeler and some package wrapping."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stamp,
|
||||
/obj/item/stamp/denied,
|
||||
/obj/item/export_scanner,
|
||||
/obj/item/destTagger,
|
||||
/obj/item/hand_labeler,
|
||||
/obj/item/stack/packageWrap)
|
||||
crate_name = "cargo supplies crate"
|
||||
|
||||
/datum/supply_pack/service/carpet_exotic
|
||||
name = "Exotic Carpet Crate"
|
||||
desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 10 different flooring patterns."
|
||||
cost = 10000
|
||||
contains = list(/obj/item/stack/tile/carpet/blue/fifty,
|
||||
/obj/item/stack/tile/carpet/blue/fifty,
|
||||
/obj/item/stack/tile/carpet/cyan/fifty,
|
||||
/obj/item/stack/tile/carpet/cyan/fifty,
|
||||
/obj/item/stack/tile/carpet/green/fifty,
|
||||
/obj/item/stack/tile/carpet/green/fifty,
|
||||
/obj/item/stack/tile/carpet/orange/fifty,
|
||||
/obj/item/stack/tile/carpet/orange/fifty,
|
||||
/obj/item/stack/tile/carpet/purple/fifty,
|
||||
/obj/item/stack/tile/carpet/purple/fifty,
|
||||
/obj/item/stack/tile/carpet/red/fifty,
|
||||
/obj/item/stack/tile/carpet/red/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblue/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty,
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty,
|
||||
/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty,
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty)
|
||||
crate_name = "exotic carpet crate"
|
||||
|
||||
/datum/supply_pack/service/food_cart
|
||||
name = "Food Cart Crate"
|
||||
desc = "Want to sell food on the go? Cook lost their cart? Well we just so happen to have a few carts to spare!"
|
||||
cost = 1000
|
||||
contains = list(/obj/machinery/food_cart)
|
||||
crate_name = "food cart crate"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/service/noslipfloor
|
||||
name = "High-traction Floor Tiles"
|
||||
desc = "Make slipping a thing of the past with sixty industrial-grade anti-slip floortiles!"
|
||||
cost = 2000
|
||||
contains = list(/obj/item/stack/tile/noslip/thirty,
|
||||
/obj/item/stack/tile/noslip/thirty)
|
||||
crate_name = "high-traction floor tiles crate"
|
||||
|
||||
/datum/supply_pack/service/icecream_cart
|
||||
name = "Ice Cream Cart Crate"
|
||||
desc = "Plasma fire a to hot for you, want a nice treat after a hard days work? Well now we have the cart for you! This Ice Cream Vat has everthing you need to make you and your friends so ice cream treats! This cart comes stocked with some ingredients for each type of scoopable icecream."
|
||||
cost = 2750 //Comes prestocked with basic ingredients
|
||||
contains = list(/obj/machinery/icecream_vat)
|
||||
crate_name = "ice cream vat crate"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/service/janitor
|
||||
name = "Janitorial Supplies Crate"
|
||||
desc = "Fight back against dirt and grime with Nanotrasen's Janitorial Essentials(tm)! Contains three buckets, caution signs, and cleaner grenades. Also has a single mop, spray cleaner, rag, NT soap and a trash bag."
|
||||
cost = 1300
|
||||
contains = list(/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/item/reagent_containers/glass/bucket,
|
||||
/obj/item/mop,
|
||||
/obj/item/caution,
|
||||
/obj/item/caution,
|
||||
/obj/item/caution,
|
||||
/obj/item/storage/bag/trash,
|
||||
/obj/item/reagent_containers/spray/cleaner,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/grenade/chem_grenade/cleaner,
|
||||
/obj/item/grenade/chem_grenade/cleaner,
|
||||
/obj/item/grenade/chem_grenade/cleaner,
|
||||
/obj/item/soap/nanotrasen)
|
||||
crate_name = "janitorial supplies crate"
|
||||
|
||||
/datum/supply_pack/service/janitor/janicart
|
||||
name = "Janitorial Cart and Galoshes Crate"
|
||||
desc = "The keystone to any successful janitor. As long as you have feet, this pair of galoshes will keep them firmly planted on the ground. Also contains a janitorial cart."
|
||||
cost = 2000
|
||||
contains = list(/obj/structure/janitorialcart,
|
||||
/obj/item/clothing/shoes/galoshes)
|
||||
crate_name = "janitorial cart crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/service/janitor/janitank
|
||||
name = "Janitor Backpack Crate"
|
||||
desc = "Call forth divine judgement upon dirt and grime with this high capacity janitor backpack. Contains 500 units of station-cleansing cleaner. Requires janitor access to open."
|
||||
cost = 1000
|
||||
access = ACCESS_JANITOR
|
||||
contains = list(/obj/item/watertank/janitor)
|
||||
crate_name = "janitor backpack crate"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
/datum/supply_pack/service/janitor/janpremium
|
||||
name = "Janitor Premium Supplies"
|
||||
desc = "Do to the union for better supplies, we have desided to make a deal for you, In this crate you can get a brand new chem, Drying Angent this stuff is the work of slimes or magic! This crate also contains a rag to test out the Drying Angent magic, three wet floor signs, and some spare bottles of ammonia."
|
||||
cost = 1750
|
||||
access = ACCESS_JANITOR
|
||||
contains = list(/obj/item/caution,
|
||||
/obj/item/caution,
|
||||
/obj/item/caution,
|
||||
/obj/item/reagent_containers/rag,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/glass/bottle/ammonia,
|
||||
/obj/item/reagent_containers/spray/drying_agent)
|
||||
crate_name = "janitor backpack crate"
|
||||
|
||||
/datum/supply_pack/service/janitor/janpimp
|
||||
name = "Custodial Cruiser"
|
||||
desc = "Clown steal your ride? Assistant lock it in the dorms? Order a new one and get back to cleaning in style!"
|
||||
cost = 3000
|
||||
access = ACCESS_JANITOR
|
||||
contains = list(/obj/vehicle/ridden/janicart,
|
||||
/obj/item/key/janitor)
|
||||
crate_name = "janitor ride crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/service/mule
|
||||
name = "MULEbot Crate"
|
||||
desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!"
|
||||
cost = 2000
|
||||
contains = list(/mob/living/simple_animal/bot/mulebot)
|
||||
crate_name = "\improper MULEbot Crate"
|
||||
crate_type = /obj/structure/closet/crate/large
|
||||
|
||||
/datum/supply_pack/service/party
|
||||
name = "Party Equipment"
|
||||
desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, and a bottle of patron, goldschlager, and shaker!"
|
||||
cost = 2000
|
||||
contains = list(/obj/item/storage/box/drinkingglasses,
|
||||
/obj/item/reagent_containers/food/drinks/shaker,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/patron,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/goldschlager,
|
||||
/obj/item/reagent_containers/food/drinks/ale,
|
||||
/obj/item/reagent_containers/food/drinks/ale,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/flashlight/glowstick,
|
||||
/obj/item/flashlight/glowstick/red,
|
||||
/obj/item/flashlight/glowstick/blue,
|
||||
/obj/item/flashlight/glowstick/cyan,
|
||||
/obj/item/flashlight/glowstick/orange,
|
||||
/obj/item/flashlight/glowstick/yellow,
|
||||
/obj/item/flashlight/glowstick/pink)
|
||||
crate_name = "party equipment crate"
|
||||
|
||||
/datum/supply_pack/service/carpet
|
||||
name = "Premium Carpet Crate"
|
||||
desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains the classics."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stack/tile/carpet/fifty,
|
||||
/obj/item/stack/tile/carpet/fifty,
|
||||
/obj/item/stack/tile/carpet/black/fifty,
|
||||
/obj/item/stack/tile/carpet/black/fifty)
|
||||
crate_name = "premium carpet crate"
|
||||
|
||||
/datum/supply_pack/service/carpet2
|
||||
name = "Premium Carpet Crate #2"
|
||||
desc = "Plasteel floor tiles getting on your nerves? These stacks of extra soft carpet will tie any room together. Contains red, and monochrome"
|
||||
cost = 1000
|
||||
contains = list(/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/obj/item/stack/tile/carpet/blackred/fifty,
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty,
|
||||
/obj/item/stack/tile/carpet/monochrome/fifty)
|
||||
crate_name = "premium carpet crate #2"
|
||||
|
||||
/datum/supply_pack/service/lightbulbs
|
||||
name = "Replacement Lights"
|
||||
desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs as well as a light replacer."
|
||||
cost = 1200
|
||||
contains = list(/obj/item/storage/box/lights/mixed,
|
||||
/obj/item/storage/box/lights/mixed,
|
||||
/obj/item/storage/box/lights/mixed,
|
||||
/obj/item/lightreplacer)
|
||||
crate_name = "replacement lights"
|
||||
|
||||
/datum/supply_pack/service/minerkit
|
||||
name = "Shaft Miner Starter Kit"
|
||||
desc = "All the miners died too fast? Assistant wants to get a taste of life off-station? Either way, this kit is the best way to turn a regular crewman into an ore-producing, monster-slaying machine. Contains meson goggles, a pickaxe, advanced mining scanner, cargo headset, ore bag, gasmask, and explorer suit. Requires QM access to open."
|
||||
cost = 2500
|
||||
access = ACCESS_QM
|
||||
contains = list(/obj/item/pickaxe/mini,
|
||||
/obj/item/clothing/glasses/meson,
|
||||
/obj/item/t_scanner/adv_mining_scanner/lesser,
|
||||
/obj/item/radio/headset/headset_cargo/mining,
|
||||
/obj/item/storage/bag/ore,
|
||||
/obj/item/clothing/suit/hooded/explorer/standard,
|
||||
/obj/item/clothing/mask/gas/explorer)
|
||||
crate_name = "shaft miner starter kit"
|
||||
crate_type = /obj/structure/closet/crate/secure
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
/////////////////////////// Vending Restocks /////////////////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/service/vending/bartending
|
||||
name = "Bartending Supply Crate"
|
||||
desc = "Bring on the booze with vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!"
|
||||
cost = 2000
|
||||
contains = list(/obj/item/vending_refill/boozeomat,
|
||||
/obj/item/vending_refill/coffee,
|
||||
/obj/item/book/granter/action/drink_fling)
|
||||
crate_name = "bartending supply crate"
|
||||
|
||||
/datum/supply_pack/service/vending/cigarette
|
||||
name = "Cigarette Supply Crate"
|
||||
desc = "Don't believe the reports - smoke today! Contains a cigarette vending machine refill."
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/cigarette)
|
||||
crate_name = "cigarette supply crate"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/service/vending/games
|
||||
name = "Games Supply Crate"
|
||||
desc = "Get your game on with this game vending machine refill."
|
||||
cost = 1000
|
||||
contains = list(/obj/item/vending_refill/games)
|
||||
crate_name = "games supply crate"
|
||||
crate_type = /obj/structure/closet/crate
|
||||
|
||||
/datum/supply_pack/service/vending/snack
|
||||
name = "Snack Supply Crate"
|
||||
desc = "One vending machine refill of cavity-bringin' goodness! The number one dentist recommended order!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/snack)
|
||||
crate_name = "snacks supply crate"
|
||||
|
||||
/datum/supply_pack/service/vending/cola
|
||||
name = "Softdrinks Supply Crate"
|
||||
desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with this soda machine refill, today!"
|
||||
cost = 1500
|
||||
contains = list(/obj/item/vending_refill/cola)
|
||||
crate_name = "soft drinks supply crate"
|
||||
@@ -311,3 +311,25 @@
|
||||
set_light(0)
|
||||
lightCycle = 0
|
||||
active = FALSE
|
||||
|
||||
// kevin is into feet
|
||||
/obj/item/clothing/shoes/wraps
|
||||
name = "gilded leg wraps"
|
||||
desc = "Ankle coverings. These ones have a golden design."
|
||||
icon_state = "gildedcuffs"
|
||||
body_parts_covered = FALSE
|
||||
|
||||
/obj/item/clothing/shoes/wraps/silver
|
||||
name = "silver leg wraps"
|
||||
desc = "Ankle coverings. Not made of real silver."
|
||||
icon_state = "silvergildedcuffs"
|
||||
|
||||
/obj/item/clothing/shoes/wraps/red
|
||||
name = "red leg wraps"
|
||||
desc = "Ankle coverings. Show off your style with these shiny red ones!"
|
||||
icon_state = "redcuffs"
|
||||
|
||||
/obj/item/clothing/shoes/wraps/blue
|
||||
name = "blue leg wraps"
|
||||
desc = "Ankle coverings. Hang ten, brother."
|
||||
icon_state = "bluecuffs"
|
||||
@@ -324,6 +324,23 @@
|
||||
item_state = "officertanjacket"
|
||||
body_parts_covered = CHEST|ARMS
|
||||
|
||||
/obj/item/clothing/suit/ran
|
||||
name = "Shikigami costume"
|
||||
desc = "A costume that looks like a certain shikigami, is super fluffy."
|
||||
icon_state = "ran_suit"
|
||||
item_state = "ran_suit"
|
||||
body_parts_covered = CHEST|GROIN|LEGS
|
||||
flags_inv = HIDEJUMPSUIT|HIDETAUR
|
||||
heat_protection = CHEST|GROIN|LEGS //fluffy tails!
|
||||
//2061
|
||||
|
||||
/obj/item/clothing/head/ran
|
||||
name = "Shikigami hat"
|
||||
desc = "A hat that looks like it keeps any fluffy ears contained super warm, has little charms over it."
|
||||
icon_state = "ran_hat"
|
||||
item_state = "ran_hat"
|
||||
flags_inv = HIDEEARS
|
||||
|
||||
/*
|
||||
* Misc
|
||||
*/
|
||||
|
||||
@@ -899,16 +899,30 @@
|
||||
/datum/crafting_recipe/smartdartgun
|
||||
name = "Smart dartgun"
|
||||
result = /obj/item/gun/syringe/dart
|
||||
reqs = list(/obj/item/stack/sheet/metal = 15,
|
||||
/obj/item/stack/sheet/glass = 10,
|
||||
reqs = list(/obj/item/stack/sheet/metal = 10,
|
||||
/obj/item/stack/sheet/glass = 5,
|
||||
/obj/item/tank/internals = 1,
|
||||
/obj/item/reagent_containers/glass/beaker = 1,
|
||||
/obj/item/stack/sheet/plastic = 10,
|
||||
/obj/item/stack/cable_coil = 2)
|
||||
/obj/item/stack/sheet/plastic = 5,
|
||||
/obj/item/stack/cable_coil = 1)
|
||||
time = 150 //It's a gun
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/rapiddartgun
|
||||
name = "Rapid Smart dartgun"
|
||||
result = /obj/item/gun/syringe/dart/rapiddart
|
||||
reqs = list(
|
||||
/obj/item/gun/syringe/dart = 1,
|
||||
/obj/item/stack/sheet/plastic = 5,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/reagent_containers/glass/beaker = 1
|
||||
)
|
||||
parts = list(/obj/item/reagent_containers/glass/beaker = 1)
|
||||
time = 120 //Modifying your gun
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_WEAPON
|
||||
|
||||
/datum/crafting_recipe/durathread_duffelbag
|
||||
name = "Durathread Dufflebag"
|
||||
result = /obj/item/storage/backpack/duffelbag/durathread
|
||||
@@ -932,7 +946,7 @@
|
||||
/obj/item/stack/sheet/leather = 2)
|
||||
time = 50
|
||||
category = CAT_CLOTHING
|
||||
|
||||
|
||||
/datum/crafting_recipe/durathread_helmet
|
||||
name = "Makeshift Durathread Helmet"
|
||||
result = /obj/item/clothing/head/helmet/durathread
|
||||
@@ -948,4 +962,3 @@
|
||||
/obj/item/stack/sheet/leather = 3)
|
||||
time = 50
|
||||
category = CAT_CLOTHING
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
new /mob/living/simple_animal/parrot/Poly/ghost(Poly.loc)
|
||||
qdel(Poly)
|
||||
|
||||
|
||||
/datum/round_event/spooky/announce(fake)
|
||||
priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE")
|
||||
|
||||
|
||||
@@ -401,6 +401,7 @@ h1.alert, h2.alert {color: #000000;}
|
||||
.redtext {color: #FF0000; font-size: 24px;}
|
||||
.clown {color: #FF69Bf; font-size: 24px; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
|
||||
.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
|
||||
.spooky {color: #FF6100;}
|
||||
.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;}
|
||||
@keyframes velvet {
|
||||
0% { color: #400020; }
|
||||
|
||||
148
code/modules/holiday/halloween/bartholomew.dm
Normal file
148
code/modules/holiday/halloween/bartholomew.dm
Normal file
@@ -0,0 +1,148 @@
|
||||
/obj/effect/landmark/barthpot
|
||||
name = "barthpot"
|
||||
|
||||
/obj/item/barthpot
|
||||
name = "Bartholomew"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "barthpot"
|
||||
anchored = TRUE
|
||||
var/items_list = list()
|
||||
speech_span = "spooky"
|
||||
var/active = TRUE
|
||||
|
||||
/obj/item/barthpot/Destroy()
|
||||
var/obj/item/barthpot/n = new src(loc)
|
||||
n.items_list = items_list
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
for(var/I2 in items_list)
|
||||
if(istype(I, I2))
|
||||
qdel(I)
|
||||
new /obj/item/reagent_containers/food/snacks/special_candy(loc)
|
||||
to_chat(user, "<span class='notice'>You add the [I.name] to the pot and watch as it melts into the mixture, a candy crystalising in it's wake.</span>")
|
||||
say("Hooray! Thank you!")
|
||||
items_list -= I2
|
||||
return
|
||||
say("It doesn't seem like that's magical enough!")
|
||||
|
||||
/obj/item/barthpot/attack_hand(mob/user)
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
say("Hello there, I'm Bartholomew, Jacqueline's Familiar.")
|
||||
sleep(20)
|
||||
say("I'm currently seeking items to put into my pot, if we get the right items, it should crystalise into a magic candy!")
|
||||
if(!iscarbon(user))
|
||||
say("Though... I'm not sure you can help me.")
|
||||
|
||||
var/message = "From what I can tell, "
|
||||
if(LAZYLEN(items_list) < 5)
|
||||
generate_items()
|
||||
for(var/I2 in items_list)
|
||||
if(!I2)
|
||||
items_list -= I2
|
||||
continue
|
||||
var/obj/item/I3 = new I2
|
||||
message += "a [I3.name], "
|
||||
message += "currently seem to have the most magic potential."
|
||||
sleep(15)
|
||||
say("[message]")
|
||||
|
||||
/obj/item/barthpot/proc/generate_items()
|
||||
var/length = LAZYLEN(items_list)
|
||||
var/rand_items = list(/obj/item/bodybag = 1,
|
||||
/obj/item/clothing/glasses/meson = 2,
|
||||
/obj/item/clothing/glasses/sunglasses = 1,
|
||||
/obj/item/clothing/gloves/color/fyellow = 1,
|
||||
/obj/item/clothing/head/hardhat = 1,
|
||||
/obj/item/clothing/head/hardhat/red = 1,
|
||||
/obj/item/clothing/head/that = 1,
|
||||
/obj/item/clothing/head/ushanka = 1,
|
||||
/obj/item/clothing/head/welding = 1,
|
||||
/obj/item/clothing/mask/gas = 15,
|
||||
/obj/item/clothing/suit/hazardvest = 1,
|
||||
/obj/item/clothing/under/rank/vice = 1,
|
||||
/obj/item/clothing/suit/hooded/flashsuit = 2,
|
||||
/obj/item/clothing/accessory/medal/greytide = 1,
|
||||
/obj/item/assembly/prox_sensor = 4,
|
||||
/obj/item/assembly/timer = 3,
|
||||
/obj/item/flashlight = 4,
|
||||
/obj/item/flashlight/pen = 1,
|
||||
/obj/effect/spawner/lootdrop/glowstick = 4,
|
||||
/obj/effect/spawner/lootdrop/mre = 3,
|
||||
/obj/item/multitool = 2,
|
||||
/obj/item/radio/off = 2,
|
||||
/obj/item/t_scanner = 5,
|
||||
/obj/item/airlock_painter = 1,
|
||||
/obj/item/stack/cable_coil/ = 4,
|
||||
/obj/item/stack/medical/bruise_pack = 1,
|
||||
/obj/item/stack/rods = 3,
|
||||
/obj/item/stack/sheet/cardboard = 2,
|
||||
/obj/item/stack/sheet/metal = 1,
|
||||
/obj/item/stack/sheet/mineral/plasma = 1,
|
||||
/obj/item/stack/sheet/rglass = 1,
|
||||
/obj/item/book/manual/wiki/engineering_construction = 1,
|
||||
/obj/item/book/manual/wiki/engineering_hacking = 1,
|
||||
/obj/item/clothing/head/cone = 1,
|
||||
/obj/item/coin/silver = 1,
|
||||
/obj/item/coin/twoheaded = 1,
|
||||
/obj/item/poster/random_contraband = 1,
|
||||
/obj/item/poster/random_official = 1,
|
||||
/obj/item/crowbar = 1,
|
||||
/obj/item/crowbar/red = 1,
|
||||
/obj/item/extinguisher = 11,
|
||||
/obj/item/hand_labeler = 1,
|
||||
/obj/item/paper/crumpled = 1,
|
||||
/obj/item/pen = 1,
|
||||
/obj/item/reagent_containers/spray/pestspray = 1,
|
||||
/obj/item/reagent_containers/rag = 3,
|
||||
/obj/item/stock_parts/cell = 3,
|
||||
/obj/item/storage/belt/utility = 2,
|
||||
/obj/item/storage/box = 2,
|
||||
/obj/item/storage/box/cups = 1,
|
||||
/obj/item/storage/box/donkpockets = 1,
|
||||
/obj/item/storage/box/lights/mixed = 3,
|
||||
/obj/item/storage/box/hug/medical = 1,
|
||||
/obj/item/storage/fancy/cigarettes/dromedaryco = 1,
|
||||
/obj/item/storage/toolbox/mechanical = 1,
|
||||
/obj/item/screwdriver = 3,
|
||||
/obj/item/tank/internals/emergency_oxygen = 2,
|
||||
/obj/item/vending_refill/cola = 1,
|
||||
/obj/item/weldingtool = 3,
|
||||
/obj/item/wirecutters = 1,
|
||||
/obj/item/wrench = 4,
|
||||
/obj/item/relic = 3,
|
||||
/obj/item/weaponcrafting/receiver = 2,
|
||||
/obj/item/clothing/head/cone = 2,
|
||||
/obj/item/grenade/smokebomb = 2,
|
||||
/obj/item/geiger_counter = 3,
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = 1,
|
||||
/obj/item/radio/headset = 1,
|
||||
/obj/item/assembly/infra = 1,
|
||||
/obj/item/assembly/igniter = 2,
|
||||
/obj/item/assembly/signaler = 2,
|
||||
/obj/item/assembly/mousetrap = 2,
|
||||
/obj/item/reagent_containers/syringe = 2,
|
||||
/obj/item/clothing/gloves = 8,
|
||||
/obj/item/clothing/shoes/laceup = 1,
|
||||
/obj/item/storage/secure/briefcase = 3,
|
||||
/obj/item/storage/toolbox/artistic = 2,
|
||||
/obj/item/toy/eightball = 1,
|
||||
/obj/item/reagent_containers/pill/floorpill = 1,
|
||||
/obj/item/reagent_containers/food/snacks/cannedpeaches/maint = 2,
|
||||
/obj/item/clothing/shoes = 2)
|
||||
if(length == 5)
|
||||
return TRUE
|
||||
//var/metalist = pickweight(GLOB.maintenance_loot)
|
||||
for(var/i = length, i <= 5, i+=1)
|
||||
var/obj/item = pickweight(rand_items)
|
||||
if(!item)
|
||||
i-=1
|
||||
continue
|
||||
items_list += item
|
||||
return TRUE
|
||||
@@ -5,19 +5,27 @@
|
||||
|
||||
//spooky recipes
|
||||
|
||||
/datum/recipe/sugarcookie/spookyskull
|
||||
reagents = list("flour" = 5, "sugar" = 5, "milk" = 5)
|
||||
items = list(
|
||||
/obj/item/reagent_containers/food/snacks/egg,
|
||||
/datum/crafting_recipe/food/sugarcookie/spookyskull
|
||||
time = 15
|
||||
name = "Sugar cookie"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pastrybase = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sugarcookie/spookyskull
|
||||
subcategory = CAT_PASTRY
|
||||
|
||||
/datum/recipe/sugarcookie/spookycoffin
|
||||
reagents = list("flour" = 5, "sugar" = 5, "coffee" = 5)
|
||||
items = list(
|
||||
/obj/item/reagent_containers/food/snacks/egg,
|
||||
/datum/crafting_recipe/food/sugarcookie/spookycoffin
|
||||
time = 15
|
||||
name = "Sugar cookie"
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/datum/reagent/consumable/coffee = 5,
|
||||
/obj/item/reagent_containers/food/snacks/pastrybase = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/sugarcookie/spookycoffin
|
||||
subcategory = CAT_PASTRY
|
||||
|
||||
|
||||
//////////////////////////////
|
||||
//Spookoween trapped closets//
|
||||
@@ -34,12 +42,12 @@
|
||||
var/trapped = 0
|
||||
var/mob/trapped_mob
|
||||
|
||||
/obj/structure/closet/initialize()
|
||||
/obj/structure/closet/Initialize()
|
||||
..()
|
||||
if(prob(30))
|
||||
set_spooky_trap()
|
||||
|
||||
/obj/structure/closet/dump_contents()
|
||||
/obj/structure/closet/dump_contents(var/override = TRUE)
|
||||
..()
|
||||
trigger_spooky_trap()
|
||||
|
||||
@@ -256,6 +264,7 @@
|
||||
desc = "A standard miniature energy crossbow that uses a hard-light projector to transform bolts into candy corn. Happy Halloween!"
|
||||
category = "Holiday"
|
||||
item = /obj/item/gun/energy/kinetic_accelerator/crossbow/halloween
|
||||
cost = 12
|
||||
surplus = 0
|
||||
|
||||
/datum/uplink_item/device_tools/emag/hack_o_lantern
|
||||
442
code/modules/holiday/halloween/jacqueen.dm
Normal file
442
code/modules/holiday/halloween/jacqueen.dm
Normal file
@@ -0,0 +1,442 @@
|
||||
//Conversation
|
||||
#define JACQ_HELLO (1<<0)
|
||||
#define JACQ_CANDIES (1<<1)
|
||||
#define JACQ_HEAD (1<<2)
|
||||
#define JACQ_FAR (1<<3)
|
||||
#define JACQ_WITCH (1<<4)
|
||||
#define JACQ_EXPELL (1<<5)
|
||||
#define JACQ_DATE (1<<6)
|
||||
|
||||
/////// EVENT
|
||||
/datum/round_event_control/jacqueen
|
||||
name = "Jacqueline's visit"
|
||||
holidayID = "jacqueen"
|
||||
typepath = /datum/round_event/jacqueen
|
||||
weight = -1 //forces it to be called, regardless of weight
|
||||
max_occurrences = 1
|
||||
earliest_start = 0 MINUTES
|
||||
|
||||
/datum/round_event/jacqueen/start()
|
||||
..()
|
||||
|
||||
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
|
||||
playsound(H, 'sound/spookoween/ahaha.ogg', 100, 0.25)
|
||||
|
||||
for(var/obj/effect/landmark/barthpot/bp in GLOB.landmarks_list)
|
||||
new /obj/item/barthpot(bp.loc)
|
||||
new /mob/living/simple_animal/jacq(bp.loc)
|
||||
|
||||
/////// MOBS
|
||||
|
||||
//Whacha doing in here like? Yae wan tae ruin ta magicks?
|
||||
/mob/living/simple_animal/jacq
|
||||
name = "Jacqueline the Pumpqueen"
|
||||
real_name = "Jacqueline"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "jacqueline"
|
||||
maxHealth = 25
|
||||
health = 25
|
||||
density = FALSE
|
||||
speech_span = "spooky"
|
||||
friendly = "pets"
|
||||
response_help = "chats with"
|
||||
var/last_poof
|
||||
var/progression = list() //Keep track of where people are in the story.
|
||||
var/active = TRUE //Turn this to false to keep normal mob behavour
|
||||
|
||||
/mob/living/simple_animal/jacq/Initialize()
|
||||
..()
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/Life()
|
||||
..()
|
||||
if(!ckey)
|
||||
if((last_poof+4 MINUTES) < world.realtime)
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/Destroy() //I.e invincible
|
||||
visible_message("<b>[src]</b> cackles, <span class='spooky'>\"You'll nae get rid a me that easily!\"</span>")
|
||||
playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 0.25)
|
||||
var/mob/living/simple_animal/jacq/Jacq = new src.type(loc)
|
||||
Jacq.progression = progression
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/jacq/death() //What is alive may never die
|
||||
visible_message("<b>[src]</b> cackles, <span class='spooky'>\"You'll nae get rid a me that easily!\"</span>")
|
||||
playsound(loc, 'sound/spookoween/ahaha.ogg', 100, 0.25)
|
||||
health = 20
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/attack_hand(mob/living/carbon/human/M)
|
||||
if(!active)
|
||||
say("Hello there [gender_check(M)]!")
|
||||
return ..()
|
||||
if(!ckey)
|
||||
canmove = FALSE
|
||||
chit_chat(M)
|
||||
canmove = TRUE
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M)
|
||||
if(!active)
|
||||
say("Hello there [gender_check(M)]!")
|
||||
return ..()
|
||||
if(!ckey)
|
||||
canmove = FALSE
|
||||
chit_chat(M)
|
||||
canmove = TRUE
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/poof()
|
||||
last_poof = world.realtime
|
||||
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
R.add_reagent("secretcatchem", (10))
|
||||
s.set_up(R, 0, loc)
|
||||
s.start()
|
||||
visible_message("<b>[src]</b> disappears in a puff of smoke!")
|
||||
canmove = TRUE
|
||||
|
||||
var/hp_list = list()
|
||||
for(var/obj/machinery/holopad/hp in world)
|
||||
hp_list += hp
|
||||
|
||||
var/obj/machinery/holopad/hp = pick(hp_list)
|
||||
if(forceMove(pick(hp.loc)))
|
||||
return TRUE
|
||||
|
||||
return FALSE
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/gender_check(mob/living/carbon/C)
|
||||
var/gender = "lamb"
|
||||
if(C)
|
||||
if(C.gender == MALE)
|
||||
gender = "laddie"
|
||||
if(C.gender == FEMALE)
|
||||
gender = "lassie"
|
||||
return gender
|
||||
|
||||
//Ye wee bugger, gerrout of it. Ye've nae tae enjoy reading the code fer mae secrets like.
|
||||
/mob/living/simple_animal/jacq/proc/chit_chat(mob/living/carbon/C)
|
||||
//Very important
|
||||
var/gender = gender_check(C)
|
||||
if(C)
|
||||
if(C.gender == MALE)
|
||||
gender = "laddie"
|
||||
if(C.gender == FEMALE)
|
||||
gender = "lassie"
|
||||
|
||||
if(!progression["[C.real_name]"] || !(progression["[C.real_name]"] & JACQ_HELLO))
|
||||
visible_message("<b>[src]</b> smiles ominously at [C], <span class='spooky'>\"Well halo there [gender]! Ah'm Jacqueline, tae great Pumpqueen, great tae meet ye.\"</span>")
|
||||
sleep(20)
|
||||
visible_message("<b>[src]</b> continues, says, <span class='spooky'>\"Ah'm sure yae well stunned, but ah've got nae taem fer that. Ah'm after the candies around this station. If yae get mae enoof o the wee buggers, Ah'll give ye a treat, or if yae feeling bold, Ah ken trick ye instead.</span>\" giving [C] a wide grin.")
|
||||
if(!progression["[C.real_name]"])
|
||||
progression["[C.real_name]"] = NONE //TO MAKE SURE THAT THE LIST ENTRY EXISTS.
|
||||
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_HELLO
|
||||
|
||||
var/choices = list("Trick", "Treat", "How do I get candies?")
|
||||
var/choice = input(C, "Trick or Treat?", "Trick or Treat?") in choices
|
||||
switch(choice)
|
||||
if("Trick")
|
||||
trick(C)
|
||||
return
|
||||
if("Treat")
|
||||
if(check_candies(C))
|
||||
treat(C, gender)
|
||||
else
|
||||
visible_message("<b>[src]</b> raises an eyebrow, <span class='spooky'>\"You've nae got any candies Ah want! They're the orange round ones, now bugger off an go get em first.\"</span>")
|
||||
return
|
||||
if("How do I get candies?")
|
||||
visible_message("<b>[src]</b> says, <span class='spooky'>\"Gae find my familiar; Bartholomew. Ee's tendin the cauldron which ken bring oot t' magic energy in items scattered aroond. Knowing him, ee's probably gone tae somewhere with books.\"</span>")
|
||||
return
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/treat(mob/living/carbon/C, gender)
|
||||
visible_message("<b>[src]</b> gives off a glowing smile, <span class='spooky'>\"What ken Ah offer ye? I can magic up an object, a potion or a plushie fer ye.\"</span>")
|
||||
var/choices_reward = list("Object - 3 candies", "Potion - 2 candies", "Plushie - 1 candy", "Can I ask you a question instead?")
|
||||
var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward
|
||||
|
||||
//rewards
|
||||
switch(choice_reward)
|
||||
if("Object - 3 candies")
|
||||
if(!take_candies(C, 3))
|
||||
visible_message("<b>[src]</b> raises an eyebrown, <span class='spooky'>\"It's 3 candies per trinket [gender]! Thems the rules!\"</span>")
|
||||
return
|
||||
|
||||
var/new_obj = pick(subtypesof(/obj))
|
||||
//for(var/item in blacklist)
|
||||
// if(new_obj == item)
|
||||
// panic()
|
||||
var/reward = new new_obj(C.loc)
|
||||
C.put_in_hands(reward)
|
||||
visible_message("<b>[src]</b> waves her hands, magicing up a [reward] from thin air, <span class='spooky'>\"There ye are [gender], enjoy! \"</span>")
|
||||
sleep(20)
|
||||
poof()
|
||||
return
|
||||
if("Potion - 2 candies")
|
||||
if(!take_candies(C, 2))
|
||||
visible_message("<b>[src]</b> raises an eyebrow, <span class='spooky'>\"It's 2 candies per potion [gender]! Thems the rules!\"</span>")
|
||||
return
|
||||
|
||||
var/reward = new /obj/item/reagent_containers/potion_container(C.loc)
|
||||
C.put_in_hands(reward)
|
||||
visible_message("<b>[src]</b> waves her hands, magicing up a [reward] from thin air, <span class='spooky'>\"There ye are [gender], enjoy! \"</span>")
|
||||
sleep(20)
|
||||
poof()
|
||||
return
|
||||
if("Plushie - 1 candy")
|
||||
if(!take_candies(C, 1))
|
||||
visible_message("<b>[src]</b> raises an eyebrow, <span class='spooky'>\"It's 1 candy per plushie [gender]! Thems the rules!\"</span>")
|
||||
return
|
||||
|
||||
new /obj/item/toy/plush/random(C.loc)
|
||||
visible_message("<b>[src]</b> waves her hands, magicing up a plushie from thin air, <span class='spooky'>\"There ye are [gender], enjoy! \"</span>")
|
||||
sleep(20)
|
||||
poof()
|
||||
return
|
||||
|
||||
//chitchats!
|
||||
if("Can I ask you a question instead?")
|
||||
var/choices = list()
|
||||
//Figure out where the C is in the story
|
||||
if(!progression["[C.real_name]"]) //I really don't want to get here withoot a hello, but just to be safe
|
||||
progression["[C.real_name]"] = NONE
|
||||
if(!(progression["[C.real_name]"] & JACQ_FAR))
|
||||
if(progression["[C.real_name]"] & JACQ_CANDIES)
|
||||
choices += "You really came all this way for candy?"
|
||||
else
|
||||
choices += "Why do you want the candies?"
|
||||
if(!(progression["[C.real_name]"] & JACQ_HEAD))
|
||||
choices += "What is that on your head?"
|
||||
if(!(progression["[C.real_name]"] & JACQ_EXPELL))
|
||||
if(progression["[C.real_name]"] & JACQ_WITCH)
|
||||
choices += "So you got ex-spell-ed?"
|
||||
else
|
||||
choices += "Are you a witch?"
|
||||
|
||||
//for Kepler, delete this, or just delete the whole story aspect if you want.
|
||||
//If fully completed
|
||||
/*
|
||||
if(progression["[C.real_name]"] & JACQ_FAR)//Damnit this is a pain
|
||||
if(progression["[C.real_name]"] & JACQ_EXPELL) //I give up
|
||||
if(progression["[C.real_name]"] & JACQ_HEAD) //This is only an event thing
|
||||
choices += "Can I take you out on a date?"
|
||||
*/
|
||||
if(progression["[C.real_name]"] == 63)//Damnit this is a pain
|
||||
choices += "Can I take you out on a date?"
|
||||
|
||||
//If you've nothing to ask
|
||||
if(!LAZYLEN(choices))
|
||||
visible_message("<b>[src]</b> sighs, <span class='spooky'>\"Ah'm all questioned oot fer noo, [gender].\"</span>")
|
||||
return
|
||||
//Otherwise, lets go!
|
||||
visible_message("<b>[src]</b> says, <span class='spooky'>\"A question? Sure, it'll cost you a candy though!\"</span>")
|
||||
choices += "Nevermind"
|
||||
//Candies for chitchats
|
||||
var/choice = input(C, "What do you want to ask?", "What do you want to ask?") in choices
|
||||
if(!take_candies(C, 1))
|
||||
visible_message("<b>[src]</b> raises an eyebrow, <span class='spooky'>\"It's a candy per question [gender]! Thems the rules!\"</span>")
|
||||
return
|
||||
//Talking
|
||||
switch(choice)
|
||||
if("Why do you want the candies?")
|
||||
visible_message("<b>[src]</b> says, <span class='spooky'>\"Ave ye tried them? They're full of all sorts of reagents. Ah'm after them so ah ken magic em up an hopefully find rare stuff fer me brews. Honestly it's a lot easier magicking up tatt fer ye lot than runnin aroond on me own like. I'd ask me familiars but most a my familiars are funny fellows 'n constantly bugger off on adventures when given simple objectives like; Go grab me a tea cake or watch over me cauldron. Ah mean, ye might run into Bartholomew my cat. Ee's supposed tae be tending my cauldron, but I've nae idea where ee's got tae.\"</span>")
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_CANDIES
|
||||
sleep(30)
|
||||
poof()
|
||||
|
||||
if("You really came all this way for candy?")
|
||||
visible_message("<b>[src]</b> looks tae the side sheepishly, <span class='spooky'>\"Aye, well, tae be honest, Ah'm here tae see me sis, but dunnae let her knew that. She's an alchemist too like, but she dunnae use a caldron like mae, she buggered off like tae her posh ivory tower tae learn bloody chemistry instead!\"</span> <b>[src]</b> scowls, <span class='spooky'>\"She's tae black sheep o' the family too, so we dunnae see eye tae eye sometimes on alchemy. Ah mean, she puts <i> moles </i> in her brews! Ye dunnae put moles in yer brews! Yae threw your brews at tae wee bastards an blew em up!\"</span> <b>[src]</b> sighs, <span class='spooky'>\"But she's a heart o gold so.. Ah wanted tae see her an check up oon her, make sure she's okay.\"</span>")
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_FAR
|
||||
sleep(30)
|
||||
poof()
|
||||
|
||||
if("What is that on your head?")
|
||||
visible_message("<b>[src]</b> pats the pumpkin atop her head, <span class='spooky'>\"This thing? This ain't nae ordinary pumpkin! Me Ma grew this monster ooer a year o love, dedication an hard work. Honestly it felt like she loved this thing more than any of us, which Ah knew ain't true an it's not like she was hartless or anything but.. well, we had a falling oot when Ah got back home with all me stuff in tow. An all she had done is sent me owl after owl over t' last year aboot this bloody pumpkin and ah had enough. So ah took it, an put it on me head. You know, as ye do. Ah am the great Pumpqueen after all, Ah deserve this.\"</span>")
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_HEAD
|
||||
sleep(30)
|
||||
poof()
|
||||
|
||||
if("Are you a witch?")
|
||||
visible_message("<b>[src]</b> grumbles, <span class='spooky'>\"If ye must know, Ah got kicked oot of the witch academy fer being too much of a \"loose cannon\". A bloody loose cannon? Nae they were just pissed off Ah had the brass tae proclaim myself as the Pumpqueen! And also maybe the time Ah went and blew up one of the towers by trying tae make a huge batch of astrogen might've had something tae do with it. Ah mean it would've worked fine if the cauldrons weren't so shite and were actually upgraded by the faculty. So technically no, I'm not a witch.\"</span>")
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_WITCH
|
||||
sleep(30)
|
||||
poof()
|
||||
|
||||
if("So you got ex-spell-ed?")
|
||||
visible_message("<b>[src]</b> Gives you a blank look at the pun, before continuing, <span class='spooky'>\"Not quite, Ah know Ah ken get back into the academy, it's only an explosion, they happen all the time, but, tae be fair it's my fault that things came tae their explosive climax. You don't know what it's like when you're after a witch doctorate, everyone else is doing well, everyone's making new spells and the like, and I'm just good at making explosions really, or fireworks. So, Ah did something Ah knew was dangerous, because Ah had tae do something tae stand oot, but Ah know this life ain't fer me, Ah don't want tae be locked up in dusty towers, grinding reagent after reagent together, trying tae find new reactions, some of the wizards in there haven't left fer years. Ah want tae live, Ah want tae fly around on a broom, turn people into cats fer a day and disappear cackling! That's what got me into witchcraft!\"</span> she throws her arms up in the arm, spinning the pumpkin upon her head slightly. She carefully spins it back to face you, giving oot a soft sigh, <span class='spooky'>\"Ah know my mother's obsession with this dumb thing on my head is just her trying tae fill the void of me and my sis moving oot, and it really shouldn't be on my head. And Ah know that I'm really here tae get help from my sis.. She's the sensible one, and she gives good hugs.\"</span>")
|
||||
sleep(30)
|
||||
visible_message("<b>[src]</b> says, <span class='spooky'>\"Thanks [C], Ah guess Ah didn't realise Ah needed someone tae talk tae but, I'm glad ye spent all your candies talking tae me. Funny how things seem much worse in yer head.\"</span>")
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_EXPELL
|
||||
sleep(30)
|
||||
poof()
|
||||
|
||||
if("Can I take you out on a date?")
|
||||
visible_message("<b>[src]</b> blushes, <span class='spooky'>\"...You want tae ask me oot on a date? Me? After all that nonsense Ah just said? It seems a waste of a candy honestly.\"</span>")
|
||||
progression["[C.real_name]"] = progression["[C.real_name]"] | JACQ_DATE
|
||||
visible_message("<b>[src]</b> looks to the side, deep in thought.</span>")
|
||||
dating_start(C, gender)
|
||||
|
||||
if("Nevermind")
|
||||
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Suit yerself then, here's your candy back.\"</span>")
|
||||
new /obj/item/reagent_containers/food/snacks/special_candy(loc)
|
||||
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/trick(mob/living/carbon/C, gender)
|
||||
var/option
|
||||
if(ishuman(C))
|
||||
option = rand(1,7)
|
||||
else
|
||||
option = rand(1,6)
|
||||
switch(option)
|
||||
if(1)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"Hocus pocus, making friends is now your focus!\"</span>")
|
||||
var/datum/objective/brainwashing/objective = pick("Make a tasty sandwich for", "Compose a poem for", "Aquire a nice outfit to give to", "Strike up a conversation about pumpkins with", "Write a letter and deliver it to", "Give a nice hat to")
|
||||
var/mob/living/L2 = pick(GLOB.player_list)
|
||||
objective += " [L2.name]."
|
||||
brainwash(C, objective)
|
||||
if(2)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"Off comes your head, a pumpkin taking it's stead!\"</span>")
|
||||
C.reagents.add_reagent("pumpkinmutationtoxin", 5)
|
||||
if(3)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"If only you had a better upbringing, your ears are now full of my singing!\"</span>")
|
||||
var/client/C2 = C.client
|
||||
C2.chatOutput.sendMusic("https://a.uguu.se/rQ8FxxUQ1Xzc_SpOwOkyOwOkyPumpkinSong-PFrPrIxluWk.mp4", 1)//I hope this works!
|
||||
if(4)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"You're cute little bumpkin, On your head is a pumpkin!\"</span>")
|
||||
if(C.head)
|
||||
var/obj/item/W = C.head
|
||||
C.dropItemToGround(W, TRUE)
|
||||
var/jaqc_latern = new /obj/item/clothing/head/hardhat/pumpkinhead/jaqc
|
||||
C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1)
|
||||
if(5)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"In your body there's something amiss, you'll find it's a chem made by my sis!\"</span>")
|
||||
C.reagents.add_reagent("eigenstate", 30)
|
||||
if(6)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"A new familiar for me, and you'll see it's thee!\"</span>")
|
||||
C.reagents.add_reagent("secretcatchem", 30)
|
||||
if(7)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"While you may not be a ghost, for this sheet you'll always be it's host.\"</span>")
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(H.wear_suit)
|
||||
var/obj/item/W = H.wear_suit
|
||||
H.dropItemToGround(W, TRUE)
|
||||
var/ghost = new /obj/item/clothing/suit/ghost_sheet/sticky
|
||||
H.equip_to_slot(ghost, SLOT_WEAR_SUIT, 1, 1)
|
||||
poof()
|
||||
|
||||
//Blame Fel
|
||||
/mob/living/simple_animal/jacq/proc/dating_start(mob/living/carbon/C, gender)
|
||||
var/candies = pollGhostCandidates("Do you want to go on a date with [C] as Jacqueline the great pumpqueen?")
|
||||
//sleep(30) //If the poll doesn't autopause.
|
||||
if(candies)
|
||||
candies = shuffle(candies)//Shake those ghosts up!
|
||||
for(var/mob/dead/observer/C2 in candies)
|
||||
if(C2.key && C2)
|
||||
key = C2.key
|
||||
message_admins("[C2]/[C2.key] has agreed to go on a date with [C] as Jacqueline.")
|
||||
log_game("HALLOWEEN: [C2]/[C2.key] has agreed to go on a date with [C] as Jacqueline")
|
||||
to_chat(src, "<span class='big spooky'>You are Jacqueline the great pumpqueen, witch Extraordinaire! You're a very Scottish lass with a kind heart, but also a little crazy. You also blew up the wizarding school and you're suspended for a while, so you visited the station before heading home. On your head lies the prize pumpkin of your Mother's pumpkin patch. You're currently on a date with [C] and well, I didn't think anyone would get this far. <i> Please be good so I can do events like this in the future. </i> </span>")
|
||||
return
|
||||
else
|
||||
candies =- C2
|
||||
visible_message("<b>[src]</b> looks to the side, <span class='spooky'>\"Look, Ah like ye but, Ah don't think Ah can right now. If ye can't tell, the stations covered in volatile candies, I've a few other laddies and lassies running after me treats, and tae top it all off, I've the gods breathing down me neck, watching every treat Ah make fer the lot of yous.\" she sighs, \"But that's not a no, right? That's.. just a nae right noo.\"</span>")
|
||||
sleep(20)
|
||||
visible_message("<b>[src]</b> takes off the pumpkin on her head, a rich blush on her cheeks. She leans over planting a kiss upon your forehead quickly befere popping the pumpkin back on her head.")
|
||||
sleep(10)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"There, that aught tae be worth a candy.\"</span>")
|
||||
sleep(20)
|
||||
poof()
|
||||
|
||||
/obj/item/clothing/head/hardhat/pumpkinhead/jaqc
|
||||
name = "Jacq o' latern"
|
||||
desc = "A jacqueline o' lantern! You can't seem to get rid of it."
|
||||
icon_state = "hardhat0_pumpkin_j"
|
||||
item_state = "hardhat0_pumpkin_j"
|
||||
item_color = "pumpkin_j"
|
||||
brightness_on = 4
|
||||
|
||||
/obj/item/clothing/head/hardhat/pumpkinhead/jaqc/Initialize()
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, GLUED_ITEM_TRAIT)
|
||||
|
||||
/obj/item/clothing/suit/ghost_sheet/sticky
|
||||
|
||||
/obj/item/clothing/suit/ghost_sheet/sticky/Initialize()
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, GLUED_ITEM_TRAIT)
|
||||
|
||||
/obj/item/clothing/suit/ghost_sheet/sticky/attack_hand(mob/user)
|
||||
if(iscarbon(user))
|
||||
to_chat(user, "<span class='spooky'><i>Boooooo~!</i></span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/clothing/suit/ghost_sheet/sticky/attack_hand(mob/user)
|
||||
if(iscarbon(user))
|
||||
to_chat(user, "<span class='spooky'><i>Boooooo~!</i></span>")
|
||||
return
|
||||
else
|
||||
..()
|
||||
|
||||
/datum/reagent/mutationtoxin/pumpkinhead
|
||||
name = "Pumpkin head mutation toxin"
|
||||
id = "pumpkinmutationtoxin"
|
||||
race = /datum/species/dullahan/pumpkin
|
||||
mutationtext = "<span class='spooky'>The pain subsides. You feel your head roll off your shoulders... and you smell pumpkin."
|
||||
//I couldn't get the replace head sprite with a pumpkin to work so, it is what it is.
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/check_candies(mob/living/carbon/C)
|
||||
var/invs = C.get_contents()
|
||||
var/candy_count = 0
|
||||
for(var/item in invs)
|
||||
if(istype(item, /obj/item/reagent_containers/food/snacks/special_candy))
|
||||
candy_count++
|
||||
return candy_count
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/take_candies(mob/living/carbon/C, candy_amount = 1)
|
||||
var/inv = C.get_contents()
|
||||
var/candies = list()
|
||||
for(var/item in inv)
|
||||
if(istype(item, /obj/item/reagent_containers/food/snacks/special_candy))
|
||||
candies += item
|
||||
if(LAZYLEN(candies) == candy_amount)
|
||||
break
|
||||
if(LAZYLEN(candies) == candy_amount) //I know it's a double check but eh, to be safe.
|
||||
for(var/candy in candies)
|
||||
qdel(candy)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
//Potions
|
||||
/obj/item/reagent_containers/potion_container
|
||||
name = "potion"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "jacq_potion"
|
||||
desc = "A potion with a strange concoction within. Be careful, as if it's thrown it explodes in a puff of smoke like Jacqueline."
|
||||
|
||||
/obj/item/reagent_containers/potion_container/Initialize()
|
||||
.=..()
|
||||
var/R = get_random_reagent_id()
|
||||
reagents.add_reagent(R, 30)
|
||||
name = "[R] Potion"
|
||||
|
||||
/obj/item/reagent_containers/potion_container/throw_impact(atom/target)
|
||||
..()
|
||||
sleep(20)
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
s.set_up(src.reagents, 3, src.loc)
|
||||
s.start()
|
||||
qdel(src)
|
||||
|
||||
//Candies
|
||||
/obj/item/reagent_containers/food/snacks/special_candy
|
||||
name = "Magic candy"
|
||||
icon = 'icons/obj/halloween_items.dmi'
|
||||
icon_state = "jacq_candy"
|
||||
desc = "A candy with strange magic within. Be careful, as the magic isn't always helpful."
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/special_candy/Initialize()
|
||||
.=..()
|
||||
reagents.add_reagent(get_random_reagent_id(), 5)
|
||||
@@ -333,6 +333,16 @@
|
||||
/datum/holiday/halloween/getStationPrefix()
|
||||
return pick("Bone-Rattling","Mr. Bones' Own","2SPOOKY","Spooky","Scary","Skeletons")
|
||||
|
||||
/datum/holiday/jacqueen //Subset of halloween
|
||||
name = "jacqueen"
|
||||
begin_day = 27
|
||||
begin_month = OCTOBER
|
||||
end_day = 2
|
||||
end_month = NOVEMBER
|
||||
|
||||
/datum/holiday/jacqueen/greet()
|
||||
return "Jacqueline the great Pumpqueen has come to visit!"
|
||||
|
||||
/datum/holiday/vegan
|
||||
name = "Vegan Day"
|
||||
begin_day = 1
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
wine_power = 70 //Water to wine, baby.
|
||||
wine_flavor = "divinity"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/anti_magic, TRUE, TRUE) //deliver us from evil o melon god
|
||||
|
||||
// /obj/item/reagent_containers/food/snacks/grown/holymelon/Initialize()
|
||||
// . = ..()
|
||||
// AddComponent(/datum/component/anti_magic, TRUE, TRUE) //deliver us from evil o melon god
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
// Decorative wings
|
||||
/datum/sprite_accessory/deco_wings
|
||||
icon = 'icons/mob/wings.dmi'
|
||||
|
||||
|
||||
/datum/sprite_accessory/deco_wings/plain
|
||||
name = "Plain"
|
||||
icon_state = "plain"
|
||||
@@ -96,10 +96,13 @@
|
||||
name = "Snow"
|
||||
icon_state = "snow"
|
||||
|
||||
|
||||
/datum/sprite_accessory/deco_wings/angel
|
||||
name = "Angel"
|
||||
icon_state = "angel"
|
||||
color_src = 0
|
||||
dimension_x = 46
|
||||
center = TRUE
|
||||
dimension_y = 34
|
||||
|
||||
/datum/sprite_accessory/deco_wings/none
|
||||
name = "None"
|
||||
@@ -155,7 +158,6 @@
|
||||
/datum/sprite_accessory/insect_wings/punished
|
||||
name = "Burnt Off"
|
||||
icon_state = "punished"
|
||||
locked = TRUE
|
||||
|
||||
/datum/sprite_accessory/insect_wings/firewatch
|
||||
name = "Firewatch"
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
attack_verb = list("attacked", "slapped", "whacked")
|
||||
///The brain's organ variables are significantly more different than the other organs, with half the decay rate for balance reasons, and twice the maxHealth
|
||||
decay_factor = STANDARD_ORGAN_DECAY / 4 //30 minutes of decaying to result in a fully damaged brain, since a fast decay rate would be unfun gameplay-wise
|
||||
healing_factor = STANDARD_ORGAN_HEALING / 2
|
||||
|
||||
maxHealth = BRAIN_DAMAGE_DEATH
|
||||
low_threshold = 45
|
||||
@@ -247,11 +248,13 @@
|
||||
to_chat(owner, "<span class='userdanger'>The last spark of life in your brain fizzles out...</span>")
|
||||
owner.death()
|
||||
brain_death = TRUE
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/organ/brain/on_death()
|
||||
if(damage <= BRAIN_DAMAGE_DEATH) //rip
|
||||
brain_death = FALSE
|
||||
applyOrganDamage(maxHealth * decay_factor)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/organ/brain/applyOrganDamage(var/d, var/maximum = maxHealth)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/obj/item/organ/alien
|
||||
icon_state = "xgibmid2"
|
||||
var/list/alien_powers = list()
|
||||
organ_flags = ORGAN_NO_SPOIL
|
||||
|
||||
/obj/item/organ/alien/Initialize()
|
||||
. = ..()
|
||||
|
||||
@@ -91,6 +91,7 @@
|
||||
|
||||
if(combatmode)
|
||||
msg += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n"
|
||||
msg += common_trait_examine()
|
||||
|
||||
GET_COMPONENT_FROM(mood, /datum/component/mood, src)
|
||||
if(mood)
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
status_flags = GODMODE|CANPUSH
|
||||
mouse_drag_pointer = MOUSE_INACTIVE_POINTER
|
||||
var/in_use = FALSE
|
||||
no_vore = TRUE
|
||||
|
||||
INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)
|
||||
|
||||
|
||||
@@ -335,6 +335,8 @@
|
||||
if(digitalcamo)
|
||||
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n"
|
||||
|
||||
msg += common_trait_examine()
|
||||
|
||||
var/traitstring = get_trait_string()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -13,19 +13,19 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
//Species Icon Drawing Offsets - Pixel X, Pixel Y, Aka X = Horizontal and Y = Vertical, from bottom left corner
|
||||
var/list/offset_features = list(
|
||||
OFFSET_UNIFORM = list(0,0),
|
||||
OFFSET_ID = list(0,0),
|
||||
OFFSET_GLOVES = list(0,0),
|
||||
OFFSET_GLASSES = list(0,0),
|
||||
OFFSET_EARS = list(0,0),
|
||||
OFFSET_SHOES = list(0,0),
|
||||
OFFSET_S_STORE = list(0,0),
|
||||
OFFSET_FACEMASK = list(0,0),
|
||||
OFFSET_HEAD = list(0,0),
|
||||
OFFSET_EYES = list(0,0),
|
||||
OFFSET_LIPS = list(0,0),
|
||||
OFFSET_BELT = list(0,0),
|
||||
OFFSET_BACK = list(0,0),
|
||||
OFFSET_UNIFORM = list(0,0),
|
||||
OFFSET_ID = list(0,0),
|
||||
OFFSET_GLOVES = list(0,0),
|
||||
OFFSET_GLASSES = list(0,0),
|
||||
OFFSET_EARS = list(0,0),
|
||||
OFFSET_SHOES = list(0,0),
|
||||
OFFSET_S_STORE = list(0,0),
|
||||
OFFSET_FACEMASK = list(0,0),
|
||||
OFFSET_HEAD = list(0,0),
|
||||
OFFSET_EYES = list(0,0),
|
||||
OFFSET_LIPS = list(0,0),
|
||||
OFFSET_BELT = list(0,0),
|
||||
OFFSET_BACK = list(0,0),
|
||||
OFFSET_HAIR = list(0,0),
|
||||
OFFSET_FHAIR = list(0,0),
|
||||
OFFSET_SUIT = list(0,0),
|
||||
@@ -422,8 +422,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
facial_overlay.alpha = hair_alpha
|
||||
|
||||
if(OFFSET_FHAIR in H.dna.species.offset_features)
|
||||
facial_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FHAIR][1]
|
||||
facial_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FHAIR][2]
|
||||
facial_overlay.pixel_x += H.dna.species.offset_features[OFFSET_FHAIR][1]
|
||||
facial_overlay.pixel_y += H.dna.species.offset_features[OFFSET_FHAIR][2]
|
||||
|
||||
standing += facial_overlay
|
||||
|
||||
@@ -814,6 +814,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
bodypart = "snout"
|
||||
if(bodypart == "xenohead")
|
||||
bodypart = "xhead"
|
||||
if(bodypart == "insect_wings" || bodypart == "deco_wings")
|
||||
bodypart = "insect_wings"
|
||||
|
||||
if(S.gender_specific)
|
||||
accessory_overlay.icon_state = "[g]_[bodypart]_[S.icon_state]_[layertext]"
|
||||
@@ -885,7 +887,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
accessory_overlay.color = husklist
|
||||
|
||||
if(OFFSET_MUTPARTS in H.dna.species.offset_features)
|
||||
accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
accessory_overlay.pixel_y += H.dna.species.offset_features[OFFSET_MUTPARTS][2]
|
||||
|
||||
standing += accessory_overlay
|
||||
@@ -901,7 +903,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
inner_accessory_overlay = center_image(inner_accessory_overlay, S.dimension_x, S.dimension_y)
|
||||
|
||||
if(OFFSET_MUTPARTS in H.dna.species.offset_features)
|
||||
inner_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
inner_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
inner_accessory_overlay.pixel_y += H.dna.species.offset_features[OFFSET_MUTPARTS][2]
|
||||
|
||||
standing += inner_accessory_overlay
|
||||
@@ -944,11 +946,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
if(HORNCOLOR)
|
||||
extra_accessory_overlay.color = "#[H.horn_color]"
|
||||
|
||||
|
||||
if(OFFSET_MUTPARTS in H.dna.species.offset_features)
|
||||
extra_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
extra_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
extra_accessory_overlay.pixel_y += H.dna.species.offset_features[OFFSET_MUTPARTS][2]
|
||||
|
||||
|
||||
standing += extra_accessory_overlay
|
||||
|
||||
if(S.extra2) //apply the extra overlay, if there is one
|
||||
@@ -985,7 +987,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
extra2_accessory_overlay.color = "#[H.horn_color]"
|
||||
|
||||
if(OFFSET_MUTPARTS in H.dna.species.offset_features)
|
||||
extra2_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
extra2_accessory_overlay.pixel_x += H.dna.species.offset_features[OFFSET_MUTPARTS][1]
|
||||
extra2_accessory_overlay.pixel_y += H.dna.species.offset_features[OFFSET_MUTPARTS][2]
|
||||
|
||||
standing += extra2_accessory_overlay
|
||||
|
||||
@@ -6,10 +6,6 @@
|
||||
species_traits = list(NOBLOOD,NOEYES,NOGENITALS,NOAROUSAL)
|
||||
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH)
|
||||
mutanttongue = /obj/item/organ/tongue/abductor
|
||||
var/scientist = FALSE // vars to not pollute spieces list with castes
|
||||
|
||||
/datum/species/abductor/copy_properties_from(datum/species/abductor/old_species)
|
||||
scientist = old_species.scientist
|
||||
|
||||
/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
|
||||
@@ -13,9 +13,12 @@
|
||||
blacklisted = TRUE
|
||||
limbs_id = "human"
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
var/pumpkin = FALSE
|
||||
|
||||
var/obj/item/dullahan_relay/myhead
|
||||
|
||||
/datum/species/dullahan/pumpkin
|
||||
pumpkin = TRUE
|
||||
|
||||
/datum/species/dullahan/check_roundstart_eligible()
|
||||
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
|
||||
@@ -27,11 +30,19 @@
|
||||
H.flags_1 &= ~HEAR_1
|
||||
var/obj/item/bodypart/head/head = H.get_bodypart(BODY_ZONE_HEAD)
|
||||
if(head)
|
||||
if(pumpkin)//Pumpkinhead!
|
||||
head.animal_origin = 100
|
||||
head.icon = 'icons/obj/clothing/hats.dmi'
|
||||
head.icon_state = "hardhat1_pumpkin_j"
|
||||
head.custom_head = TRUE
|
||||
head.drop_limb()
|
||||
head.flags_1 = HEAR_1
|
||||
head.throwforce = 25
|
||||
myhead = new /obj/item/dullahan_relay (head, H)
|
||||
H.put_in_hands(head)
|
||||
var/obj/item/organ/eyes/E = H.getorganslot(ORGAN_SLOT_EYES)
|
||||
for(var/datum/action/item_action/organ_action/OA in E.actions)
|
||||
OA.Trigger()
|
||||
|
||||
/datum/species/dullahan/on_species_loss(mob/living/carbon/human/H)
|
||||
H.flags_1 |= ~HEAR_1
|
||||
@@ -64,7 +75,7 @@
|
||||
|
||||
/obj/item/organ/brain/dullahan
|
||||
decoy_override = TRUE
|
||||
organ_flags = 0
|
||||
organ_flags = ORGAN_NO_SPOIL//Do not decay
|
||||
|
||||
/obj/item/organ/tongue/dullahan
|
||||
zone = "abstract"
|
||||
|
||||
192
code/modules/mob/living/carbon/human/species_types/dwarves.dm
Normal file
192
code/modules/mob/living/carbon/human/species_types/dwarves.dm
Normal file
@@ -0,0 +1,192 @@
|
||||
|
||||
GLOBAL_LIST_INIT(dwarf_first, world.file2list("strings/names/dwarf_first.txt")) //Textfiles with first
|
||||
GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //textfiles with last
|
||||
|
||||
/datum/species/dwarf //not to be confused with the genetic manlets
|
||||
name = "Dwarf"
|
||||
id = "dwarf" //Also called Homo sapiens pumilionis
|
||||
default_color = "FFFFFF"
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR)
|
||||
inherent_traits = list()
|
||||
default_features = list("mcolor" = "FFF", "wings" = "None")
|
||||
limbs_id = "human"
|
||||
use_skintones = 1
|
||||
say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL
|
||||
damage_overlay_type = "human"
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
liked_food = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products.
|
||||
disliked_food = JUNKFOOD | FRIED //Dwarves hate foods that have no nutrition other than alcohol.
|
||||
mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior
|
||||
mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed)
|
||||
|
||||
/mob/living/carbon/human/species/dwarf //species admin spawn path
|
||||
race = /datum/species/dwarf //and the race the path is set to.
|
||||
|
||||
/datum/species/dwarf/check_roundstart_eligible()
|
||||
if(SSevents.holidays && SSevents.holidays[HALLOWEEN])
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette
|
||||
var/mob/living/carbon/human/H = C
|
||||
H.facial_hair_style = dwarf_hair
|
||||
H.update_hair()
|
||||
H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM.
|
||||
RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) //We register handle_speech is being used.
|
||||
|
||||
|
||||
/datum/species/dwarf/on_species_loss(mob/living/carbon/H, datum/species/new_species)
|
||||
. = ..()
|
||||
H.transform = H.transform.Scale(1, 1.25) //And we undo it.
|
||||
UnregisterSignal(H, COMSIG_MOB_SAY) //We register handle_speech is not being used.
|
||||
|
||||
//Dwarf Name stuff
|
||||
/proc/dwarf_name() //hello caller: my name is urist mcuristurister
|
||||
return "[pick(GLOB.dwarf_first)] [pick(GLOB.dwarf_last)]"
|
||||
|
||||
/datum/species/dwarf/random_name(gender,unique,lastname)
|
||||
return dwarf_name() //hello, ill return the value from dwarf_name proc to you when called.
|
||||
|
||||
//Dwarf Speech handling - Basically a filter/forces them to say things. The IC helper
|
||||
/datum/species/dwarf/proc/handle_speech(datum/source, list/speech_args)
|
||||
var/message = speech_args[SPEECH_MESSAGE]
|
||||
if(message[1] != "*")
|
||||
message = " [message]" //Credits to goonstation for the strings list.
|
||||
var/list/dwarf_words = strings("dwarf_replacement.json", "dwarf") //thanks to regex too.
|
||||
|
||||
for(var/key in dwarf_words) //Theres like 1459 words or something man.
|
||||
var/value = dwarf_words[key] //Thus they will always be in character.
|
||||
if(islist(value)) //Whether they like it or not.
|
||||
value = pick(value) //This could be drastically reduced if needed though.
|
||||
|
||||
message = replacetextEx(message, " [uppertext(key)]", " [uppertext(value)]")
|
||||
message = replacetextEx(message, " [capitalize(key)]", " [capitalize(value)]")
|
||||
message = replacetextEx(message, " [key]", " [value]") //Also its scottish.
|
||||
|
||||
if(prob(3))
|
||||
message += pick(" By Armok!")
|
||||
speech_args[SPEECH_MESSAGE] = trim(message)
|
||||
|
||||
//This mostly exists because my testdwarf's liver died while trying to also not die due to no alcohol.
|
||||
/obj/item/organ/liver/dwarf
|
||||
name = "dwarf liver"
|
||||
icon_state = "liver"
|
||||
desc = "A dwarven liver, theres something magical about seeing one of these up close."
|
||||
alcohol_tolerance = 0 //dwarves really shouldn't be dying to alcohol.
|
||||
toxTolerance = 5 //Shrugs off 5 units of toxins damage.
|
||||
maxHealth = 150 //More health than the average liver, as you aren't going to be replacing this.
|
||||
//If it does need replaced with a standard human liver, prepare for hell.
|
||||
|
||||
//alcohol gland
|
||||
/obj/item/organ/dwarfgland
|
||||
name = "dwarf alcohol gland"
|
||||
icon_state = "plasma" //Yes this is a actual icon in icons/obj/surgery.dmi
|
||||
desc = "A genetically engineered gland which is hopefully a step forward for humanity."
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/stored_alcohol = 250 //They start with 250 units, that ticks down and eventaully bad effects occur
|
||||
var/max_alcohol = 500 //Max they can attain, easier than you think to OD on alcohol.
|
||||
var/heal_rate = 0.5 //The rate they heal damages over 400 alcohol stored. Default is 0.5 so we times 3 since 3 seconds.
|
||||
var/alcohol_rate = 0.25 //The rate the alcohol ticks down per each iteration of dwarf_eth_ticker completing.
|
||||
//These count in on_life ticks which should be 2 seconds per every increment of 1 in a perfect world.
|
||||
var/dwarf_filth_ticker = 0 //Currently set =< 4, that means this will fire the proc around every 4-8 seconds.
|
||||
var/dwarf_eth_ticker = 0 //Currently set =< 1, that means this will fire the proc around every 2 seconds
|
||||
|
||||
/obj/item/organ/dwarfgland/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
S.reagents.add_reagent("ethanol", stored_alcohol/10)
|
||||
return S
|
||||
|
||||
/obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops..
|
||||
. = ..()
|
||||
dwarf_cycle_ticker()
|
||||
|
||||
//Handles the delayed tick cycle by just adding on increments per each on_life() tick
|
||||
/obj/item/organ/dwarfgland/proc/dwarf_cycle_ticker()
|
||||
if(owner.stat == DEAD)
|
||||
return //We make sure they are not dead, so they don't increment any tickers.
|
||||
dwarf_eth_ticker++
|
||||
dwarf_filth_ticker++
|
||||
|
||||
if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds.
|
||||
dwarf_filth_cycle() //On_life will adjust regarding other factors, so we are along for the ride.
|
||||
dwarf_filth_ticker = 0 //We set the ticker back to 0 to go again.
|
||||
if(dwarf_eth_ticker >= 1) //Alcohol reagent check should be around 2 seconds, since a tick is around 2 seconds.
|
||||
dwarf_eth_cycle()
|
||||
dwarf_eth_ticker = 0
|
||||
|
||||
//If this still friggin uses too much CPU, I'll make a for view subsystem If I have to.
|
||||
/obj/item/organ/dwarfgland/proc/dwarf_filth_cycle()
|
||||
if(!owner?.client || !owner?.mind)
|
||||
return
|
||||
//Filth Reactions - Since miasma now exists
|
||||
var/filth_counter = 0 //Holder for the filth check cycle, basically contains how much filth dwarf sees numerically.
|
||||
for(var/fuck in view(owner,7)) //hello byond for view loop.
|
||||
if(istype(fuck, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = fuck
|
||||
if(H.stat == DEAD || (HAS_TRAIT(H, TRAIT_FAKEDEATH)))
|
||||
filth_counter += 10
|
||||
if(istype(fuck, /obj/effect/decal/cleanable/blood))
|
||||
if(istype(fuck, /obj/effect/decal/cleanable/blood/gibs))
|
||||
filth_counter += 1
|
||||
else
|
||||
filth_counter += 0.1
|
||||
if(istype(fuck,/obj/effect/decal/cleanable/vomit)) //They are disgusted by their own vomit too.
|
||||
filth_counter += 10 //Dwarves could technically chainstun each other in a vomit tantrum spiral.
|
||||
switch(filth_counter)
|
||||
if(11 to 25)
|
||||
if(prob(25))
|
||||
to_chat(owner, "<span class = 'danger'>Someone should really clean up in here!</span>")
|
||||
if(26 to 50)
|
||||
if(prob(30)) //Probability the message appears
|
||||
to_chat(owner, "<span class = 'danger'>The stench makes you queasy.</span>")
|
||||
if(prob(20)) //And then the probability they vomit along with it.
|
||||
owner.vomit(20) //I think vomit should stay over a disgust adjustment.
|
||||
if(51 to 75)
|
||||
if(prob(35))
|
||||
to_chat(owner, "<span class = 'danger'>By Armok! You won't be able to keep alcohol down at all!</span>")
|
||||
if(prob(25))
|
||||
owner.vomit(20) //Its more funny
|
||||
if(76 to 100)
|
||||
if(prob(40))
|
||||
to_chat(owner, "<span class = 'userdanger'>You can't live in such FILTH!</span>")
|
||||
if(prob(25))
|
||||
owner.adjustToxLoss(10) //Now they start dying.
|
||||
owner.vomit(20)
|
||||
if(101 to INFINITY) //Now they will really start dying
|
||||
if(prob(40))
|
||||
to_chat(owner, "<span class = 'userdanger'> THERES TOO MUCH FILTH, OH GODS THE FILTH!</span>")
|
||||
owner.adjustToxLoss(15)
|
||||
owner.vomit(40)
|
||||
CHECK_TICK //Check_tick right here, its motherfuckin magic. (To me at least)
|
||||
|
||||
//Handles the dwarf alcohol cycle tied to on_life, it ticks in dwarf_cycle_ticker.
|
||||
/obj/item/organ/dwarfgland/proc/dwarf_eth_cycle()
|
||||
//BOOZE POWER
|
||||
for(var/datum/reagent/R in owner.reagents.reagent_list)
|
||||
if(istype(R, /datum/reagent/consumable/ethanol))
|
||||
var/datum/reagent/consumable/ethanol/E = R
|
||||
stored_alcohol += (E.boozepwr / 50)
|
||||
if(stored_alcohol > max_alcohol) //Dwarves technically start at 250 alcohol stored.
|
||||
stored_alcohol = max_alcohol
|
||||
var/heal_amt = heal_rate
|
||||
stored_alcohol -= alcohol_rate //Subtracts alcohol_Rate from stored alcohol so EX: 250 - 0.25 per each loop that occurs.
|
||||
if(stored_alcohol > 400) //If they are over 400 they start regenerating
|
||||
owner.adjustBruteLoss(-heal_amt) //But its alcohol, there will be other issues here.
|
||||
owner.adjustFireLoss(-heal_amt) //Unless they drink casually all the time.
|
||||
owner.adjustOxyLoss(-heal_amt)
|
||||
owner.adjustCloneLoss(-heal_amt) //Also they will probably get brain damage if thats a thing here.
|
||||
if(prob(25))
|
||||
switch(stored_alcohol)
|
||||
if(0 to 24)
|
||||
to_chat(owner, "<span class='userdanger'>DAMNATION INCARNATE, WHY AM I CURSED WITH THIS DRY-SPELL? I MUST DRINK.</span>")
|
||||
owner.adjustToxLoss(35)
|
||||
if(25 to 50)
|
||||
to_chat(owner, "<span class='danger'>Oh DAMN, I need some brew!</span>")
|
||||
if(51 to 75)
|
||||
to_chat(owner, "<span class='warning'>Your body aches, you need to get ahold of some booze...</span>")
|
||||
if(76 to 100)
|
||||
to_chat(owner, "<span class='notice'>A pint of anything would really hit the spot right now.</span>")
|
||||
if(101 to 150)
|
||||
to_chat(owner, "<span class='notice'>You feel like you could use a good brew.</span>")
|
||||
@@ -25,5 +25,5 @@
|
||||
blacklisted = 1
|
||||
inherent_traits = list(TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_FAKEDEATH, TRAIT_CALCIUM_HEALER)
|
||||
|
||||
/datum/species/skeleton/pirate/check_roundstart_eligible()
|
||||
/datum/species/skeleton/space/check_roundstart_eligible()
|
||||
return FALSE
|
||||
@@ -123,26 +123,20 @@ There are several things that need to be remembered:
|
||||
if(U.adjusted == ALT_STYLE)
|
||||
t_color = "[t_color]_d"
|
||||
|
||||
if(!U.force_alternate_icon)
|
||||
if(U.mutantrace_variation)
|
||||
if(U.suit_style == DIGITIGRADE_SUIT_STYLE)
|
||||
U.alternate_worn_icon = 'modular_citadel/icons/mob/uniform_digi.dmi'
|
||||
if(U.adjusted == ALT_STYLE)
|
||||
t_color = "[t_color]_d_l"
|
||||
else if(U.adjusted == NORMAL_STYLE)
|
||||
t_color = "[t_color]_l"
|
||||
else
|
||||
U.alternate_worn_icon = null
|
||||
var/alt_worn = U.alternate_worn_icon
|
||||
|
||||
if(!U.force_alternate_icon && U.mutantrace_variation && U.suit_style == DIGITIGRADE_SUIT_STYLE)
|
||||
alt_worn = 'modular_citadel/icons/mob/uniform_digi.dmi'
|
||||
|
||||
var/mutable_appearance/uniform_overlay
|
||||
|
||||
if(dna && dna.species.sexes)
|
||||
var/G = (gender == FEMALE) ? "f" : "m"
|
||||
if(G == "f" && U.fitted != NO_FEMALE_UNIFORM)
|
||||
uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = ((w_uniform.alternate_worn_icon) ? w_uniform.alternate_worn_icon : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted)
|
||||
uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted)
|
||||
|
||||
if(!uniform_overlay)
|
||||
uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = ((w_uniform.alternate_worn_icon) ? w_uniform.alternate_worn_icon : 'icons/mob/uniform.dmi'), isinhands = FALSE)
|
||||
uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE)
|
||||
|
||||
|
||||
if(OFFSET_UNIFORM in dna.species.offset_features)
|
||||
|
||||
@@ -702,7 +702,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
/mob/living/carbon/proc/liver_failure()
|
||||
reagents.end_metabolization(src, keep_liverless = TRUE) //Stops trait-based effects on reagents, to prevent permanent buffs
|
||||
reagents.metabolize(src, can_overdose=FALSE, liverless = TRUE)
|
||||
if(HAS_TRAIT(src, TRAIT_STABLEHEART))
|
||||
if(HAS_TRAIT(src, TRAIT_STABLELIVER))
|
||||
return
|
||||
adjustToxLoss(4, TRUE, TRUE)
|
||||
if(prob(30))
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
autotransferwait = 200
|
||||
|
||||
/obj/belly/megafauna/dragon/gut
|
||||
name = "stomach"
|
||||
name = "gut"
|
||||
vore_capacity = 5 //I doubt this many people will actually last in the gut, but...
|
||||
vore_sound = "Tauric Swallow"
|
||||
desc = "With a rush of burning ichor greeting you, you're introduced to the Drake's stomach. Wrinkled walls greedily grind against you, acidic slimes working into your body as you become fuel and nutriton for a superior predator. All that's left is your body's willingness to resist your destiny."
|
||||
|
||||
@@ -29,21 +29,22 @@
|
||||
/mob/living/simple_animal/Destroy()
|
||||
release_vore_contents(include_absorbed = TRUE, silent = TRUE)
|
||||
prey_excludes.Cut()
|
||||
QDEL_NULL_LIST(vore_organs)
|
||||
. = ..()
|
||||
|
||||
// Update fullness based on size & quantity of belly contents
|
||||
/mob/living/simple_animal/proc/update_fullness(var/atom/movable/M)
|
||||
var/new_fullness = 0
|
||||
for(var/I in vore_organs)
|
||||
var/datum/belly/B = vore_organs[I]
|
||||
if (!(M in B.internal_contents))
|
||||
for(var/belly in vore_organs)
|
||||
var/obj/belly/B = vore_organs[belly]
|
||||
if (!(M in B.contents))
|
||||
return FALSE // Nothing's inside
|
||||
new_fullness += M
|
||||
|
||||
vore_fullness = new_fullness
|
||||
|
||||
/mob/living/simple_animal/death()
|
||||
release_vore_contents(silent = TRUE)
|
||||
release_vore_contents()
|
||||
. = ..()
|
||||
|
||||
// Simple animals have only one belly. This creates it (if it isn't already set up)
|
||||
@@ -51,16 +52,18 @@
|
||||
vore_init = TRUE
|
||||
if(CHECK_BITFIELD(flags_1, HOLOGRAM_1))
|
||||
return
|
||||
if(vore_organs.len)
|
||||
return
|
||||
if(no_vore) //If it can't vore, let's not give it a stomach.
|
||||
if(!vore_active || no_vore) //If it can't vore, let's not give it a stomach.
|
||||
return
|
||||
if(vore_active && !IsAdvancedToolUser()) //vore active, but doesn't have thumbs to grab people with.
|
||||
verbs |= /mob/living/simple_animal/proc/animal_nom
|
||||
|
||||
var/obj/belly/B = new /obj/belly(src)
|
||||
if(LAZYLEN(vore_organs))
|
||||
return
|
||||
|
||||
LAZYINITLIST(vore_organs)
|
||||
var/obj/belly/B = new (src)
|
||||
vore_selected = B
|
||||
B.immutable = 1
|
||||
B.immutable = TRUE
|
||||
B.name = vore_stomach_name ? vore_stomach_name : "stomach"
|
||||
B.desc = vore_stomach_flavor ? vore_stomach_flavor : "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]."
|
||||
B.digest_mode = vore_default_mode
|
||||
@@ -125,13 +128,12 @@
|
||||
// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs.
|
||||
//
|
||||
/mob/living/simple_animal/proc/animal_nom(var/mob/living/T in oview(1))
|
||||
set name = "Animal Nom"
|
||||
set name = "Animal Nom (pull target)"
|
||||
set category = "Vore"
|
||||
set desc = "Since you can't grab, you get a verb!"
|
||||
|
||||
if (stat != CONSCIOUS)
|
||||
return
|
||||
if (T.devourable == FALSE)
|
||||
to_chat(usr, "<span class='warning'>You can't eat this!</span>")
|
||||
if(!T.devourable)
|
||||
return
|
||||
return vore_attack(usr,T,usr)
|
||||
return vore_attack(src,T,src)
|
||||
|
||||
137
code/modules/mob/living/simple_animal/simplemob_vore_values.dm
Normal file
137
code/modules/mob/living/simple_animal/simplemob_vore_values.dm
Normal file
@@ -0,0 +1,137 @@
|
||||
//CARBON MOBS
|
||||
/mob/living/carbon/alien
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/carbon/monkey
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
|
||||
/*
|
||||
REFER TO code/modules/mob/living/simple_animal/simple_animal_vr.dm for Var information!
|
||||
*/
|
||||
|
||||
|
||||
//NUETRAL MOBS
|
||||
/mob/living/simple_animal/crab
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/simple_animal/cow
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/chick
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/chicken
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/mouse
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/kiwi
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
//STATION PETS
|
||||
/mob/living/simple_animal/pet
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet/fox
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/pet/cat
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/pet/dog
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/sloth
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
/mob/living/simple_animal/parrot
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
|
||||
//HOSTILE MOBS
|
||||
/mob/living/simple_animal/hostile/retaliate/goat
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_stomach_flavor = "You find yourself squeezed into the hollow of the goat, the smell of oats and hay thick in the tight space, all of which grinds in on you. Harmless for now..."
|
||||
vore_default_mode = DM_HOLD
|
||||
|
||||
/mob/living/simple_animal/hostile/lizard
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/alien
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/bear
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/giant_spider
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/snake
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/gorilla
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/asteroid/goliath
|
||||
feeding = TRUE //for pet Goliaths I guess or something.
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
|
||||
/mob/living/simple_animal/hostile/carp
|
||||
devourable = TRUE
|
||||
digestable = TRUE
|
||||
feeding = TRUE
|
||||
vore_active = TRUE
|
||||
isPredator = TRUE
|
||||
vore_default_mode = DM_DIGEST
|
||||
@@ -52,13 +52,11 @@
|
||||
switch(from.pH)
|
||||
if(11.5 to INFINITY)
|
||||
to_chat(src, "<span class='warning'>You taste a strong alkaline flavour!</span>")
|
||||
T.applyOrganDamage(1)
|
||||
if(8.5 to 11.5)
|
||||
to_chat(src, "<span class='notice'>You taste a sort of soapy tone in the mixture.</span>")
|
||||
if(2.5 to 5.5)
|
||||
to_chat(src, "<span class='notice'>You taste a sort of acid tone in the mixture.</span>")
|
||||
if(-INFINITY to 2.5)
|
||||
to_chat(src, "<span class='warning'>You taste a strong acidic flavour!</span>")
|
||||
T.applyOrganDamage(1)
|
||||
|
||||
#undef DEFAULT_TASTE_SENSITIVITY
|
||||
|
||||
@@ -486,3 +486,15 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
|
||||
/mob/proc/can_hear()
|
||||
. = TRUE
|
||||
|
||||
//Examine text for traits shared by multiple types. I wish examine was less copypasted.
|
||||
/mob/proc/common_trait_examine()
|
||||
if(HAS_TRAIT(src, TRAIT_DISSECTED))
|
||||
var/dissectionmsg = ""
|
||||
if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Extraterrestrial Dissection"))
|
||||
dissectionmsg = " via Extraterrestrial Dissection. It is no longer worth experimenting on"
|
||||
else if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Experimental Dissection"))
|
||||
dissectionmsg = " via Experimental Dissection"
|
||||
else if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Thorough Dissection"))
|
||||
dissectionmsg = " via Thorough Dissection"
|
||||
. += "<span class='notice'>This body has been dissected and analyzed[dissectionmsg].</span><br>"
|
||||
@@ -122,3 +122,32 @@
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You can't put the [A] into \the [src]!</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/gun/syringe/dart/rapiddart
|
||||
name = "Repeating dart gun"
|
||||
icon_state = "rapiddartgun"
|
||||
item_state = "rapiddartgun"
|
||||
|
||||
/obj/item/gun/syringe/dart/rapiddart/CheckParts(list/parts_list)
|
||||
var/obj/item/reagent_containers/glass/beaker/B = locate(/obj/item/reagent_containers/glass/beaker) in parts_list
|
||||
|
||||
if(istype(B, /obj/item/reagent_containers/glass/beaker/large))
|
||||
desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
|
||||
max_syringes = 2
|
||||
return
|
||||
else if(istype(B, /obj/item/reagent_containers/glass/beaker/plastic))
|
||||
desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
|
||||
max_syringes = 3
|
||||
return
|
||||
else if(istype(B, /obj/item/reagent_containers/glass/beaker/meta))
|
||||
desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
|
||||
max_syringes = 4
|
||||
return
|
||||
else if(istype(B, /obj/item/reagent_containers/glass/beaker/bluespace))
|
||||
desc = "[initial(desc)] A modification of the dart gun's pressure chamber has been perfomed using a [B], extending it's holding size to [max_syringes]."
|
||||
max_syringes = 6
|
||||
return
|
||||
else
|
||||
max_syringes = 1
|
||||
desc = "[initial(desc)] It has a [B] strapped to it, but it doesn't seem to be doing anything."
|
||||
..()
|
||||
|
||||
@@ -384,6 +384,38 @@
|
||||
adjust_item_drop_location(P)
|
||||
reagents.trans_to(P, vol_part)
|
||||
. = TRUE
|
||||
|
||||
if("createDart")
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
if(!(istype(R, /datum/reagent/medicine)))
|
||||
visible_message("<b>The [src]</b> beeps, \"<span class='warning'>SmartDarts are insoluble with non-medicinal compounds.\"</span>")
|
||||
return
|
||||
|
||||
var/many = params["many"]
|
||||
if(reagents.total_volume == 0)
|
||||
return
|
||||
var/amount = 1
|
||||
var/vol_each = min(reagents.total_volume, 20)
|
||||
if(text2num(many))
|
||||
amount = CLAMP(round(input(usr, "Max 10. Buffer content will be split evenly.", "How many darts?", amount) as num|null), 0, 10)
|
||||
if(!amount)
|
||||
return
|
||||
vol_each = min(reagents.total_volume / amount, 20)
|
||||
|
||||
var/name = stripped_input(usr,"Name:","Name your SmartDart!", "[reagents.get_master_reagent_name()] ([vol_each]u)", MAX_NAME_LEN)
|
||||
if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr)))
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/syringe/dart/D
|
||||
for(var/i = 0; i < amount; i++)
|
||||
D = new /obj/item/reagent_containers/syringe/dart(drop_location())
|
||||
D.name = trim("[name] SmartDart")
|
||||
adjust_item_drop_location(D)
|
||||
reagents.trans_to(D, vol_each)
|
||||
D.mode=!mode
|
||||
D.update_icon()
|
||||
. = TRUE
|
||||
|
||||
//END CITADEL ADDITIONS
|
||||
if("analyzeBeak")
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
|
||||
|
||||
@@ -244,9 +244,9 @@
|
||||
|
||||
/obj/machinery/computer/pandemic/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
user.put_in_hands(beaker)
|
||||
if(!user.put_in_hands(beaker))
|
||||
beaker.forceMove(drop_location())
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
else
|
||||
|
||||
@@ -236,10 +236,12 @@
|
||||
/datum/reagent/medicine/silver_sulfadiazine
|
||||
name = "Silver Sulfadiazine"
|
||||
id = "silver_sulfadiazine"
|
||||
description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. If ingested through other means, deals minor toxin damage."
|
||||
description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. It is mildly poisonous taken orally or by injection. If overdosed, deals brute and minor liver damage."
|
||||
reagent_state = LIQUID
|
||||
pH = 7.2
|
||||
color = "#ffeac9"
|
||||
metabolization_rate = 5 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 50
|
||||
|
||||
/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
|
||||
if(iscarbon(M) && M.stat != DEAD)
|
||||
@@ -260,6 +262,15 @@
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/silver_sulfadiazine/overdose_start(mob/living/M)
|
||||
metabolization_rate = 15 * REAGENTS_METABOLISM
|
||||
M.adjustBruteLoss(2*REM, 0)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
C.applyLiverDamage(1)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/oxandrolone
|
||||
name = "Oxandrolone"
|
||||
id = "oxandrolone"
|
||||
@@ -271,7 +282,7 @@
|
||||
pH = 10.7
|
||||
|
||||
/datum/reagent/medicine/oxandrolone/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getFireLoss() > 50)
|
||||
if(M.getFireLoss() > 25)
|
||||
M.adjustFireLoss(-4*REM, 0) //Twice as effective as silver sulfadiazine for severe burns
|
||||
else
|
||||
M.adjustFireLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones
|
||||
@@ -287,10 +298,12 @@
|
||||
/datum/reagent/medicine/styptic_powder
|
||||
name = "Styptic Powder"
|
||||
id = "styptic_powder"
|
||||
description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. If ingested through other means, deals minor toxin damage."
|
||||
description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. It is poisonous if taken orally or by injection. If overdosed, deals brute and minor liver damage."
|
||||
reagent_state = LIQUID
|
||||
color = "#FF9696"
|
||||
pH = 6.7
|
||||
metabolization_rate = 5 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 50
|
||||
|
||||
/datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message = 1)
|
||||
if(iscarbon(M) && M.stat != DEAD)
|
||||
@@ -312,6 +325,15 @@
|
||||
..()
|
||||
. = 1
|
||||
|
||||
datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
metabolization_rate = 15 * REAGENTS_METABOLISM
|
||||
M.adjustBruteLoss(2*REM, 0)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
C.applyLiverDamage(1)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/salglu_solution
|
||||
name = "Saline-Glucose Solution"
|
||||
id = "salglu_solution"
|
||||
@@ -398,23 +420,35 @@
|
||||
/datum/reagent/medicine/synthflesh
|
||||
name = "Synthflesh"
|
||||
id = "synthflesh"
|
||||
description = "Has a 100% chance of instantly healing brute and burn damage. One unit of the chemical will heal one point of damage. Touch application only."
|
||||
description = "Has a 100% chance of healing large amounts of brute and burn damage very quickly. One unit of the chemical will heal one point of damage. Touch application only."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFEBEB"
|
||||
pH = 11.5
|
||||
metabolization_rate = 5 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, reac_volume,show_message = 1)
|
||||
if(iscarbon(M))
|
||||
if (M.stat == DEAD)
|
||||
show_message = 0
|
||||
if(method in list(PATCH, TOUCH))
|
||||
M.adjustBruteLoss(-1.25 * reac_volume)
|
||||
M.adjustFireLoss(-1.25 * reac_volume)
|
||||
if(method in list(INGEST, VAPOR))
|
||||
var/mob/living/carbon/C = M
|
||||
C.losebreath++
|
||||
C.emote("cough")
|
||||
to_chat(M, "<span class='danger'>You feel your throat closing up!</span>")
|
||||
else if(method == INJECT)
|
||||
return
|
||||
else if(method in list(PATCH, TOUCH))
|
||||
M.adjustBruteLoss(-1 * reac_volume)
|
||||
M.adjustFireLoss(-1 * reac_volume)
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='danger'>You feel your burns and bruises healing! It stings like hell!</span>")
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/synthflesh/overdose_start(mob/living/M)
|
||||
metabolization_rate = 15 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/medicine/charcoal
|
||||
name = "Charcoal"
|
||||
id = "charcoal"
|
||||
@@ -545,7 +579,7 @@
|
||||
|
||||
|
||||
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/carbon/M)
|
||||
if(M.getBruteLoss() > 50)
|
||||
if(M.getBruteLoss() > 25)
|
||||
M.adjustBruteLoss(-4*REM, 0) //Twice as effective as styptic powder for severe bruising
|
||||
else
|
||||
M.adjustBruteLoss(-0.5*REM, 0) //But only a quarter as effective for more minor ones
|
||||
@@ -1297,10 +1331,12 @@
|
||||
|
||||
/datum/reagent/medicine/corazone/on_mob_metabolize(mob/living/M)
|
||||
..()
|
||||
ADD_TRAIT(M, TRAIT_STABLEHEART, id)
|
||||
ADD_TRAIT(M, TRAIT_STABLEHEART, type)
|
||||
ADD_TRAIT(M, TRAIT_STABLELIVER, type)
|
||||
|
||||
/datum/reagent/medicine/corazone/on_mob_end_metabolize(mob/living/M)
|
||||
REMOVE_TRAIT(M, TRAIT_STABLEHEART, id)
|
||||
REMOVE_TRAIT(M, TRAIT_STABLEHEART, type)
|
||||
REMOVE_TRAIT(M, TRAIT_STABLELIVER, type)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/muscle_stimulant
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
var/amount = CLAMP(0.002, 0, N.volume)
|
||||
N.volume -= amount
|
||||
St.data["grown_volume"] = St.data["grown_volume"] + added_volume
|
||||
St.name = "[initial(St.name)] [round(St.data["grown_volume"], 0.1)]u colony"
|
||||
|
||||
/datum/chemical_reaction/styptic_powder
|
||||
name = "Styptic Powder"
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
|
||||
|
||||
to_chat(user, "<span class='notice'>You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.</span>")
|
||||
if (reagents.total_volume >= reagents.maximum_volume)
|
||||
if (round(reagents.total_volume, 0.1) >= reagents.maximum_volume)
|
||||
mode=!mode
|
||||
update_icon()
|
||||
|
||||
@@ -307,7 +307,7 @@
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
|
||||
to_chat(user, "<span class='notice'>You soak the [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.</span>")
|
||||
if (reagents.total_volume >= reagents.maximum_volume)
|
||||
if (round(reagents.total_volume,1) >= reagents.maximum_volume)
|
||||
mode=!mode
|
||||
update_icon()
|
||||
|
||||
@@ -323,8 +323,9 @@
|
||||
|
||||
rounded_vol = "empty"
|
||||
if(reagents && reagents.total_volume)
|
||||
if(volume/reagents.total_volume == 1)
|
||||
if(volume/round(reagents.total_volume, 1) == 1)
|
||||
rounded_vol="full"
|
||||
mode = SYRINGE_INJECT
|
||||
|
||||
icon_state = "[rounded_vol]"
|
||||
item_state = "syringe_[rounded_vol]"
|
||||
|
||||
@@ -729,12 +729,22 @@
|
||||
var/surgery
|
||||
|
||||
/datum/design/surgery/experimental_dissection
|
||||
name = "Experimental Dissection"
|
||||
desc = "A surgical procedure which deeply analyzes the biology of a corpse, and automatically adds new findings to the research database."
|
||||
id = "surgery_exp_dissection"
|
||||
surgery = /datum/surgery/advanced/bioware/experimental_dissection
|
||||
name = "Advanced Dissection"
|
||||
desc = "A surgical procedure which analyzes the biology of a corpse, and automatically adds new findings to the research database."
|
||||
id = "surgery_adv_dissection"
|
||||
surgery = /datum/surgery/advanced/experimental_dissection/adv
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/experimental_dissection/exp
|
||||
name = "Experimental Dissection"
|
||||
id = "surgery_exp_dissection"
|
||||
surgery = /datum/surgery/advanced/experimental_dissection/exp
|
||||
|
||||
/datum/design/surgery/experimental_dissection/ext
|
||||
name = "Extraterrestrial Dissection"
|
||||
id = "surgery_ext_dissection"
|
||||
surgery = /datum/surgery/advanced/experimental_dissection/alien
|
||||
|
||||
/datum/design/surgery/lobotomy
|
||||
name = "Lobotomy"
|
||||
desc = "An invasive surgical procedure which guarantees removal of almost all brain traumas, but might cause another permanent trauma in return."
|
||||
@@ -756,13 +766,49 @@
|
||||
surgery = /datum/surgery/advanced/viral_bonding
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/reconstruction
|
||||
name = "Reconstruction"
|
||||
desc = "A surgical procedure that gradually repairs damage done to a body without the assistance of chemicals. Unlike classic medicine, it is effective on corpses."
|
||||
id = "surgery_reconstruction"
|
||||
surgery = /datum/surgery/advanced/reconstruction
|
||||
/datum/design/surgery/healing
|
||||
name = "Tend Wounds"
|
||||
desc = "An upgraded version of the original surgery."
|
||||
id = "surgery_healing_base" //holder because travis cries otherwise. Not used in techweb unlocks.
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/healing/brute_upgrade
|
||||
name = "Tend Wounds (Brute) Upgrade"
|
||||
surgery = /datum/surgery/healing/brute/upgraded
|
||||
id = "surgery_heal_brute_upgrade"
|
||||
|
||||
/datum/design/surgery/healing/brute_upgrade_2
|
||||
name = "Tend Wounds (Brute) Upgrade"
|
||||
surgery = /datum/surgery/healing/brute/upgraded/femto
|
||||
id = "surgery_heal_brute_upgrade_femto"
|
||||
|
||||
/datum/design/surgery/healing/burn_upgrade
|
||||
name = "Tend Wounds (Burn) Upgrade"
|
||||
surgery = /datum/surgery/healing/burn/upgraded
|
||||
id = "surgery_heal_burn_upgrade"
|
||||
|
||||
/datum/design/surgery/healing/burn_upgrade_2
|
||||
name = "Tend Wounds (Burn) Upgrade"
|
||||
surgery = /datum/surgery/healing/brute/upgraded/femto
|
||||
id = "surgery_heal_burn_upgrade_femto"
|
||||
|
||||
/datum/design/surgery/healing/combo
|
||||
name = "Tend Wounds (Mixture)"
|
||||
desc = "A surgical procedure that repairs both bruises and burns. Repair efficiency is not as high as the individual surgeries but it is faster."
|
||||
surgery = /datum/surgery/healing/combo
|
||||
id = "surgery_heal_combo"
|
||||
|
||||
/datum/design/surgery/healing/combo_upgrade
|
||||
name = "Tend Wounds (Mixture) Upgrade"
|
||||
surgery = /datum/surgery/healing/combo/upgraded
|
||||
id = "surgery_heal_combo_upgrade"
|
||||
|
||||
/datum/design/surgery/healing/combo_upgrade_2
|
||||
name = "Tend Wounds (Mixture) Upgrade"
|
||||
desc = "A surgical procedure that repairs both bruises and burns faster than their individual counterparts. It is more effective than both the individual surgeries."
|
||||
surgery = /datum/surgery/healing/combo/upgraded/femto
|
||||
id = "surgery_heal_combo_upgrade_femto"
|
||||
|
||||
/datum/design/surgery/surgery_toxinhealing
|
||||
name = "Body Rejuvenation"
|
||||
desc = "A surgical procedure that helps deal with oxygen deprecation, and treat toxic damaged. Works on corpses and alive alike without chemicals."
|
||||
@@ -805,6 +851,13 @@
|
||||
surgery = /datum/surgery/advanced/bioware/vein_threading
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/muscled_veins
|
||||
name = "Vein Muscle Membrane"
|
||||
desc = "A surgical procedure which adds a muscled membrane to blood vessels, allowing them to pump blood without a heart."
|
||||
id = "surgery_muscled_veins"
|
||||
surgery = /datum/surgery/advanced/bioware/muscled_veins
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/ligament_hook
|
||||
name = "Ligament Hook"
|
||||
desc = "A surgical procedure which reshapes the connections between torso and limbs, making it so limbs can be attached manually if severed. \
|
||||
|
||||
@@ -110,12 +110,21 @@
|
||||
export_price = 5000
|
||||
|
||||
/////////////////////////Advanced Surgery/////////////////////////
|
||||
/datum/techweb_node/imp_wt_surgery
|
||||
id = "imp_wt_surgery"
|
||||
display_name = "Improved Wound-Tending Surgery"
|
||||
description = "Who would have known being more gentle with a hemostat decreases patient pain?"
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("surgery_heal_brute_upgrade","surgery_heal_burn_upgrade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
export_price = 1000
|
||||
|
||||
/datum/techweb_node/adv_surgery
|
||||
id = "adv_surgery"
|
||||
display_name = "Advanced Surgery"
|
||||
description = "When simple medicine doesn't cut it."
|
||||
prereq_ids = list("adv_biotech")
|
||||
design_ids = list("surgery_lobotomy", "surgery_reconstruction", "surgery_toxinhealing", "organbox", "surgery_exp_dissection")
|
||||
prereq_ids = list("imp_wt_surgery")
|
||||
design_ids = list("surgery_revival", "surgery_lobotomy", "surgery_heal_brute_upgrade_femto","surgery_heal_burn_upgrade_femto", "surgery_heal_combo", "surgery_toxinhealing", "organbox", "surgery_adv_dissection")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
@@ -124,7 +133,7 @@
|
||||
display_name = "Experimental Surgery"
|
||||
description = "When evolution isn't fast enough."
|
||||
prereq_ids = list("adv_surgery")
|
||||
design_ids = list("surgery_revival","surgery_pacify","surgery_vein_thread","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_viral_bond")
|
||||
design_ids = list("surgery_pacify","surgery_vein_thread","surgery_muscled_veins","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_viral_bond", "surgery_exp_dissection", "surgery_heal_combo_upgrade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 5000
|
||||
|
||||
@@ -133,7 +142,7 @@
|
||||
display_name = "Alien Surgery"
|
||||
description = "Abductors did nothing wrong."
|
||||
prereq_ids = list("exp_surgery", "alientech")
|
||||
design_ids = list("surgery_brainwashing","surgery_zombie")
|
||||
design_ids = list("surgery_brainwashing","surgery_zombie", "surgery_ext_dissection", "surgery_heal_combo_upgrade_femto")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
/datum/surgery/advanced/bioware/can_start(mob/user, mob/living/carbon/human/target)
|
||||
if(!..())
|
||||
return FALSE
|
||||
if(!istype(target))
|
||||
return FALSE
|
||||
for(var/X in target.bioware)
|
||||
var/datum/bioware/B = X
|
||||
if(B.mod_type == bioware_target)
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
/datum/surgery/advanced/bioware/experimental_dissection
|
||||
name = "Experimental Dissection"
|
||||
desc = "A surgical procedure which deeply analyzes the biology of a corpse, and automatically adds new findings to the research database."
|
||||
steps = list(/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/dissection,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
bioware_target = BIOWARE_DISSECTION
|
||||
|
||||
/datum/surgery/advanced/bioware/experimental_dissection/can_start(mob/user, mob/living/carbon/target)
|
||||
. = ..()
|
||||
if(iscyborg(user))
|
||||
return FALSE //robots cannot be creative
|
||||
//(also this surgery shouldn't be consistently successful, and cyborgs have a 100% success rate on surgery)
|
||||
if(target.stat != DEAD)
|
||||
return FALSE
|
||||
|
||||
/datum/surgery_step/dissection
|
||||
name = "dissection"
|
||||
implements = list(TOOL_SCALPEL = 60, /obj/item/kitchen/knife = 30, /obj/item/shard = 15)
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/dissection/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start dissecting [target].</span>",
|
||||
"[user] starts dissecting [target].",
|
||||
"[user] starts dissecting [target].")
|
||||
|
||||
/datum/surgery_step/dissection/proc/check_value(mob/living/carbon/target)
|
||||
if(isalienroyal(target))
|
||||
return 10000
|
||||
else if(isalienadult(target))
|
||||
return 5000
|
||||
else if(ismonkey(target))
|
||||
return 1000
|
||||
else if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.dna && H.dna.species)
|
||||
if(isabductor(H))
|
||||
return 8000
|
||||
if(isgolem(H) || iszombie(H))
|
||||
return 4000
|
||||
if(isjellyperson(H) || ispodperson(H))
|
||||
return 3000
|
||||
return 2000
|
||||
|
||||
/datum/surgery_step/dissection/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You dissect [target], and add your discoveries to the research database!</span>",
|
||||
"[user] dissects [target], adding [user.p_their()] discoveries to the research database!",
|
||||
"[user] dissects [target]!")
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = check_value(target)))
|
||||
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
target.apply_damage(80, BRUTE, L)
|
||||
new /datum/bioware/dissected(target)
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You dissect [target], but do not find anything particularly interesting.</span>",
|
||||
"[user] dissects [target], however it seems [user.p_they()] didn't find anything useful.",
|
||||
"[user] dissects [target], but looks a little dissapointed.")
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = (check_value(target) * 0.2)))
|
||||
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
target.apply_damage(80, BRUTE, L)
|
||||
new /datum/bioware/dissected(target)
|
||||
return TRUE
|
||||
|
||||
/datum/bioware/dissected
|
||||
name = "Dissected"
|
||||
desc = "This body has been dissected and analyzed. It is no longer worth experimenting on."
|
||||
mod_type = BIOWARE_DISSECTION
|
||||
42
code/modules/surgery/advanced/bioware/muscled_veins.dm
Normal file
42
code/modules/surgery/advanced/bioware/muscled_veins.dm
Normal file
@@ -0,0 +1,42 @@
|
||||
/datum/surgery/advanced/bioware/muscled_veins
|
||||
name = "Vein Muscle Membrane"
|
||||
desc = "A surgical procedure which adds a muscled membrane to blood vessels, allowing them to pump blood without a heart."
|
||||
steps = list(/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/muscled_veins,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
bioware_target = BIOWARE_CIRCULATION
|
||||
|
||||
/datum/surgery_step/muscled_veins
|
||||
name = "shape vein muscles"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
|
||||
/datum/surgery_step/muscled_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start wrapping muscles around [target]'s circulatory system.</span>",
|
||||
"[user] starts wrapping muscles around [target]'s circulatory system.",
|
||||
"[user] starts manipulating [target]'s circulatory system.")
|
||||
|
||||
/datum/surgery_step/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You reshape [target]'s circulatory system, adding a muscled membrane!</span>",
|
||||
"[user] reshapes [target]'s circulatory system, adding a muscled membrane!",
|
||||
"[user] finishes manipulating [target]'s circulatory system.")
|
||||
new /datum/bioware/muscled_veins(target)
|
||||
return TRUE
|
||||
|
||||
/datum/bioware/muscled_veins
|
||||
name = "Threaded Veins"
|
||||
desc = "The circulatory system is woven into a mesh, severely reducing the amount of blood lost from wounds."
|
||||
mod_type = BIOWARE_CIRCULATION
|
||||
|
||||
/datum/bioware/muscled_veins/on_gain()
|
||||
..()
|
||||
ADD_TRAIT(owner, TRAIT_STABLEHEART, "muscled_veins")
|
||||
|
||||
/datum/bioware/muscled_veins/on_lose()
|
||||
..()
|
||||
REMOVE_TRAIT(owner, TRAIT_STABLEHEART, "muscled_veins")
|
||||
@@ -13,8 +13,9 @@
|
||||
/datum/surgery_step/brainwash,
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human)
|
||||
target_mobtypes = list(/mob/living/carbon/human)
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
|
||||
/datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target)
|
||||
if(!..())
|
||||
return FALSE
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/datum/surgery_step/lobotomize,
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
/datum/surgery/advanced/lobotomy/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/pacify,
|
||||
/datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
/datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
/datum/surgery/advanced/reconstruction
|
||||
name = "Reconstruction"
|
||||
desc = "A surgical procedure that gradually repairs damage done to a body without the assistance of chemicals. Unlike classic medicine, it is effective on corpses."
|
||||
steps = list(/datum/surgery_step/incise,
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/reconstruct,
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery_step/reconstruct
|
||||
name = "repair body"
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
|
||||
repeatable = TRUE
|
||||
time = 25
|
||||
|
||||
/datum/surgery_step/reconstruct/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] starts knitting some of [target]'s flesh back together.", "<span class='notice'>You start knitting some of [target]'s flesh back together.</span>")
|
||||
|
||||
/datum/surgery_step/reconstruct/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] fixes some of [target]'s wounds.", "<span class='notice'>You succeed in fixing some of [target]'s wounds.</span>")
|
||||
target.heal_bodypart_damage(10,10)
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/reconstruct/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] screws up!", "<span class='warning'>You screwed up!</span>")
|
||||
target.take_bodypart_damage(5,0)
|
||||
return FALSE
|
||||
@@ -8,7 +8,8 @@
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/revive,
|
||||
/datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
/datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
/datum/surgery_step/toxichealing,
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
/datum/surgery_step/incise,
|
||||
/datum/surgery_step/viral_bond,
|
||||
/datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
/datum/surgery/advanced/viral_bonding/can_start(mob/user, mob/living/carbon/target)
|
||||
if(!..())
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/amputation
|
||||
name = "Amputation"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/sever_limb)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
/datum/surgery_step/sever_limb
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
|
||||
var/lip_style = null
|
||||
var/lip_color = "white"
|
||||
//If the head is a special sprite
|
||||
var/custom_head
|
||||
|
||||
/obj/item/bodypart/head/can_dismember(obj/item/I)
|
||||
if(!((owner.stat == DEAD) || owner.InFullCritical()))
|
||||
@@ -128,6 +130,8 @@
|
||||
add_overlay(standing)
|
||||
|
||||
/obj/item/bodypart/head/get_limb_icon(dropped)
|
||||
if(custom_head)
|
||||
return
|
||||
cut_overlays()
|
||||
. = ..()
|
||||
if(dropped) //certain overlays only appear when the limb is being detached from its owner.
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/fix_brain,
|
||||
/datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_HEAD)
|
||||
requires_bodypart_type = 0
|
||||
/datum/surgery_step/fix_brain
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/cavity_implant
|
||||
name = "Cavity implant"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/handle_cavity, /datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
//handle cavity
|
||||
/datum/surgery_step/handle_cavity
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/datum/surgery/core_removal
|
||||
name = "Core removal"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/extract_core)
|
||||
species = list(/mob/living/simple_animal/slime)
|
||||
target_mobtypes = list(/mob/living/simple_animal/slime)
|
||||
possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
|
||||
lying_required = FALSE
|
||||
ignore_clothes = TRUE
|
||||
|
||||
/datum/surgery/core_removal/can_start(mob/user, mob/living/target)
|
||||
if(target.stat == DEAD)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//an incision but with greater bleed, and a 90% base success chance
|
||||
/datum/surgery_step/incise_heart
|
||||
name = "incise heart"
|
||||
implements = list(/obj/item/scalpel = 90, /obj/item/melee/transforming/energy/sword = 45, /obj/item/kitchen/knife = 45,
|
||||
implements = list(TOOL_SCALPEL = 90, /obj/item/melee/transforming/energy/sword = 45, /obj/item/kitchen/knife = 45,
|
||||
/obj/item/shard = 25)
|
||||
time = 16
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
//grafts a coronary bypass onto the individual's heart, success chance is 90% base again
|
||||
/datum/surgery_step/coronary_bypass
|
||||
name = "graft coronary bypass"
|
||||
implements = list(/obj/item/hemostat = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5)
|
||||
implements = list(TOOL_HEMOSTAT = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5)
|
||||
time = 90
|
||||
|
||||
/datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -74,4 +74,4 @@
|
||||
"<span class='warning'>[user] screws up, causing blood to spurt out of [H]'s chest profusely!</span>")
|
||||
H.adjustOrganLoss(ORGAN_SLOT_HEART, 20)
|
||||
H.bleed_rate += 30
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
@@ -5,14 +5,13 @@
|
||||
/datum/surgery_step/embalming,
|
||||
/datum/surgery_step/close)
|
||||
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
requires_bodypart_type = 0
|
||||
|
||||
/datum/surgery_step/embalming
|
||||
name = "embalming body"
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
|
||||
implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30)
|
||||
implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30)
|
||||
time = 10
|
||||
chems_needed = list("drying_agent", "sterilizine")
|
||||
require_all_chems = FALSE
|
||||
@@ -28,4 +27,4 @@
|
||||
/datum/surgery_step/embalming/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("[user] screws up!", "<span class='warning'>You screwed up!</span>")
|
||||
ADD_TRAIT(target, TRAIT_NOCLONE, MAGIC_TRAIT) //That body is ruined, but still gives miasma
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
113
code/modules/surgery/experimental_dissection.dm
Normal file
113
code/modules/surgery/experimental_dissection.dm
Normal file
@@ -0,0 +1,113 @@
|
||||
#define BASE_HUMAN_REWARD 500
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection
|
||||
name = "Dissection"
|
||||
desc = "A surgical procedure which analyzes the biology of a corpse, and automatically adds new findings to the research database."
|
||||
steps = list(/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/dissection,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
target_mobtypes = list(/mob/living) //Feel free to dissect devils but they're magic.
|
||||
replaced_by = /datum/surgery/advanced/experimental_dissection/adv
|
||||
requires_tech = FALSE
|
||||
var/value_multiplier = 1
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/can_start(mob/user, mob/living/target)
|
||||
. = ..()
|
||||
if(HAS_TRAIT_FROM(target, TRAIT_DISSECTED,"[name]"))
|
||||
return FALSE
|
||||
if(target.stat != DEAD)
|
||||
return FALSE
|
||||
|
||||
/datum/surgery_step/dissection
|
||||
name = "dissection"
|
||||
implements = list(/obj/item/scalpel/augment = 75, /obj/item/scalpel/advanced = 60, /obj/item/scalpel = 45, /obj/item/kitchen/knife = 20, /obj/item/shard = 10)// special tools not only cut down time but also improve probability, doesn't use TOOL_SCALPEL because different scalpels have different probs
|
||||
time = 125
|
||||
silicons_obey_prob = TRUE
|
||||
repeatable = TRUE
|
||||
|
||||
/datum/surgery_step/dissection/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start dissecting [target].</span>",
|
||||
"[user] starts dissecting [target].",
|
||||
"[user] starts dissecting [target].")
|
||||
|
||||
/datum/surgery_step/dissection/proc/check_value(mob/living/target, datum/surgery/advanced/experimental_dissection/ED)
|
||||
var/cost = BASE_HUMAN_REWARD
|
||||
var/multi_surgery_adjust = 0
|
||||
|
||||
//determine bonus applied
|
||||
if(isalienroyal(target))
|
||||
cost = (BASE_HUMAN_REWARD*10)
|
||||
else if(isalienadult(target))
|
||||
cost = (BASE_HUMAN_REWARD*5)
|
||||
else if(ismonkey(target))
|
||||
cost = (BASE_HUMAN_REWARD*0.5)
|
||||
else if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H?.dna?.species)
|
||||
if(isabductor(H))
|
||||
cost = (BASE_HUMAN_REWARD*4)
|
||||
else if(isgolem(H) || iszombie(H))
|
||||
cost = (BASE_HUMAN_REWARD*3)
|
||||
/*else if(isjellyperson(H) || ispodperson(H)) CITADEL CHANGE: jelly and pod being available roundstart shouldn't give additional points
|
||||
cost = (BASE_HUMAN_REWARD*2)*/
|
||||
else
|
||||
cost = (BASE_HUMAN_REWARD * 0.6)
|
||||
|
||||
|
||||
|
||||
//now we do math for surgeries already done (no double dipping!).
|
||||
for(var/i in typesof(/datum/surgery/advanced/experimental_dissection))
|
||||
var/datum/surgery/advanced/experimental_dissection/cringe = i
|
||||
if(HAS_TRAIT_FROM(target,TRAIT_DISSECTED,"[initial(cringe.name)]"))
|
||||
multi_surgery_adjust = max(multi_surgery_adjust,initial(cringe.value_multiplier)) - 1
|
||||
|
||||
multi_surgery_adjust *= cost
|
||||
|
||||
//multiply by multiplier in surgery
|
||||
cost *= ED.value_multiplier
|
||||
return (cost-multi_surgery_adjust)
|
||||
|
||||
/datum/surgery_step/dissection/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/points_earned = check_value(target, surgery)
|
||||
display_results(user, target, "<span class='notice'>You dissect [target], and add your [points_earned] point\s worth of discoveries to the research database!</span>",
|
||||
"[user] dissects [target], discovering [points_earned] point\s of data!",
|
||||
"[user] dissects [target]!")
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points_earned))
|
||||
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
target.apply_damage(80, BRUTE, L)
|
||||
ADD_TRAIT(target, TRAIT_DISSECTED, "[surgery.name]")
|
||||
repeatable = FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You dissect [target], but do not find anything particularly interesting.</span>",
|
||||
"[user] dissects [target], however it seems [user.p_they()] didn't find anything useful.",
|
||||
"[user] dissects [target], but looks a little dissapointed.")
|
||||
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = (round(check_value(target, surgery) * 0.01))))
|
||||
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
target.apply_damage(80, BRUTE, L)
|
||||
return TRUE
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/adv
|
||||
name = "Thorough Dissection"
|
||||
value_multiplier = 2
|
||||
replaced_by = /datum/surgery/advanced/experimental_dissection/exp
|
||||
requires_tech = TRUE
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/exp
|
||||
name = "Experimental Dissection"
|
||||
value_multiplier = 5
|
||||
replaced_by = /datum/surgery/advanced/experimental_dissection/alien
|
||||
requires_tech = TRUE
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/alien
|
||||
name = "Extraterrestrial Dissection"
|
||||
value_multiplier = 10
|
||||
requires_tech = TRUE
|
||||
replaced_by = null
|
||||
|
||||
#undef EXPDIS_FAIL_MSG
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/surgery/eye_surgery
|
||||
name = "Eye surgery"
|
||||
steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/fix_eyes, /datum/surgery_step/close)
|
||||
species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
|
||||
possible_locs = list(BODY_ZONE_PRECISE_EYES)
|
||||
requires_bodypart_type = 0
|
||||
//fix eyes
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user