Merge branch 'master' into Unmodular

This commit is contained in:
Trilbyspaceclone
2019-06-16 20:02:56 -04:00
committed by GitHub
84 changed files with 1388 additions and 617 deletions
@@ -111,5 +111,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/storage/pill_bottle/penis_enlargement = 2,
/obj/item/clothing/shoes/wheelys = 1,
/obj/item/clothing/shoes/kindleKicks = 1,
/obj/item/autosurgeon/penis = 1,
"" = 3
))
+2 -2
View File
@@ -86,13 +86,13 @@
return 0
/datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)
if(D.stat || D.IsKnockdown())
if(D.lying || D.IsKnockdown())
return 0
D.visible_message("<span class='warning'>[A] leg sweeps [D]!</span>", \
"<span class='userdanger'>[A] leg sweeps you!</span>")
playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1)
D.apply_damage(5, BRUTE)
D.Knockdown(40)
D.Knockdown(40, override_hardstun = 0.01, 25)
log_combat(A, D, "leg sweeped")
return 1
+1 -1
View File
@@ -229,4 +229,4 @@
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
..()
owner.grant_language(/datum/language/common)
owner.remove_language(/datum/language/beachbum)
owner.remove_language(/datum/language/beachbum)
+1 -1
View File
@@ -60,7 +60,7 @@
if("Scientist")
heirloom_type = /obj/item/toy/plush/slimeplushie
if("Assistant")
heirloom_type = /obj/item/storage/toolbox/mechanical/old/heirloom
heirloom_type = /obj/item/clothing/gloves/cut/family
if("Chaplain")
heirloom_type = /obj/item/camera/spooky/family
if("Captain")
+3 -3
View File
@@ -542,6 +542,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
return checking.researched_nodes.len >= target_amount
/datum/objective/capture
var/captured_amount = 0
/datum/objective/capture/proc/gen_amount_goal()
target_amount = rand(5,10)
@@ -549,8 +550,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
return target_amount
/datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
var/captured_amount = 0
var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding]
/*var/area/centcom/holding/A = GLOB.areas_by_type[/area/centcom/holding]
for(var/mob/living/carbon/human/M in A)//Humans.
if(M.stat == DEAD)//Dead folks are worth less.
captured_amount+=0.5
@@ -573,7 +573,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
if(M.stat == DEAD)
captured_amount+=1
continue
captured_amount+=2
captured_amount+=2*/ //Removed in favour of adding points on capture, in energy_net_nets.dm
return captured_amount >= target_amount
+2 -1
View File
@@ -1,6 +1,7 @@
#define ARCADE_WEIGHT_TRICK 4
#define ARCADE_WEIGHT_USELESS 2
#define ARCADE_WEIGHT_RARE 1
#define ARCADE_WEIGHT_PLUSH 3
/obj/machinery/computer/arcade
@@ -26,7 +27,7 @@
/obj/item/toy/katana = ARCADE_WEIGHT_TRICK,
/obj/item/toy/minimeteor = ARCADE_WEIGHT_TRICK,
/obj/item/toy/nuke = ARCADE_WEIGHT_TRICK,
/obj/item/toy/plush/random = ARCADE_WEIGHT_USELESS,
/obj/item/toy/plush/random = ARCADE_WEIGHT_PLUSH,
/obj/item/toy/redbutton = ARCADE_WEIGHT_TRICK,
/obj/item/toy/spinningtoy = ARCADE_WEIGHT_TRICK,
/obj/item/toy/sword = ARCADE_WEIGHT_TRICK,
@@ -173,14 +173,15 @@
var/obj/machinery/shuttle_manipulator/M = locate() in GLOB.machines
if(M)
SSshuttle.shuttle_purchased = TRUE
M.unload_preview()
M.load_template(S)
M.existing_shuttle = SSshuttle.emergency
M.action_load(S)
SSshuttle.points -= S.credit_cost
minor_announce("[usr.real_name] has purchased [S.name] for [S.credit_cost] credits." , "Shuttle Purchase")
message_admins("[ADMIN_LOOKUPFLW(usr)] purchased [S.name].")
SSblackbox.record_feedback("text", "shuttle_purchase", 1, "[S.name]")
M.unload_preview()
M.load_template(S)
M.existing_shuttle = SSshuttle.emergency
M.action_load(S)
message_admins("[S.name] loaded, purchased by [usr]")
else
to_chat(usr, "Something went wrong! The shuttle exchange system seems to be down.")
else
+1
View File
@@ -109,6 +109,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
/obj/item/Initialize()
materials = typelist("materials", materials)
@@ -0,0 +1,127 @@
/obj/item/compressionkit
name = "bluespace compression kit"
desc = "An illegally modified BSRPED, capable of reducing the size of most items."
icon = 'icons/obj/tools.dmi'
icon_state = "compression_c"
item_state = "RPED"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
var/charges = 5
// var/damage_multiplier = 0.2 Not in use yet.
var/mode = 0
/obj/item/compressionkit/examine(mob/user)
..()
to_chat(user, "<span class='notice'>It has [charges] charges left. Recharge with bluespace crystals.</span>")
to_chat(user, "<span class='notice'>Use in-hand to swap toggle compress/expand mode (expand mode not yet implemented).</span>")
/obj/item/compressionkit/attack_self(mob/user)
if(mode == 0)
mode = 1
icon_state = "compression_e"
to_chat(user, "<span class='notice'>You switch the compressor to expand mode. This isn't implemented yet, so right now it wont do anything different!</span>")
return
if(mode == 1)
mode = 0
icon_state = "compression_c"
to_chat(user, "<span class='notice'>You switch the compressor to compress mode. Usage will now reduce the size of objects.</span>")
return
else
mode = 0
icon_state = "compression_c"
to_chat(user, "<span class='notice'>Some coder cocked up or an admin broke your compressor. It's been set back to compress mode..</span>")
/obj/item/compressionkit/proc/sparks()
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(5, 1, get_turf(src))
s.start()
/obj/item/compressionkit/suicide_act(mob/living/carbon/M)
M.visible_message("<span class='suicide'>[M] is sticking their head in [src] and turning it on! [M.p_theyre(TRUE)] going to compress their own skull!</span>")
var/obj/item/bodypart/head = M.get_bodypart("head")
if(!head)
return
var/turf/T = get_turf(M)
var/list/organs = M.getorganszone("head") + M.getorganszone("eyes") + M.getorganszone("mouth")
for(var/internal_organ in organs)
var/obj/item/organ/I = internal_organ
I.Remove(M)
I.forceMove(T)
head.drop_limb()
qdel(head)
new M.gib_type(T,1,M.get_static_viruses())
M.add_splatter_floor(T)
playsound(M, 'sound/weapons/flash.ogg', 50, 1)
playsound(M, 'sound/effects/splat.ogg', 50, 1)
return OXYLOSS
/obj/item/compressionkit/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity || !target)
return
else
if(charges == 0)
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
to_chat(user, "<span class='notice'>The bluespace compression kit is out of charges! Recharge it with bluespace crystals.</span>")
return
if(istype(target, /obj/item))
var/obj/item/O = target
if(O.w_class == 1)
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
to_chat(user, "<span class='notice'>[target] cannot be compressed smaller!.</span>")
return
if(O.GetComponent(/datum/component/storage))
to_chat(user, "<span class='notice'>You feel like compressing an item that stores other items would be counterproductive.</span>")
return
if(O.w_class > 1)
playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
user.visible_message("<span class='warning'>[user] is compressing [O] with their bluespace compression kit!</span>")
if(do_mob(user, O, 40) && charges > 0 && O.w_class > 1)
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
sparks()
flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
O.w_class -= 1
// O.force_mult -= damage_multiplier
charges -= 1
to_chat(user, "<span class='notice'>You successfully compress [target]! The compressor now has [charges] charges.</span>")
else
to_chat(user, "<span class='notice'>Anomalous error. Summon a coder.</span>")
if(istype(target, /mob/living))
var/mob/living/victim = target
if(istype(victim, /mob/living/carbon/human))
if(user.zone_selected == "groin") // pp smol. There's probably a smarter way to do this but im retarded. If you have a simpler method let me know.
var/list/organs = victim.getorganszone("groin")
for(var/internal_organ in organs)
if(istype(internal_organ, /obj/item/organ/genital/penis))
var/obj/item/organ/genital/penis/O = internal_organ
playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
victim.visible_message("<span class='warning'>[user] is preparing to shrink [victim]\'s [O.name] with their bluespace compression kit!</span>")
if(do_mob(user, victim, 40) && charges > 0 && O.length > 0)
victim.visible_message("<span class='warning'>[user] has shrunk [victim]\'s [O.name]!</span>")
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
sparks()
flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
charges -= 1
O.length -= 5
if(O.length < 1)
victim.visible_message("<span class='warning'>[user]\'s [O.name] vanishes!</span>")
qdel(O) // no pp for you
else
O.update_size()
O.update_appearance()
/obj/item/compressionkit/attackby(obj/item/I, mob/user, params)
..()
if(istype(I, /obj/item/stack/ore/bluespace_crystal))
var/obj/item/stack/ore/bluespace_crystal/B = I
charges += 2
to_chat(user, "<span class='notice'>You insert [I] into [src]. It now has [charges] charges.</span>")
if(B.amount > 1)
B.amount -= 1
else
qdel(I)
+32
View File
@@ -0,0 +1,32 @@
/obj/item/syndie_glue
name = "bottle of super glue"
desc = "A black market brand of high strength adhesive, rarely sold to the public. Do not ingest."
icon = 'icons/obj/tools.dmi'
icon_state = "glue"
w_class = WEIGHT_CLASS_SMALL
var/uses = 1
/obj/item/syndie_glue/suicide_act(mob/living/carbon/M)
return //todo
/obj/item/syndie_glue/afterattack(atom/target, mob/user, proximity)
. = ..()
if(!proximity || !target)
return
else
if(uses == 0)
to_chat(user, "<span class='warning'>The bottle of glue is empty!</span>")
return
if(istype(target, /obj/item))
var/obj/item/I = target
if(I.item_flags & NODROP)
to_chat(user, "<span class='warning'>[I] is already sticky!</span>")
return
uses -= 1
I.item_flags |= NODROP
I.desc += " It looks sticky."
to_chat(user, "<span class='notice'>You smear the [I] with glue, making it incredibly sticky!</span>")
if(uses == 0)
icon_state = "glue_used"
name = "empty bottle of super glue"
return
+1
View File
@@ -576,6 +576,7 @@
lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
slot_flags = ITEM_SLOT_BELT
reach = 2
attack_verb = list("whipped", "lashed")
hitsound = 'sound/weapons/chainhit.ogg'
+1
View File
@@ -20,6 +20,7 @@
slot_flags = ITEM_SLOT_BELT
force = 14
throwforce = 10
reach = 2
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
hitsound = 'sound/weapons/chainhit.ogg'
+12 -2
View File
@@ -38,9 +38,10 @@
/obj/item/storage/briefcase/lawyer
folder_path = /obj/item/folder/blue
/obj/item/storage/briefcase/lawyer/family
/obj/item/storage/briefcase/lawyer/family
name = "battered briefcase"
desc = "An old briefcase, this one has seen better days in its time. It's clear they don't make them nowadays as good as they used to. The corners are modified with metal trim adding in weight!"
desc = "An old briefcase, this one has seen better days in its time. It's clear they don't make them nowadays as good as they used to. Comes with an added belt clip!"
slot_flags = ITEM_SLOT_BELT
/obj/item/storage/briefcase/lawyer/family/PopulateContents()
new /obj/item/stamp/law(src)
@@ -79,3 +80,12 @@
new /obj/item/ammo_box/magazine/sniper_rounds/soporific(src)
new /obj/item/suppressor/specialoffer(src)
/obj/item/storage/briefcase/medical
name = "medical briefcase"
icon_state = "medbriefcase"
desc = "A white with a blue cross brieface, this is ment to hold medical gear that would not be able to normally fit in a bag."
/obj/item/storage/briefcase/medical/PopulateContents()
new /obj/item/clothing/neck/stethoscope(src)
new /obj/item/healthanalyzer(src)
..() //In case of paperwork
+42 -25
View File
@@ -22,7 +22,10 @@
var/preload_cell_type //if not empty the baton starts with this type of cell
/obj/item/melee/baton/get_cell()
return cell
. = cell
if(iscyborg(loc))
var/mob/living/silicon/robot/R = loc
. = R.get_cell()
/obj/item/melee/baton/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!</span>")
@@ -46,14 +49,18 @@
/obj/item/melee/baton/loaded //this one starts with a cell pre-installed.
preload_cell_type = /obj/item/stock_parts/cell/high
/obj/item/melee/baton/proc/deductcharge(chrgdeductamt, chargecheck = TRUE)
if(!cell)
/obj/item/melee/baton/proc/deductcharge(chrgdeductamt, chargecheck = TRUE, explode = TRUE)
var/obj/item/stock_parts/cell/copper_top = get_cell()
if(!copper_top)
switch_status(FALSE, TRUE)
return FALSE
//Note this value returned is significant, as it will determine
//if a stun is applied or not
. = cell.use(chrgdeductamt)
if(status && (!. || (chargecheck && cell.charge < hitcost * STUNBATON_CHARGE_LENIENCY)))
copper_top.use(min(chrgdeductamt, copper_top.charge), explode)
if(QDELETED(src))
return FALSE
if(status && (!copper_top || !copper_top.charge || (chargecheck && copper_top.charge < (hitcost * STUNBATON_CHARGE_LENIENCY))))
//we're below minimum, turn off
switch_status(FALSE)
@@ -69,7 +76,7 @@
update_icon()
/obj/item/melee/baton/process()
deductcharge(hitcost * 0.004, FALSE)
deductcharge(hitcost * 0.004, FALSE, FALSE)
/obj/item/melee/baton/update_icon()
if(status)
@@ -80,9 +87,10 @@
icon_state = "[initial(name)]"
/obj/item/melee/baton/examine(mob/user)
..()
if(cell)
to_chat(user, "<span class='notice'>\The [src] is [round(cell.percent())]% charged.</span>")
. = ..()
var/obj/item/stock_parts/cell/copper_top = get_cell()
if(copper_top)
to_chat(user, "<span class='notice'>\The [src] is [round(copper_top.percent())]% charged.</span>")
else
to_chat(user, "<span class='warning'>\The [src] does not have a power source installed.</span>")
@@ -92,7 +100,7 @@
if(cell)
to_chat(user, "<span class='notice'>[src] already has a cell.</span>")
else
if(C.maxcharge < hitcost * STUNBATON_CHARGE_LENIENCY)
if(C.maxcharge < (hitcost * STUNBATON_CHARGE_LENIENCY))
to_chat(user, "<span class='notice'>[src] requires a higher capacity cell.</span>")
return
if(!user.transferItemToLoc(W, src))
@@ -112,15 +120,16 @@
return ..()
/obj/item/melee/baton/attack_self(mob/user)
if(cell && cell.charge > hitcost * STUNBATON_CHARGE_LENIENCY)
switch_status(!status)
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
else
var/obj/item/stock_parts/cell/copper_top = get_cell()
if(!copper_top || copper_top.charge < (hitcost * STUNBATON_CHARGE_LENIENCY))
switch_status(FALSE, TRUE)
if(!cell)
if(!copper_top)
to_chat(user, "<span class='warning'>[src] does not have a power source!</span>")
else
to_chat(user, "<span class='warning'>[src] is out of charge.</span>")
else
switch_status(!status)
to_chat(user, "<span class='notice'>[src] is now [status ? "on" : "off"].</span>")
add_fingerprint(user)
/obj/item/melee/baton/attack(mob/M, mob/living/carbon/human/user)
@@ -164,16 +173,21 @@
playsound(L, 'sound/weapons/genhit.ogg', 50, 1)
return FALSE
var/stunpwr = stunforce
if(iscyborg(loc))
var/mob/living/silicon/robot/R = loc
if(!istype(R) || !R.cell || !R.cell.use(hitcost))
var/obj/item/stock_parts/cell/our_cell = get_cell()
if(!our_cell)
switch_status(FALSE)
return FALSE
var/stuncharge = our_cell.charge
deductcharge(hitcost, FALSE)
if(QDELETED(src) || QDELETED(our_cell)) //it was rigged
return FALSE
if(stuncharge < hitcost)
if(stuncharge < (hitcost * STUNBATON_CHARGE_LENIENCY))
L.visible_message("<span class='warning'>[user] has prodded [L] with [src]. Luckily it was out of charge.</span>", \
"<span class='warning'>[user] has prodded you with [src]. Luckily it was out of charge.</span>")
return FALSE
else
var/stuncharge = cell.charge
if(!deductcharge(hitcost, FALSE))
stunpwr *= round(stuncharge/hitcost)
if(stunpwr < stunforce * STUNBATON_CHARGE_LENIENCY)
return FALSE
stunpwr *= round(stuncharge/hitcost, 0.1)
L.Knockdown(stunpwr)
L.adjustStaminaLoss(stunpwr*0.1, affected_zone = (istype(user) ? user.zone_selected : BODY_ZONE_CHEST))//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
@@ -198,14 +212,17 @@
/obj/item/melee/baton/proc/clowning_around(mob/living/user)
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
user.Knockdown(stunforce*3)
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
deductcharge(hitcost)
/obj/item/melee/baton/emp_act(severity)
. = ..()
if (!(. & EMP_PROTECT_SELF))
switch_status(FALSE)
deductcharge(1000 / severity)
if(!iscyborg(loc))
deductcharge(1000 / severity, TRUE, FALSE)
//Makeshift stun baton. Replacement for stun gloves.
/obj/item/melee/baton/cattleprod
+2 -3
View File
@@ -10,15 +10,14 @@
. = ..()
if(!. || !istype(M) || M.anchored)
return
else
SEND_SIGNAL(M, COMSIG_LIVING_MINOR_SHOCK)
do_teleport(M, get_turf(M), 15)
do_teleport(M, get_turf(M), 15)
/obj/item/melee/baton/cattleprod/teleprod/clowning_around(mob/living/user)
user.visible_message("<span class='danger'>[user] accidentally hits [user.p_them()]self with [src]!</span>", \
"<span class='userdanger'>You accidentally hit yourself with [src]!</span>")
SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK)
user.Knockdown(stunforce*3)
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
if(do_teleport(user, get_turf(user), 50))
deductcharge(hitcost)
else
@@ -106,6 +106,7 @@
new /obj/item/radio/headset/headset_sec(src)
new /obj/item/clothing/suit/armor/vest/warden(src)
new /obj/item/clothing/head/warden(src)
new /obj/item/clothing/head/warden/drill(src)
new /obj/item/clothing/head/beret/sec/navywarden(src)
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
new /obj/item/clothing/under/rank/warden/navyblue(src)
+6
View File
@@ -101,6 +101,12 @@
icon_state = "festivus_pole"
desc = "During last year's Feats of Strength the Research Director was able to suplex this passing immobile rod into a planter."
/obj/structure/festivus/anchored
name = "suplexed rod"
desc = "A true feat of strength, almost as good as last year."
icon_state = "anchored_rod"
anchored = TRUE
/obj/structure/flora/tree/dead/Initialize()
icon_state = "tree_[rand(1, 6)]"
. = ..()
@@ -27,7 +27,12 @@ Thus, the two variables affect pump operation are set in New():
construction_type = /obj/item/pipe/directional
pipe_state = "pump"
/obj/machinery/atmospherics/components/binary/pump/examine(mob/user)
. = ..()
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
@@ -37,7 +42,7 @@ Thus, the two variables affect pump operation are set in New():
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
return ..()
/obj/machinery/atmospherics/components/binary/pump/AltClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
@@ -46,7 +51,7 @@ Thus, the two variables affect pump operation are set in New():
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
/obj/machinery/atmospherics/components/binary/pump/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
@@ -28,16 +28,21 @@ Thus, the two variables affect pump operation are set in New():
construction_type = /obj/item/pipe/directional
pipe_state = "volumepump"
/obj/machinery/atmospherics/components/binary/volume_pump/examine(mob/user)
. = ..()
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
/obj/machinery/atmospherics/components/binary/volume_pump/CtrlClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
on = !on
update_icon()
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
investigate_log("Volume Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Volume Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
return ..()
/obj/machinery/atmospherics/components/binary/volume_pump/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
@@ -12,24 +12,29 @@
construction_type = /obj/item/pipe/trinary/flippable
pipe_state = "filter"
/obj/machinery/atmospherics/components/trinary/filter/examine(mob/user)
. = ..()
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
/obj/machinery/atmospherics/components/trinary/filter/CtrlClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
on = !on
update_icon()
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
investigate_log("Filter, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Filter, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
return ..()
/obj/machinery/atmospherics/components/trinary/filter/AltClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
target_pressure = MAX_OUTPUT_PRESSURE
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
investigate_log("Filter, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Filter, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
/obj/machinery/atmospherics/components/trinary/filter/layer1
piping_layer = PIPING_LAYER_MIN
@@ -14,25 +14,31 @@
pipe_state = "mixer"
//node 3 is the outlet, nodes 1 & 2 are intakes
/obj/machinery/atmospherics/components/trinary/mixer/examine(mob/user)
. = ..()
to_chat(user,"<span class='notice'>You can hold <b>Ctrl</b> and click on it to toggle it on and off.</span>")
to_chat(user,"<span class='notice'>You can hold <b>Alt</b> and click on it to maximize its pressure.</span>")
/obj/machinery/atmospherics/components/trinary/mixer/CtrlClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
on = !on
update_icon()
investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
investigate_log("Mixer, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Mixer, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
return ..()
/obj/machinery/atmospherics/components/trinary/mixer/AltClick(mob/user)
var/area/A = get_area(src)
var/turf/T = get_turf(src)
if(user.canUseTopic(src, BE_CLOSE, FALSE,))
target_pressure = MAX_OUTPUT_PRESSURE
to_chat(user,"<span class='notice'>You maximize the pressure on the [src].</span>")
investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
investigate_log("Mixer, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Mixer, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
//node 3 is the outlet, nodes 1 & 2 are intakes
/obj/machinery/atmospherics/components/trinary/mixer/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
+34
View File
@@ -7,6 +7,7 @@
permeability_coefficient = 0.05
item_color="yellow"
resistance_flags = NONE
var/can_be_cut = 1
/obj/item/clothing/gloves/color/fyellow //Cheap Chinese Crap
desc = "These gloves are cheap knockoffs of the coveted ones - no way this can end badly."
@@ -17,6 +18,7 @@
permeability_coefficient = 0.05
item_color="yellow"
resistance_flags = NONE
var/can_be_cut = 1
/obj/item/clothing/gloves/color/fyellow/New()
..()
@@ -30,6 +32,38 @@
. = ..()
siemens_coefficient = pick(0,0,0,0.5,0.5,0.5,0.75)
/obj/item/clothing/gloves/cut
desc = "These gloves would protect the wearer from electric shock.. if the fingers were covered."
name = "fingerless insulated gloves"
icon_state = "yellowcut"
item_state = "yglovescut"
siemens_coefficient = 1
permeability_coefficient = 1
resistance_flags = NONE
transfer_prints = TRUE
/obj/item/clothing/gloves/cut/family
desc = "The old gloves your great grandfather stole from Engineering, many moons ago. They've seen some tough times recently."
name = "fingerless insulated gloves"
/obj/item/clothing/gloves/color/yellow/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/wirecutters))
if(can_be_cut && icon_state == initial(icon_state))//only if not dyed
to_chat(user, "<span class='notice'>You snip the fingertips off of [src].</span>")
I.play_tool_sound(src)
new /obj/item/clothing/gloves/cut(drop_location())
qdel(src)
..()
/obj/item/clothing/gloves/color/fyellow/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/wirecutters))
if(can_be_cut && icon_state == initial(icon_state))//only if not dyed
to_chat(user, "<span class='notice'>You snip the fingertips off of [src].</span>")
I.play_tool_sound(src)
new /obj/item/clothing/gloves/cut(drop_location())
qdel(src)
..()
/obj/item/clothing/gloves/color/black
desc = "These gloves are fire-resistant."
name = "black gloves"
+69
View File
@@ -1,3 +1,8 @@
//defines the drill hat's yelling setting
#define DRILL_DEFAULT "default"
#define DRILL_SHOUTING "shouting"
#define DRILL_YELLING "yelling"
#define DRILL_CANADIAN "canadian"
//Chef
/obj/item/clothing/head/chefhat
@@ -148,6 +153,65 @@
strip_delay = 60
dog_fashion = /datum/dog_fashion/head/warden
/obj/item/clothing/head/warden/drill
name = "warden's campaign hat"
desc = "A special armored campaign hat with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection. Has the letters 'FMJ' enscribed on its side."
icon_state = "wardendrill"
item_state = "wardendrill"
dog_fashion = null
var/mode = DRILL_DEFAULT
/obj/item/clothing/head/warden/drill/screwdriver_act(mob/living/carbon/human/user, obj/item/I)
if(..())
return TRUE
switch(mode)
if(DRILL_DEFAULT)
to_chat(user, "<span class='notice'>You set the voice circuit to the middle position.</span>")
mode = DRILL_SHOUTING
if(DRILL_SHOUTING)
to_chat(user, "<span class='notice'>You set the voice circuit to the last position.</span>")
mode = DRILL_YELLING
if(DRILL_YELLING)
to_chat(user, "<span class='notice'>You set the voice circuit to the first position.</span>")
mode = DRILL_DEFAULT
if(DRILL_CANADIAN)
to_chat(user, "<span class='danger'>You adjust voice circuit but nothing happens, probably because it's broken.</span>")
return TRUE
/obj/item/clothing/head/warden/drill/wirecutter_act(mob/living/user, obj/item/I)
if(mode != DRILL_CANADIAN)
to_chat(user, "<span class='danger'>You broke the voice circuit!</span>")
mode = DRILL_CANADIAN
return TRUE
/obj/item/clothing/head/warden/drill/speechModification(M)
if(copytext(M, 1, 2) != "*")
if(mode == DRILL_DEFAULT)
M = " [M]"
return trim(M)
if(mode == DRILL_SHOUTING)
M = " [M]!"
return trim(M)
if(mode == DRILL_YELLING)
M = " [M]!!"
return trim(M)
if(mode == DRILL_CANADIAN)
M = " [M]"
var/list/canadian_words = strings("canadian_replacement.json", "canadian")
for(var/key in canadian_words)
var/value = canadian_words[key]
if(islist(value))
value = pick(value)
M = replacetextEx(M, " [uppertext(key)]", " [uppertext(value)]")
M = replacetextEx(M, " [capitalize(key)]", " [capitalize(value)]")
M = replacetextEx(M, " [key]", " [value]")
if(prob(30))
M += pick(", eh?", ", EH?")
return trim(M)
/obj/item/clothing/head/beret/sec
name = "security beret"
desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection."
@@ -201,3 +265,8 @@
name = "quartermaster's beret"
desc = "This headwear shows off your Cargonian leadership"
icon_state = "qmberet"
#undef DRILL_DEFAULT
#undef DRILL_SHOUTING
#undef DRILL_YELLING
#undef DRILL_CANADIAN
@@ -749,3 +749,11 @@
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
resistance_flags = NONE
/obj/item/clothing/under/permit
name = "public nudity permit"
desc = "This permit entitles the bearer to conduct their duties without a uniform. Normally issued to furred crewmembers or those with nothing to hide."
icon = 'icons/obj/card.dmi'
icon_state = "fingerprint1"
item_state = "golem" //This is dumb and hacky but was here when I got here.//No, it really isn't. Why make a new blank clothing sprite if we already have one?
body_parts_covered = CHEST|GROIN
+21
View File
@@ -45,6 +45,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
throwforce = 100
density = TRUE
anchored = TRUE
var/mob/living/wizard
var/z_original = 0
var/destination
var/notify = TRUE
@@ -140,3 +141,23 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
H.adjustBruteLoss(160)
if(L && (L.density || prob(10)))
L.ex_act(EXPLODE_HEAVY)
obj/effect/immovablerod/attack_hand(mob/living/user)
if(ishuman(user))
var/mob/living/carbon/human/U = user
if(U.job in list("Research Director"))
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
for(var/mob/M in urange(8, src))
if(!M.stat)
shake_camera(M, 2, 3)
if(wizard)
U.visible_message("<span class='boldwarning'>[src] transforms into [wizard] as [U] suplexes them!</span>", "<span class='warning'>As you grab [src], it suddenly turns into [wizard] as you suplex them!</span>")
to_chat(wizard, "<span class='boldwarning'>You're suddenly jolted out of rod-form as [U] somehow manages to grab you, slamming you into the ground!</span>")
wizard.Stun(60)
wizard.apply_damage(25, BRUTE)
qdel(src)
else
U.visible_message("<span class='boldwarning'>[U] suplexes [src] into the ground!</span>", "<span class='warning'>You suplex [src] into the ground!</span>")
new /obj/structure/festivus/anchored(drop_location())
new /obj/effect/anomaly/flux(drop_location())
qdel(src)
@@ -53,6 +53,7 @@
H.adjust_blurriness(1)
H.visible_message("<span class='warning'>[H] is creamed by [src]!</span>", "<span class='userdanger'>You've been creamed by [src]!</span>")
playsound(H, "desceration", 50, TRUE)
reagents.trans_to(H,15) //Transfers the cream pies total volume of reagents to target on it
if(!H.creamed) // one layer at a time
H.add_overlay(creamoverlay)
H.creamed = TRUE
@@ -268,3 +269,24 @@
bonus_reagents = list("nutriment" = 4, "vitamin" = 6)
tastes = list("mint" = 1, "pie" = 1)
foodtype = GRAIN | FRUIT | SUGAR
/obj/item/reagent_containers/food/snacks/pie/baklava
name = "baklava"
desc = "A delightful healthy snake made of nut layers with thin bread."
icon_state = "baklava"
slice_path = /obj/item/reagent_containers/food/snacks/baklavaslice
slices_num = 6
bonus_reagents = list("nutriment" = 2, "vitamin" = 6)
tastes = list("nuts" = 1, "pie" = 1)
foodtype = GRAIN
/obj/item/reagent_containers/food/snacks/baklavaslice
name = "baklava dish"
desc = "A portion delightful healthy snake made of nut layers with thin bread"
icon = 'icons/obj/food/piecake.dmi'
icon_state = "baklavaslice"
trash = /obj/item/trash/plate
filling_color = "#1E90FF"
list_reagents = list("nutriment" = 2, "vitamins" = 4)
tastes = list("nuts" = 1, "pie" = 1)
foodtype = GRAIN
@@ -159,3 +159,13 @@
)
result = /obj/item/reagent_containers/food/snacks/pie/frostypie
subcategory = CAT_PIE
/datum/crafting_recipe/food/baklava
name = "Baklava pie"
reqs = list(
/obj/item/reagent_containers/food/snacks/butter = 1,
/obj/item/reagent_containers/food/snacks/tortilla = 4, //Layers
/obj/item/seeds/wheat/oat = 3
)
result = /obj/item/reagent_containers/food/snacks/pie/baklava
subcategory = CAT_PIE
@@ -144,7 +144,12 @@ GLOBAL_LIST(labor_sheet_values)
points += inp.point_value * inp.amount
..()
/obj/machinery/mineral/stacking_machine/laborstacker/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/stack/sheet) && user.canUnEquip(I))
var/obj/item/stack/sheet/inp = I
points += inp.point_value * inp.amount
return ..()
/**********************Point Lookup Console**************************/
/obj/machinery/mineral/labor_points_checker
name = "points checking console"
@@ -502,10 +502,13 @@ GLOBAL_LIST_EMPTY(roundstart_races)
else
standing += mutable_appearance(undershirt.icon, undershirt.icon_state, -BODY_LAYER)
if(H.socks && H.get_num_legs(FALSE) >= 2 && !(DIGITIGRADE in species_traits))
if(H.socks && H.get_num_legs(FALSE) >= 2)
var/datum/sprite_accessory/socks/socks = GLOB.socks_list[H.socks]
if(socks)
standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
if(DIGITIGRADE in species_traits)
standing += mutable_appearance(socks.icon, socks.icon_state + "_d", -BODY_LAYER)
else
standing += mutable_appearance(socks.icon, socks.icon_state, -BODY_LAYER)
if(standing.len)
H.overlays_standing[BODY_LAYER] = standing
+12
View File
@@ -124,6 +124,18 @@
if(user == anchored || !isturf(user.loc))
return FALSE
//pacifist vore check.
if(user.pulling && HAS_TRAIT(user, TRAIT_PACIFISM) && user.voremode) //they can only do heals, noisy guts, absorbing (technically not harm)
if(ismob(user.pulling))
var/mob/P = user.pulling
if(src != user)
to_chat(user, "<span class='notice'>You can't risk digestion!</span>")
return FALSE
else
user.vore_attack(user, P, user)
return
//normal vore check.
if(user.pulling && user.grab_state == GRAB_AGGRESSIVE && user.voremode)
if(ismob(user.pulling))
var/mob/P = user.pulling
@@ -348,7 +348,7 @@
if(vore_active)
if(isliving(target))
var/mob/living/L = target
if(L.Adjacent(src) && L.devourable) // aggressive check to ensure vore attacks can be made
if(!client && L.Adjacent(src) && L.devourable) // aggressive check to ensure vore attacks can be made
if(prob(voracious_chance))
vore_attack(src,L,src)
else
+2
View File
@@ -37,6 +37,8 @@
var/mindrain = 200
var/maxdrain = 400
var/stunforce = 140 //Same as stunbaton, adjustable.
/obj/item/clothing/gloves/space_ninja/Touch(atom/A,proximity)
if(!candrain || draining)
@@ -14,7 +14,7 @@ It is possible to destroy the net by the occupant or someone else.
mouse_opacity = MOUSE_OPACITY_ICON//So you can hit it with stuff.
anchored = TRUE//Can't drag/grab the net.
layer = ABOVE_ALL_MOB_LAYER
max_integrity = 25 //How much health it has.
max_integrity = 50 //How much health it has.
can_buckle = 1
buckle_lying = 0
buckle_prevents_pull = TRUE
@@ -59,6 +59,41 @@ It is possible to destroy the net by the occupant or someone else.
continue
H.dropItemToGround(W)
var/datum/antagonist/antag_datum
for(var/datum/antagonist/ninja/AD in GLOB.antagonists) //Because only ninjas get capture objectives; They're not doable without the suit.
if(AD.owner == master)
antag_datum = AD
break
for(var/datum/objective/capture/capture in antag_datum)
if(istype(affecting, /mob/living/carbon/human)) //Humans.
if(affecting.stat == DEAD)//Dead folks are worth less.
capture.captured_amount+=0.5
continue
capture.captured_amount+=1
if(istype(affecting, /mob/living/carbon/monkey)) //Monkeys are almost worthless, you failure.
capture.captured_amount+=0.1
if(istype(affecting, /mob/living/carbon/alien/larva)) //Larva are important for research.
if(affecting.stat == DEAD)
capture.captured_amount+=0.5
continue
capture.captured_amount+=1
if(istype(affecting, /mob/living/carbon/alien/humanoid)) //Aliens are worth twice as much as humans.
if(istype(affecting, /mob/living/carbon/alien/humanoid/royal/queen)) //Queens are worth three times as much as humans.
if(affecting.stat == DEAD)
capture.captured_amount+=1.5
else
capture.captured_amount+=3
continue
if(affecting.stat == DEAD)
capture.captured_amount+=1
continue
capture.captured_amount+=2
affecting.revive(1, 1) //Basically a revive and full heal, including limbs/organs
//In case people who have been captured dead want to hang out at the holding area
playsound(affecting, 'sound/effects/sparks4.ogg', 50, 1)
new /obj/effect/temp_visual/dir_setting/ninja/phase/out(affecting.drop_location(), affecting.dir)
@@ -73,8 +108,9 @@ It is possible to destroy the net by the occupant or someone else.
playsound(affecting, 'sound/effects/sparks2.ogg', 50, 1)
new /obj/effect/temp_visual/dir_setting/ninja/phase(affecting.drop_location(), affecting.dir)
/obj/structure/energy_net/attack_paw(mob/user)
return attack_hand()
/obj/attack_alien(mob/living/carbon/alien/humanoid/user)
if(attack_generic(user, 15, BRUTE, "melee", 0)) //Aliens normally deal 60 damage to structures. They'd one-shot nets without this.
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
/obj/structure/energy_net/user_buckle_mob(mob/living/M, mob/living/user)
return//We only want our target to be buckled
@@ -2,21 +2,34 @@
//Allows the ninja to kidnap people
/obj/item/clothing/suit/space/space_ninja/proc/ninjanet()
var/mob/living/carbon/human/H = affecting
var/mob/living/carbon/C = input("Select who to capture:","Capture who?",null) as null|mob in oview(H)
var/mob/living/carbon/C
//If there's only one valid target, let's actually try to capture it, rather than forcing
//the user to fiddle with the dialog displaying a list of one
//Also, let's make this smarter and not list mobs you can't currently net.
var/Candidates[]
for(var/mob/mob in oview(H))
if(!mob.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame.
//to_chat(H, "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>")
continue
if(locate(/obj/structure/energy_net) in get_turf(mob))//Check if they are already being affected by an energy net.
//to_chat(H, "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>")
continue
for(var/turf/T in getline(get_turf(H), get_turf(mob)))
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
//to_chat(H, "<span class='warning'>You may not use an energy net through solid obstacles!</span>")
continue
Candidates+=mob
if(Candidates.len == 1)
C = Candidates[1]
else
C = input("Select who to capture:","Capture who?",null) as null|mob in Candidates
if(QDELETED(C)||!(C in oview(H)))
return 0
if(!C.client)//Monkeys without a client can still step_to() and bypass the net. Also, netting inactive people is lame.
to_chat(H, "<span class='warning'>[C.p_they(TRUE)] will bring no honor to your Clan!</span>")
return
if(locate(/obj/structure/energy_net) in get_turf(C))//Check if they are already being affected by an energy net.
to_chat(H, "<span class='warning'>[C.p_they(TRUE)] are already trapped inside an energy net!</span>")
return
for(var/turf/T in getline(get_turf(H), get_turf(C)))
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
to_chat(H, "<span class='warning'>You may not use an energy net through solid obstacles!</span>")
return
if(!ninjacost(200,N_STEALTH_CANCEL))
H.Beam(C,"n_beam",time=15)
H.say("Get over here!", forced = "ninja net")
+16 -1
View File
@@ -261,4 +261,19 @@ They *could* go in their appropriate files, but this is supposed to be modular
spark_system.set_up(5, 0, loc)
playsound(src, "sparks", 50, 1)
visible_message("<span class='danger'>[H] electrocutes [src] with [H.p_their()] touch!</span>", "<span class='userdanger'>[H] electrocutes you with [H.p_their()] touch!</span>")
electrocute_act(25, H)
electrocute_act(15, H)
Knockdown(G.stunforce)
adjustStaminaLoss(G.stunforce*0.1, affected_zone = (istype(H) ? H.zone_selected : BODY_ZONE_CHEST))
apply_effect(EFFECT_STUTTER, G.stunforce)
SEND_SIGNAL(src, COMSIG_LIVING_MINOR_SHOCK)
lastattacker = H.real_name
lastattackerckey = H.ckey
log_combat(H, src, "stunned")
playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1)
if(ishuman(src))
var/mob/living/carbon/human/Hsrc = src
Hsrc.forcesay(GLOB.hit_appends)
+5 -5
View File
@@ -26,7 +26,8 @@
/obj/item/stock_parts/cell/Initialize(mapload, override_maxcharge)
. = ..()
START_PROCESSING(SSobj, src)
if(self_recharge)
START_PROCESSING(SSobj, src)
create_reagents(5, INJECTABLE | DRAINABLE)
if (override_maxcharge)
maxcharge = override_maxcharge
@@ -69,8 +70,8 @@
return 100*charge/maxcharge
// use power from a cell
/obj/item/stock_parts/cell/use(amount)
if(rigged && amount > 0)
/obj/item/stock_parts/cell/use(amount, can_explode = TRUE)
if(rigged && amount > 0 && can_explode)
explode()
return 0
if(charge < amount)
@@ -103,9 +104,8 @@
return (FIRELOSS)
/obj/item/stock_parts/cell/on_reagent_change(changetype)
rigged = !isnull(reagents.has_reagent("plasma", 5)) //has_reagent returns the reagent datum
..()
rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum
/obj/item/stock_parts/cell/proc/explode()
var/turf/T = get_turf(src.loc)
+517 -475
View File
@@ -1,475 +1,517 @@
/////////////////////////////////////////
/////////////////HUDs////////////////////
/////////////////////////////////////////
/datum/design/health_hud
name = "Health Scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
id = "health_hud"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/hud/health
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/health_hud_prescription
name = "Prescription Health Scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens."
id = "health_hud_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/hud/health/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/health_hud_night
name = "Night Vision Health Scanner HUD"
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
id = "health_hud_night"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/hud/health/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/security_hud
name = "Security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
id = "security_hud"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/hud/security
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/security_hud_prescription
name = "Prescription Security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens."
id = "security_hud_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/hud/security/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/security_hud_night
name = "Night Vision Security HUD"
desc = "A heads-up display which provides id data and vision in complete darkness."
id = "security_hud_night"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
build_path = /obj/item/clothing/glasses/hud/security/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/diagnostic_hud
name = "Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery."
id = "diagnostic_hud"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/hud/diagnostic
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/diagnostic_hud_prescription
name = "Prescription Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens."
id = "diagnostic_hud_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350)
build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/diagnostic_hud_night
name = "Night Vision Diagnostic HUD"
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
id = "diagnostic_hud_night"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/sci_goggles
name = "Science Goggles"
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
id = "scigoggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/science
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/mesons
name = "Optical Meson Scanners"
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
id = "mesons"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/meson
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/mesons_prescription
name = "Prescription Optical Meson Scanners"
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design."
id = "mesons_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/meson/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/engine_goggles
name = "Engineering Scanner Goggles"
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
id = "engine_goggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
build_path = /obj/item/clothing/glasses/meson/engine
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/engine_goggles_prescription
name = "Prescription Engineering Scanner Goggles"
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
id = "engine_goggles_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/meson/engine/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/tray_goggles
name = "Optical T-Ray Scanners"
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
id = "tray_goggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/meson/engine/tray
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/tray_goggles_prescription
name = "Prescription Optical T-Ray Scanners"
desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
id = "tray_goggles_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150)
build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/nvgmesons
name = "Night Vision Optical Meson Scanners"
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
id = "nvgmesons"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
build_path = /obj/item/clothing/glasses/meson/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
/datum/design/night_vision_goggles
name = "Night Vision Goggles"
desc = "Goggles that let you see through darkness unhindered."
id = "night_visision_goggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
build_path = /obj/item/clothing/glasses/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
/datum/design/night_vision_goggles_glasses
name = "Prescription Night Vision Goggles"
desc = "Goggles that let you see through darkness unhindered. Corrects vision."
id = "night_visision_goggles_glasses"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
build_path = /obj/item/clothing/glasses/night/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING
/////////////////////////////////////////
//////////////////Misc///////////////////
/////////////////////////////////////////
/datum/design/welding_mask
name = "Welding Gas Mask"
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
id = "weldingmask"
build_type = PROTOLATHE
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
build_path = /obj/item/clothing/mask/gas/welding
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/portaseeder
name = "Portable Seed Extractor"
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
id = "portaseeder"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
build_path = /obj/item/storage/bag/plants/portaseeder
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/air_horn
name = "Air Horn"
desc = "Damn son, where'd you find this?"
id = "air_horn"
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
build_path = /obj/item/bikehorn/airhorn
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK!
/datum/design/magboots
name = "Magnetic Boots"
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
id = "magboots"
build_type = PROTOLATHE
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
build_path = /obj/item/clothing/shoes/magboots
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/diskplantgene
name = "Plant Data Disk"
desc = "A disk for storing plant genetic data."
id = "diskplantgene"
build_type = PROTOLATHE
materials = list(MAT_METAL=200, MAT_GLASS=100)
build_path = /obj/item/disk/plantgene
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/roastingstick
name = "Advanced roasting stick"
desc = "A roasting stick for cooking sausages in exotic ovens."
id = "roastingstick"
build_type = PROTOLATHE
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_BLUESPACE = 250)
build_path = /obj/item/melee/roastingstick
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/locator
name = "Bluespace locator"
desc = "Used to track portable teleportation beacons and targets with embedded tracking implants."
id = "locator"
build_type = PROTOLATHE
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_SILVER = 500)
build_path = /obj/item/locator
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/////////////////////////////////////////
////////////Janitor Designs//////////////
/////////////////////////////////////////
/datum/design/advmop
name = "Advanced Mop"
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
id = "advmop"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
build_path = /obj/item/mop/advanced
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/blutrash
name = "Trashbag of Holding"
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
id = "blutrash"
build_type = PROTOLATHE
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
build_path = /obj/item/storage/bag/trash/bluespace
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/buffer
name = "Floor Buffer Upgrade"
desc = "A floor buffer that can be attached to vehicular janicarts."
id = "buffer"
build_type = PROTOLATHE
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
build_path = /obj/item/janiupgrade
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/////////////////////////////////////////
////////////Holosign Designs/////////////
/////////////////////////////////////////
/datum/design/holosign
name = "Holographic Sign Projector"
desc = "A holograpic projector used to project various warning signs."
id = "holosign"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/holosign_creator
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/holosignsec
name = "Security Holobarrier Projector"
desc = "A holographic projector that creates holographic security barriers."
id = "holosignsec"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
build_path = /obj/item/holosign_creator/security
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/holosignengi
name = "Engineering Holobarrier Projector"
desc = "A holographic projector that creates holographic engineering barriers."
id = "holosignengi"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
build_path = /obj/item/holosign_creator/engineering
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/holosignatmos
name = "ATMOS Holofan Projector"
desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions."
id = "holosignatmos"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
build_path = /obj/item/holosign_creator/atmos
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/forcefield_projector
name = "Forcefield Projector"
desc = "A device which can project temporary forcefields to seal off an area."
id = "forcefield_projector"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2500, MAT_GLASS = 1000)
build_path = /obj/item/forcefield_projector
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
///////////////////////////////
////////////Tools//////////////
///////////////////////////////
/datum/design/exwelder
name = "Experimental Welding Tool"
desc = "An experimental welder capable of self-fuel generation."
id = "exwelder"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
build_path = /obj/item/weldingtool/experimental
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/handdrill
name = "Hand Drill"
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
id = "handdrill"
build_type = PROTOLATHE
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
build_path = /obj/item/screwdriver/power
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/jawsoflife
name = "Jaws of Life"
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
build_path = /obj/item/crowbar/power
build_type = PROTOLATHE
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienwrench
name = "Alien Wrench"
desc = "An advanced wrench obtained through Abductor technology."
id = "alien_wrench"
build_path = /obj/item/wrench/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienwirecutters
name = "Alien Wirecutters"
desc = "Advanced wirecutters obtained through Abductor technology."
id = "alien_wirecutters"
build_path = /obj/item/wirecutters/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienscrewdriver
name = "Alien Screwdriver"
desc = "An advanced screwdriver obtained through Abductor technology."
id = "alien_screwdriver"
build_path = /obj/item/screwdriver/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/aliencrowbar
name = "Alien Crowbar"
desc = "An advanced crowbar obtained through Abductor technology."
id = "alien_crowbar"
build_path = /obj/item/crowbar/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienwelder
name = "Alien Welding Tool"
desc = "An advanced welding tool obtained through Abductor technology."
id = "alien_welder"
build_path = /obj/item/weldingtool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienmultitool
name = "Alien Multitool"
desc = "An advanced multitool obtained through Abductor technology."
id = "alien_multitool"
build_path = /obj/item/multitool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/anomaly_neutralizer
name = "Anomaly Neutralizer"
desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine."
id = "anomaly_neutralizer"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GOLD = 2000, MAT_PLASMA = 5000, MAT_URANIUM = 2000)
build_path = /obj/item/anomaly_neutralizer
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/////////////////////////////////////////
////////////Armour///////////////////////
/////////////////////////////////////////
/datum/design/reactive_armour
name = "Reactive Armour Shell"
desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user."
id = "reactive_armour"
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
build_path = /obj/item/reactive_armour_shell
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/////////////////////////////////////////
/////////////////HUDs////////////////////
/////////////////////////////////////////
/datum/design/health_hud
name = "Health Scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status."
id = "health_hud"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/hud/health
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/health_hud_prescription
name = "Prescription Health Scanner HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their health status. This one has a prescription lens."
id = "health_hud_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/hud/health/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/health_hud_night
name = "Night Vision Health Scanner HUD"
desc = "An advanced medical head-up display that allows doctors to find patients in complete darkness."
id = "health_hud_night"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/hud/health/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/security_hud
name = "Security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status."
id = "security_hud"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/hud/security
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/security_hud_prescription
name = "Prescription Security HUD"
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status. This one has a prescription lens."
id = "security_hud_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/hud/security/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/security_hud_night
name = "Night Vision Security HUD"
desc = "A heads-up display which provides id data and vision in complete darkness."
id = "security_hud_night"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_GOLD = 350)
build_path = /obj/item/clothing/glasses/hud/security/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/diagnostic_hud
name = "Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery."
id = "diagnostic_hud"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/hud/diagnostic
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/diagnostic_hud_prescription
name = "Prescription Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery. This one has a prescription lens."
id = "diagnostic_hud_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 350)
build_path = /obj/item/clothing/glasses/hud/diagnostic/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/diagnostic_hud_night
name = "Night Vision Diagnostic HUD"
desc = "Upgraded version of the diagnostic HUD designed to function during a power failure."
id = "diagnostic_hud_night"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_URANIUM = 1000, MAT_PLASMA = 300)
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/sci_goggles
name = "Science Goggles"
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
id = "scigoggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/science
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/mesons
name = "Optical Meson Scanners"
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition."
id = "mesons"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/meson
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/mesons_prescription
name = "Prescription Optical Meson Scanners"
desc = "Used by engineering and mining staff to see basic structural and terrain layouts through walls, regardless of lighting condition. Prescription lens has been added into this design."
id = "mesons_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/meson/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/engine_goggles
name = "Engineering Scanner Goggles"
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes."
id = "engine_goggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100)
build_path = /obj/item/clothing/glasses/meson/engine
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/engine_goggles_prescription
name = "Prescription Engineering Scanner Goggles"
desc = "Goggles used by engineers. The Meson Scanner mode lets you see basic structural and terrain layouts through walls, regardless of lighting condition. The T-ray Scanner mode lets you see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
id = "engine_goggles_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_PLASMA = 100, MAT_SILVER = 350)
build_path = /obj/item/clothing/glasses/meson/engine/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/tray_goggles
name = "Optical T-Ray Scanners"
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
id = "tray_goggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/meson/engine/tray
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/tray_goggles_prescription
name = "Prescription Optical T-Ray Scanners"
desc = "Used by engineering staff to see underfloor objects such as cables and pipes. Prescription lens has been added into this design."
id = "tray_goggles_prescription"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 150)
build_path = /obj/item/clothing/glasses/meson/engine/tray/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/nvgmesons
name = "Night Vision Optical Meson Scanners"
desc = "Prototype meson scanners fitted with an extra sensor which amplifies the visible light spectrum and overlays it to the UHD display."
id = "nvgmesons"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
build_path = /obj/item/clothing/glasses/meson/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
/datum/design/night_vision_goggles
name = "Night Vision Goggles"
desc = "Goggles that let you see through darkness unhindered."
id = "night_visision_goggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
build_path = /obj/item/clothing/glasses/night
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY
/datum/design/night_vision_goggles_glasses
name = "Prescription Night Vision Goggles"
desc = "Goggles that let you see through darkness unhindered. Corrects vision."
id = "night_visision_goggles_glasses"
build_type = PROTOLATHE
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_PLASMA = 350, MAT_URANIUM = 1000)
build_path = /obj/item/clothing/glasses/night/prescription
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_ENGINEERING
/////////////////////////////////////////
//////////////////Misc///////////////////
/////////////////////////////////////////
/datum/design/welding_mask
name = "Welding Gas Mask"
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
id = "weldingmask"
build_type = PROTOLATHE
materials = list(MAT_METAL = 3000, MAT_GLASS = 1000)
build_path = /obj/item/clothing/mask/gas/welding
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/portaseeder
name = "Portable Seed Extractor"
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
id = "portaseeder"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
build_path = /obj/item/storage/bag/plants/portaseeder
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/air_horn
name = "Air Horn"
desc = "Damn son, where'd you find this?"
id = "air_horn"
build_type = PROTOLATHE
materials = list(MAT_METAL = 4000, MAT_BANANIUM = 1000)
build_path = /obj/item/bikehorn/airhorn
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ALL //HONK!
/datum/design/magboots
name = "Magnetic Boots"
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
id = "magboots"
build_type = PROTOLATHE
materials = list(MAT_METAL = 4500, MAT_SILVER = 1500, MAT_GOLD = 2500)
build_path = /obj/item/clothing/shoes/magboots
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/sci_goggles
name = "Science Goggles"
desc = "Goggles fitted with a portable analyzer capable of determining the research worth of an item or components of a machine."
id = "scigoggles"
build_type = PROTOLATHE
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
build_path = /obj/item/clothing/glasses/science
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
/datum/design/diskplantgene
name = "Plant Data Disk"
desc = "A disk for storing plant genetic data."
id = "diskplantgene"
build_type = PROTOLATHE
materials = list(MAT_METAL=200, MAT_GLASS=100)
build_path = /obj/item/disk/plantgene
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/roastingstick
name = "Advanced roasting stick"
desc = "A roasting stick for cooking sausages in exotic ovens."
id = "roastingstick"
build_type = PROTOLATHE
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_BLUESPACE = 250)
build_path = /obj/item/melee/roastingstick
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/locator
name = "Bluespace locator"
desc = "Used to track portable teleportation beacons and targets with embedded tracking implants."
id = "locator"
build_type = PROTOLATHE
materials = list(MAT_METAL=1000, MAT_GLASS=500, MAT_SILVER = 500)
build_path = /obj/item/locator
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/////////////////////////////////////////
////////////Janitor Designs//////////////
/////////////////////////////////////////
/datum/design/advmop
name = "Advanced Mop"
desc = "An upgraded mop with a large internal capacity for holding water or other cleaning chemicals."
id = "advmop"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2500, MAT_GLASS = 200)
build_path = /obj/item/mop/advanced
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/blutrash
name = "Trashbag of Holding"
desc = "An advanced trash bag with bluespace properties; capable of holding a plethora of garbage."
id = "blutrash"
build_type = PROTOLATHE
materials = list(MAT_GOLD = 1500, MAT_URANIUM = 250, MAT_PLASMA = 1500)
build_path = /obj/item/storage/bag/trash/bluespace
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/buffer
name = "Floor Buffer Upgrade"
desc = "A floor buffer that can be attached to vehicular janicarts."
id = "buffer"
build_type = PROTOLATHE
materials = list(MAT_METAL = 3000, MAT_GLASS = 200)
build_path = /obj/item/janiupgrade
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/////////////////////////////////////////
////////////Holosign Designs//////////////
/////////////////////////////////////////
/datum/design/holosign
name = "Holographic Sign Projector"
desc = "A holograpic projector used to project various warning signs."
id = "holosign"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GLASS = 1000)
build_path = /obj/item/holosign_creator
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
/datum/design/holosignsec
name = "Security Holobarrier Projector"
desc = "A holographic projector that creates holographic security barriers."
id = "holosignsec"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
build_path = /obj/item/holosign_creator/security
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
/datum/design/holosignengi
name = "Engineering Holobarrier Projector"
desc = "A holographic projector that creates holographic engineering barriers."
id = "holosignengi"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
build_path = /obj/item/holosign_creator/engineering
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/holosignatmos
name = "ATMOS Holofan Projector"
desc = "A holographic projector that creates holographic barriers that prevent changes in atmospheric conditions."
id = "holosignatmos"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000, MAT_GOLD = 1000, MAT_SILVER = 1000)
build_path = /obj/item/holosign_creator/atmos
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/forcefield_projector
name = "Forcefield Projector"
desc = "A device which can project temporary forcefields to seal off an area."
id = "forcefield_projector"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2500, MAT_GLASS = 1000)
build_path = /obj/item/forcefield_projector
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
///////////////////////////////
////////////Tools//////////////
///////////////////////////////
/datum/design/exwelder
name = "Experimental Welding Tool"
desc = "An experimental welder capable of self-fuel generation."
id = "exwelder"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1000, MAT_GLASS = 500, MAT_PLASMA = 1500, MAT_URANIUM = 200)
build_path = /obj/item/weldingtool/experimental
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/handdrill
name = "Hand Drill"
desc = "A small electric hand drill with an interchangeable screwdriver and bolt bit"
id = "handdrill"
build_type = PROTOLATHE
materials = list(MAT_METAL = 3500, MAT_SILVER = 1500, MAT_TITANIUM = 2500)
build_path = /obj/item/screwdriver/power
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/jawsoflife
name = "Jaws of Life"
desc = "A small, compact Jaws of Life with an interchangeable pry jaws and cutting jaws"
id = "jawsoflife" // added one more requirment since the Jaws of Life are a bit OP
build_path = /obj/item/crowbar/power
build_type = PROTOLATHE
materials = list(MAT_METAL = 4500, MAT_SILVER = 2500, MAT_TITANIUM = 3500)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienwrench
name = "Alien Wrench"
desc = "An advanced wrench obtained through Abductor technology."
id = "alien_wrench"
build_path = /obj/item/wrench/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienwirecutters
name = "Alien Wirecutters"
desc = "Advanced wirecutters obtained through Abductor technology."
id = "alien_wirecutters"
build_path = /obj/item/wirecutters/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienscrewdriver
name = "Alien Screwdriver"
desc = "An advanced screwdriver obtained through Abductor technology."
id = "alien_screwdriver"
build_path = /obj/item/screwdriver/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/aliencrowbar
name = "Alien Crowbar"
desc = "An advanced crowbar obtained through Abductor technology."
id = "alien_crowbar"
build_path = /obj/item/crowbar/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 1000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienwelder
name = "Alien Welding Tool"
desc = "An advanced welding tool obtained through Abductor technology."
id = "alien_welder"
build_path = /obj/item/weldingtool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/alienmultitool
name = "Alien Multitool"
desc = "An advanced multitool obtained through Abductor technology."
id = "alien_multitool"
build_path = /obj/item/multitool/abductor
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_SILVER = 2500, MAT_PLASMA = 5000, MAT_TITANIUM = 2000, MAT_DIAMOND = 2000)
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/anomaly_neutralizer
name = "Anomaly Neutralizer"
desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine."
id = "anomaly_neutralizer"
build_type = PROTOLATHE
materials = list(MAT_METAL = 2000, MAT_GOLD = 2000, MAT_PLASMA = 5000, MAT_URANIUM = 2000)
build_path = /obj/item/anomaly_neutralizer
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/////////////////////////////////////////
////////////Armour///////////////////////
/////////////////////////////////////////
/datum/design/reactive_armour
name = "Reactive Armour Shell"
desc = "An experimental suit of armour capable of utilizing an implanted anomaly core to protect the user."
id = "reactive_armour"
build_type = PROTOLATHE
materials = list(MAT_METAL = 10000, MAT_DIAMOND = 5000, MAT_URANIUM = 8000, MAT_SILVER = 4500, MAT_GOLD = 5000)
build_path = /obj/item/reactive_armour_shell
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
/////////////////////////////////////////
////////////Meteor///////////////////////
/////////////////////////////////////////
/datum/design/meteor_defence
name = "Meteor Defence"
desc = "A blue print of a early model of the Meteor defence turret."
id = "meteor_defence"
build_type = PROTOLATHE
materials = list(MAT_METAL = 50000, MAT_GLASS = 50000, MAT_SILVER = 8500, MAT_GOLD = 8500, MAT_TITANIUM = 7500, MAT_URANIUM = 7500)
build_path = /obj/machinery/satellite/meteor_shield/sci
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/meteor_disk
name = "Meteor Defence Upgrade Disk"
desc = "A disk containing debugging programming to solve and monitor meteors more effectively."
id = "meteor_disk"
build_type = PROTOLATHE
materials = list(MAT_METAL = 1500, MAT_GLASS = 1500, MAT_SILVER = 2500, MAT_GOLD = 1000)
build_path = /obj/item/disk/meteor
category = list("Electronics")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/design/board/meteor_console
name = "Computer Design (Meteor Satellite Console)"
desc = "Allows for the construction of circuit boards used to build a new Meteor Satellite monitor console."
id = "meteor_console"
build_path = /obj/item/circuitboard/computer/sat_control
category = list("Computer Boards")
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
+9
View File
@@ -20,3 +20,12 @@
/obj/item/disk/tech_disk/debug/Initialize()
. = ..()
stored_research = new /datum/techweb/admin
/obj/item/disk/tech_disk/illegal
name = "Illegal technology disk"
desc = "A technology disk containing schematics for syndicate inspired equipment."
materials = list()
/obj/item/disk/tech_disk/illegal/Initialize()
. = ..()
stored_research = new /datum/techweb/syndicate
@@ -41,6 +41,14 @@
research_points[i] = INFINITY
hidden_nodes = list()
/datum/techweb/syndicate
id = "SYNDICATE"
organization = "Syndicate"
/datum/techweb/syndicate/New()
var/datum/techweb_node/syndicate_basic/Node = new()
research_node(Node, TRUE)
/datum/techweb/science //Global science techweb for RND consoles.
id = "SCIENCE"
organization = "Nanotrasen"
@@ -203,6 +203,24 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
export_price = 5000
/datum/techweb_node/basic_meteor_defense
id = "basic_meteor_defense"
display_name = "Meteor Defense Research"
description = "Unlock the potential of the mysterious of why CC decided to not build these around the station themselves."
prereq_ids = list("adv_engi", "high_efficiency")
design_ids = list("meteor_defence", "meteor_console")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
export_price = 5000
//datum/techweb_node/adv_meteor_defense
//id = "adv_meteor_defense"
//display_name = "Meteor Defense Research"
//description = "New and improved coding and lock on tech for meteor defence!"
//prereq_ids = list("basic_meteor_defense", "adv_datatheory", "emp_adv")
//design_ids = list("meteor_disk")
//research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
//export_price = 5000
/datum/techweb_node/computer_board_gaming
id = "computer_board_gaming"
display_name = "Games and Toys"
@@ -28,7 +28,6 @@
/obj/effect/immovablerod/wizard
var/max_distance = 13
var/damage_bonus = 0
var/mob/living/wizard
var/turf/start_turf
notify = FALSE
+26 -1
View File
@@ -134,6 +134,31 @@
speed_process = TRUE
var/kill_range = 14
/obj/machinery/satellite/meteor_shield/sci
name = "\improper Meteor Shield Satellite"
desc = "A station made meteor point-defense satellite."
mode = "M-SHIELD"
/obj/item/disk/meteor
name = "Meteor Shield Upgrade Disk"
desc = "A floppy disk that allows meteor shields to fire at longer ranges and lowers meteor drawing from gravitational fields.."
/obj/machinery/satellite/meteor_shield/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/disk/meteor))
to_chat(user, "<span class='notice'>The disk uploads better tracking and rang modification software.</span>")
kill_range = 17
else
return ..()
/obj/machinery/satellite/meteor_shield/sci/toggle(user)
if(!..(user))
return FALSE
if(obj_flags & EMAGGED)
if(active)
change_meteor_chance(8)
else
change_meteor_chance(0.125)
/obj/machinery/satellite/meteor_shield/proc/space_los(meteor)
for(var/turf/T in getline(src,meteor))
if(!isspaceturf(T))
@@ -177,4 +202,4 @@
obj_flags |= EMAGGED
to_chat(user, "<span class='notice'>You access the satellite's debug mode, increasing the chance of meteor strikes.</span>")
if(active)
change_meteor_chance(2)
change_meteor_chance(4)
@@ -98,3 +98,8 @@
/obj/item/autosurgeon/reviver
starting_organ = /obj/item/organ/cyberimp/chest/reviver
/obj/item/autosurgeon/penis
desc = "A single use autosurgeon that contains a penis. A screwdriver can be used to remove it, but implants can't be placed back in."
uses = 1
starting_organ = /obj/item/organ/genital/penis
+17
View File
@@ -1274,6 +1274,23 @@ datum/uplink_item/stealthy_tools/taeclowndo_shoes
item = /obj/item/codespeak_manual/unlimited
cost = 3
/datum/uplink_item/device_tools/compressionkit
name = "Bluespace Compression Kit"
desc = "A modified version of a BSRPED that can be used to reduce the size of most items while retaining their original functions! \
Does not work on storage items. \
Recharge using bluespace crystals. \
Comes with 5 charges."
item = /obj/item/compressionkit
cost = 5
/datum/uplink_item/device_tools/syndie_glue
name = "Glue"
desc = "A cheap bottle of one use syndicate brand super glue. \
Use on any item to make it undroppable. \
Be careful not to glue an item you're already holding!"
item = /obj/item/syndie_glue
cost = 2
// Implants
/datum/uplink_item/implants
category = "Implants"
+5 -3
View File
@@ -23,14 +23,16 @@
/obj/item/reagent_containers/glass/bottle/salglu_solution = 3,
/obj/item/reagent_containers/glass/bottle/morphine = 4,
/obj/item/reagent_containers/glass/bottle/toxin = 3,
/obj/item/reagent_containers/syringe/antiviral = 6)
/obj/item/reagent_containers/syringe/antiviral = 6,
/obj/item/storage/briefcase/medical = 2)
contraband = list(/obj/item/reagent_containers/pill/tox = 3,
/obj/item/reagent_containers/pill/morphine = 4,
/obj/item/reagent_containers/pill/charcoal = 6)
premium = list(/obj/item/storage/box/hug/medical = 1,
/obj/item/reagent_containers/hypospray/medipen = 3,
/obj/item/storage/belt/medical = 3,
/obj/item/wrench/medical = 1)
/obj/item/wrench/medical = 1,
/obj/item/storage/briefcase/medical = 2)
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/medical
@@ -41,4 +43,4 @@
/obj/machinery/vending/medical/syndicate_access
name = "\improper SyndiMed Plus"
req_access = list(ACCESS_SYNDICATE)
req_access = list(ACCESS_SYNDICATE)