Merge remote-tracking branch 'upstream/master'
@@ -42,11 +42,6 @@ SUBSYSTEM_DEF(ticker)
|
||||
'sound/music/title1.ogg',\
|
||||
'sound/music/title2.ogg',\
|
||||
'sound/music/title3.ogg',)
|
||||
// Setup codephrase
|
||||
if(!GLOB.syndicate_code_phrase)
|
||||
GLOB.syndicate_code_phrase = generate_code_phrase()
|
||||
if(!GLOB.syndicate_code_response)
|
||||
GLOB.syndicate_code_response = generate_code_phrase()
|
||||
|
||||
// Map name
|
||||
if(using_map && using_map.name)
|
||||
@@ -197,6 +192,10 @@ SUBSYSTEM_DEF(ticker)
|
||||
//shuttle_controller.setup_shuttle_docks()
|
||||
|
||||
spawn(0)//Forking here so we dont have to wait for this to finish
|
||||
if(!GLOB.syndicate_code_phrase)
|
||||
GLOB.syndicate_code_phrase = generate_code_phrase()
|
||||
if(!GLOB.syndicate_code_response)
|
||||
GLOB.syndicate_code_response = generate_code_phrase()
|
||||
mode.post_setup()
|
||||
//Cleanup some stuff
|
||||
for(var/obj/effect/landmark/start/S in GLOB.landmarks_list)
|
||||
|
||||
@@ -1366,7 +1366,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
|
||||
name = "Shaft Miner Starter Kit"
|
||||
cost = 30
|
||||
access = access_qm
|
||||
contains = list(/obj/item/storage/backpack/duffel/mining_conscript)
|
||||
contains = list(/obj/item/storage/backpack/duffel/mining_conscript/noid)
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "shaft miner starter kit"
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
var/reflect_chance = 80 //80% chance to reflect
|
||||
|
||||
/obj/structure/blob/shield/reflective/handle_ricochet(obj/item/projectile/P)
|
||||
if(P.is_reflectable && prob(reflect_chance))
|
||||
if(P.is_reflectable && prob(reflect_chance) && !P.legacy)
|
||||
var/P_turf = get_turf(P)
|
||||
var/face_direction = get_dir(src, P_turf)
|
||||
var/face_angle = dir2angle(face_direction)
|
||||
@@ -48,6 +48,9 @@
|
||||
P.firer = src //so people who fired the lasers are not immune to them when it reflects
|
||||
visible_message("<span class='warning'>[P] reflects off [src]!</span>")
|
||||
return -1// complete projectile permutation
|
||||
else if(P.is_reflectable && P.legacy) //to stop legacy projectile exploits
|
||||
visible_message("<span class='warning'>[P] disperses into energy from [src]!</span>")
|
||||
qdel(P)
|
||||
else
|
||||
playsound(src, P.hitsound, 50, 1)
|
||||
visible_message("<span class='danger'>[src] is hit by \a [P]!</span>")
|
||||
|
||||
@@ -165,7 +165,10 @@
|
||||
var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in item_names
|
||||
if(!targetitem)
|
||||
return
|
||||
target = locate(item_paths[targetitem])
|
||||
var/list/obj/item/target_candidates = get_all_of_type(item_paths[targetitem], subtypes = TRUE)
|
||||
for(var/obj/item/candidate in target_candidates)
|
||||
if(!is_admin_level(candidate.loc.z))
|
||||
target = candidate
|
||||
if(!target)
|
||||
to_chat(usr, "<span class='warning'>Failed to locate [targetitem]!</span>")
|
||||
return
|
||||
|
||||
@@ -344,11 +344,14 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
|
||||
var/theft_area
|
||||
|
||||
/datum/objective/steal/proc/get_location()
|
||||
if(steal_target.location_override)
|
||||
return steal_target.location_override
|
||||
var/obj/item/T = locate(steal_target.typepath)
|
||||
theft_area = get_area(T.loc)
|
||||
return "[theft_area]"
|
||||
if(steal_target.location_override)
|
||||
return steal_target.location_override
|
||||
var/list/obj/item/steal_candidates = get_all_of_type(steal_target.typepath, subtypes = TRUE)
|
||||
for(var/obj/item/candidate in steal_candidates)
|
||||
if(!is_admin_level(candidate.loc.z))
|
||||
theft_area = get_area(candidate.loc)
|
||||
return "[theft_area]"
|
||||
return "an unknown area"
|
||||
|
||||
/datum/objective/steal/find_target()
|
||||
var/loop=50
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/machinery/ai_slipper
|
||||
name = "\improper AI liquid dispenser"
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "motion3"
|
||||
icon_state = "liquid_dispenser"
|
||||
layer = 3
|
||||
plane = FLOOR_PLANE
|
||||
anchored = 1.0
|
||||
@@ -17,14 +17,14 @@
|
||||
|
||||
/obj/machinery/ai_slipper/power_change()
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
update_icon()
|
||||
else
|
||||
if( powered() )
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
icon_state = "motion0"
|
||||
stat |= NOPOWER
|
||||
disabled = TRUE
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/ai_slipper/proc/setState(var/enabled, var/uses)
|
||||
disabled = disabled
|
||||
@@ -56,7 +56,7 @@
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
disabled = !disabled
|
||||
icon_state = disabled? "motion0":"motion3"
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/ai_slipper/proc/Activate()
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
@@ -70,6 +70,12 @@
|
||||
cooldown_time = world.timeofday + 100
|
||||
slip_process()
|
||||
|
||||
/obj/machinery/ai_slipper/update_icon()
|
||||
if(stat & (NOPOWER|BROKEN) || disabled)
|
||||
icon_state = "liquid_dispenser"
|
||||
else
|
||||
icon_state = "liquid_dispenser_on"
|
||||
|
||||
/obj/machinery/ai_slipper/attack_ai(mob/user)
|
||||
return attack_hand(user)
|
||||
|
||||
|
||||
@@ -134,8 +134,6 @@
|
||||
if(operating)
|
||||
return
|
||||
add_fingerprint(user)
|
||||
if(!requiresID())
|
||||
user = null
|
||||
|
||||
if(density && !emagged)
|
||||
if(allowed(user))
|
||||
@@ -157,7 +155,7 @@
|
||||
return try_to_activate_door(user)
|
||||
|
||||
/obj/machinery/door/attack_tk(mob/user)
|
||||
if(requiresID() && !allowed(null))
|
||||
if(!allowed(null))
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -165,9 +163,7 @@
|
||||
add_fingerprint(user)
|
||||
if(operating || emagged)
|
||||
return
|
||||
if(!requiresID())
|
||||
user = null //so allowed(user) always succeeds
|
||||
if(allowed(user) || user.can_advanced_admin_interact())
|
||||
if(requiresID() && (allowed(user) || user.can_advanced_admin_interact()))
|
||||
if(density)
|
||||
open()
|
||||
else
|
||||
@@ -179,6 +175,8 @@
|
||||
/obj/machinery/door/allowed(mob/M)
|
||||
if(emergency)
|
||||
return TRUE
|
||||
if(!requiresID())
|
||||
return FALSE // Intentional. machinery/door/requiresID() always == 1. airlocks, however, == 0 if ID scan is disabled. Yes, this var is poorly named.
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/proc/try_to_weld(obj/item/weldingtool/W, mob/user)
|
||||
|
||||
@@ -1292,7 +1292,8 @@
|
||||
/obj/item/clothing/head/cueball = 1,/obj/item/clothing/under/scratch = 1,
|
||||
/obj/item/clothing/under/victdress = 1, /obj/item/clothing/under/victdress/red = 1, /obj/item/clothing/suit/victcoat = 1, /obj/item/clothing/suit/victcoat/red = 1,
|
||||
/obj/item/clothing/under/victsuit = 1, /obj/item/clothing/under/victsuit/redblk = 1, /obj/item/clothing/under/victsuit/red = 1, /obj/item/clothing/suit/tailcoat = 1,
|
||||
/obj/item/clothing/suit/draculacoat = 1, /obj/item/clothing/head/zepelli = 1)
|
||||
/obj/item/clothing/suit/draculacoat = 1, /obj/item/clothing/head/zepelli = 1,
|
||||
/obj/item/clothing/under/redhawaiianshirt = 1, /obj/item/clothing/under/pinkhawaiianshirt = 1, /obj/item/clothing/under/bluehawaiianshirt = 1, /obj/item/clothing/under/orangehawaiianshirt = 1)
|
||||
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/gun/magic/wand = 1, /obj/item/clothing/mask/balaclava=1, /obj/item/clothing/mask/horsehead = 2)
|
||||
premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/shield/riot/roman = 1)
|
||||
refill_canister = /obj/item/vending_refill/autodrobe
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
"Phazon",
|
||||
"Exosuit Equipment",
|
||||
"Cyborg Upgrade Modules",
|
||||
"Medical",
|
||||
"Misc"
|
||||
)
|
||||
|
||||
|
||||
@@ -357,6 +357,21 @@
|
||||
new /obj/item/ammo_box/magazine/m12g/buckshot(src)
|
||||
new /obj/item/ammo_box/magazine/m12g/dragon(src)
|
||||
|
||||
/obj/item/storage/backpack/duffel/mining_conscript/noid
|
||||
name = "mining conscription kit"
|
||||
desc = "A kit containing everything a crewmember needs to support a shaft miner in the field."
|
||||
|
||||
/obj/item/storage/backpack/duffel/mining_conscript/noid/New()
|
||||
..()
|
||||
new /obj/item/pickaxe(src)
|
||||
new /obj/item/clothing/glasses/meson(src)
|
||||
new /obj/item/t_scanner/adv_mining_scanner/lesser(src)
|
||||
new /obj/item/storage/bag/ore(src)
|
||||
new /obj/item/clothing/under/rank/miner/lavaland(src)
|
||||
new /obj/item/encryptionkey/headset_cargo(src)
|
||||
new /obj/item/clothing/mask/gas(src)
|
||||
|
||||
|
||||
/obj/item/storage/backpack/duffel/syndie/ammo/smg
|
||||
desc = "A large duffel bag, packed to the brim with C-20r magazines."
|
||||
|
||||
|
||||
@@ -169,6 +169,14 @@
|
||||
message_admins("Ban process: A mob matching [playermob.ckey] was found at location [playermob.x], [playermob.y], [playermob.z]. Custom IP and computer id fields replaced with the IP and computer id from the located mob")
|
||||
|
||||
DB_ban_record(bantype, playermob, banduration, banreason, banjob, null, banckey, banip, bancid )
|
||||
if(BANTYPE_PERMA)
|
||||
add_note(banckey, "Permanently Banned - [banreason]", null, usr.ckey, 0)
|
||||
else if(BANTYPE_TEMP)
|
||||
add_note(banckey, "Banned for [banduration] minutes - [banreason]", null, usr.ckey, 0)
|
||||
else if(BANTYPE_JOB_PERMA)
|
||||
add_note(banckey, "Banned from [banjob] - [banreason]", null, usr.ckey, 0)
|
||||
else
|
||||
add_note(banckey, "[banreason]", null, usr.ckey, 0)
|
||||
|
||||
|
||||
else if(href_list["editrights"])
|
||||
|
||||
@@ -857,3 +857,36 @@
|
||||
icon_state = "burial"
|
||||
item_state = "burial"
|
||||
item_color = "burial"
|
||||
|
||||
/obj/item/clothing/under/redhawaiianshirt
|
||||
name = "red hawaiian shirt"
|
||||
desc = "a floral shirt worn to most vacation destinations."
|
||||
icon_state = "hawaiianred"
|
||||
item_state = "hawaiianred"
|
||||
item_color = "hawaiianred"
|
||||
flags_size = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/pinkhawaiianshirt
|
||||
name = "pink hawaiian shirt"
|
||||
desc = "a pink floral shirt the material feels cool and comfy."
|
||||
icon_state = "hawaiianpink"
|
||||
item_state = "hawaiianpink"
|
||||
item_color = "hawaiianpink"
|
||||
flags_size = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/orangehawaiianshirt
|
||||
name = "orange hawaiian shirt"
|
||||
desc = "a orange floral shirt for a relaxing day in space."
|
||||
icon_state = "hawaiianorange"
|
||||
item_state = "hawaiianorange"
|
||||
item_color = "hawaiianorange"
|
||||
flags_size = ONESIZEFITSALL
|
||||
|
||||
/obj/item/clothing/under/bluehawaiianshirt
|
||||
name = "blue hawaiian shirt"
|
||||
desc = "a blue floral shirt it has a oddly colored pink flower on it."
|
||||
icon_state = "hawaiianblue"
|
||||
item_state = "hawaiianblue"
|
||||
item_color = "hawaiianblue"
|
||||
flags_size = ONESIZEFITSALL
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ GLOBAL_LIST_INIT(boo_phrases, list(
|
||||
|
||||
ghost = TRUE
|
||||
|
||||
action_icon_state = "boo"
|
||||
school = "transmutation"
|
||||
charge_max = 600
|
||||
starts_charged = FALSE
|
||||
|
||||
@@ -106,6 +106,12 @@
|
||||
else //Everyone else fails, skip the emote attempt
|
||||
return
|
||||
|
||||
if("warble", "warbles")
|
||||
if(isskrell(src)) //Only Skrell can warble.
|
||||
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm'
|
||||
else //Everyone else fails, skip the emote attempt
|
||||
return
|
||||
|
||||
if("scream", "screams")
|
||||
on_CD = handle_emote_CD(50) //longer cooldown
|
||||
if("fart", "farts", "flip", "flips", "snap", "snaps")
|
||||
@@ -221,6 +227,13 @@
|
||||
playsound(loc, 'sound/effects/voxrustle.ogg', 50, 0) //Credit to sound-ideas (freesfx.co.uk) for the sound.
|
||||
m_type = 2
|
||||
|
||||
if("warble", "warbles")
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
message = "<B>[src]</B> warbles[M ? " at [M]" : ""]."
|
||||
playsound(loc, 'sound/effects/warble.ogg', 50, 0) // Copyright CC BY 3.0 alienistcog (freesound.org) for the sound.
|
||||
m_type = 2
|
||||
|
||||
if("yes")
|
||||
var/M = handle_emote_param(param)
|
||||
|
||||
@@ -904,6 +917,8 @@
|
||||
emotelist += "\nVox specific emotes :- quill(s)"
|
||||
if("Diona")
|
||||
emotelist += "\nDiona specific emotes :- creak(s)"
|
||||
if("Skrell")
|
||||
emotelist += "\nSkrell specific emotes :- warble(s)"
|
||||
|
||||
if(ismachine(src))
|
||||
emotelist += "\nMachine specific emotes :- beep(s)-(none)/mob, buzz(es)-none/mob, no-(none)/mob, ping(s)-(none)/mob, yes-(none)/mob, buzz2-(none)/mob"
|
||||
|
||||
@@ -202,7 +202,7 @@ var/global/list/ts_spiderling_list = list()
|
||||
var/obj/machinery/door/airlock/A = target
|
||||
if(A.density)
|
||||
try_open_airlock(A)
|
||||
else if(isliving(target))
|
||||
else if(isliving(target) && (!client || a_intent == INTENT_HARM))
|
||||
var/mob/living/G = target
|
||||
if(issilicon(G))
|
||||
G.attack_animal(src)
|
||||
|
||||
@@ -692,11 +692,9 @@
|
||||
// pipe is deleted
|
||||
// ensure if holder is present, it is expelled
|
||||
/obj/structure/disposalpipe/Destroy()
|
||||
var/obj/structure/disposalholder/H = locate() in src
|
||||
if(H)
|
||||
// holder was present
|
||||
for(var/obj/structure/disposalholder/H in contents)
|
||||
H.active = 0
|
||||
var/turf/T = src.loc
|
||||
var/turf/T = loc
|
||||
if(T.density)
|
||||
// deleting pipe is inside a dense turf (wall)
|
||||
// this is unlikely, but just dump out everything into the turf in case
|
||||
@@ -709,8 +707,7 @@
|
||||
return
|
||||
|
||||
// otherwise, do normal expel from turf
|
||||
if(H)
|
||||
expel(H, T, 0)
|
||||
expel(H, T, 0)
|
||||
return ..()
|
||||
|
||||
/obj/structure/disposalpipe/singularity_pull(S, current_size)
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
name = "Portable Seed Extractor"
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
build_type = PROTOLATHE
|
||||
id = "portaseeder"
|
||||
req_tech = list("biotech" = 3, "engineering" = 2)
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 400)
|
||||
build_path = /obj/item/storage/bag/plants/portaseeder
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
|
||||
construction_time = 75
|
||||
build_path = /obj/item/mmi
|
||||
category = list("Misc","Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/robotic_brain
|
||||
name = "Robotic Brain"
|
||||
@@ -112,7 +112,7 @@
|
||||
materials = list(MAT_METAL = 1700, MAT_GLASS = 1350, MAT_GOLD = 500) //Gold, because SWAG.
|
||||
construction_time = 75
|
||||
build_path = /obj/item/mmi/robotic_brain
|
||||
category = list("Misc","Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/mmi_radio_upgrade
|
||||
name = "Man-Machine Interface Radio Upgrade"
|
||||
@@ -123,7 +123,7 @@
|
||||
materials = list(MAT_METAL = 200)
|
||||
construction_time = 50
|
||||
build_path = /obj/item/mmi_radio_upgrade
|
||||
category = list("Misc","Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/nanopaste
|
||||
name = "Nanopaste"
|
||||
@@ -288,7 +288,7 @@
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 400)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/shield
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_breather
|
||||
name = "Breathing Tube Implant"
|
||||
@@ -299,7 +299,7 @@
|
||||
construction_time = 35
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 250)
|
||||
build_path = /obj/item/organ/internal/cyberimp/mouth/breathing_tube
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_surgical
|
||||
name = "Surgical Arm Implant"
|
||||
@@ -310,7 +310,7 @@
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/internal/cyberimp/arm/surgery
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_toolset
|
||||
name = "Toolset Arm Implant"
|
||||
@@ -321,7 +321,7 @@
|
||||
materials = list(MAT_METAL = 2500, MAT_GLASS = 1500, MAT_SILVER = 1500)
|
||||
construction_time = 200
|
||||
build_path = /obj/item/organ/internal/cyberimp/arm/toolset
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_diagnostic_hud
|
||||
name = "Diagnostic HUD implant"
|
||||
@@ -332,7 +332,7 @@
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/hud/diagnostic
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_medical_hud
|
||||
name = "Medical HUD implant"
|
||||
@@ -343,7 +343,7 @@
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/hud/medical
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_security_hud
|
||||
name = "Security HUD implant"
|
||||
@@ -354,7 +354,7 @@
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 750, MAT_GOLD = 750)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/hud/security
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_meson
|
||||
name = "Meson scanner implant"
|
||||
@@ -365,7 +365,7 @@
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500, MAT_GOLD = 300)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/meson
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_xray
|
||||
name = "X-Ray implant"
|
||||
@@ -376,7 +376,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_URANIUM = 1000, MAT_DIAMOND = 1000, MAT_BLUESPACE = 1000)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/xray
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_thermals
|
||||
name = "Thermals implant"
|
||||
@@ -387,7 +387,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 600, MAT_GOLD = 600, MAT_PLASMA = 1000, MAT_DIAMOND = 2000)
|
||||
build_path = /obj/item/organ/internal/cyberimp/eyes/thermals
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_antidrop
|
||||
name = "Anti-Drop implant"
|
||||
@@ -398,7 +398,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 400, MAT_GOLD = 400)
|
||||
build_path = /obj/item/organ/internal/cyberimp/brain/anti_drop
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_antistun
|
||||
name = "CNS Rebooter implant"
|
||||
@@ -409,7 +409,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_SILVER = 500, MAT_GOLD = 1000)
|
||||
build_path = /obj/item/organ/internal/cyberimp/brain/anti_stun
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_clownvoice
|
||||
name = "Comical implant"
|
||||
@@ -420,7 +420,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 200, MAT_GLASS = 200, MAT_BANANIUM = 200)
|
||||
build_path = /obj/item/organ/internal/cyberimp/brain/clown_voice
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_nutriment
|
||||
name = "Nutriment pump implant"
|
||||
@@ -431,7 +431,7 @@
|
||||
construction_time = 40
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_GOLD = 500)
|
||||
build_path = /obj/item/organ/internal/cyberimp/chest/nutriment
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_nutriment_plus
|
||||
name = "Nutriment pump implant PLUS"
|
||||
@@ -442,7 +442,7 @@
|
||||
construction_time = 50
|
||||
materials = list(MAT_METAL = 600, MAT_GLASS = 600, MAT_GOLD = 500, MAT_URANIUM = 750)
|
||||
build_path = /obj/item/organ/internal/cyberimp/chest/nutriment/plus
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/datum/design/cyberimp_reviver
|
||||
name = "Reviver implant"
|
||||
@@ -453,7 +453,7 @@
|
||||
construction_time = 60
|
||||
materials = list(MAT_METAL = 800, MAT_GLASS = 800, MAT_GOLD = 300, MAT_URANIUM = 500)
|
||||
build_path = /obj/item/organ/internal/cyberimp/chest/reviver
|
||||
category = list("Misc", "Medical")
|
||||
category = list("Medical")
|
||||
|
||||
/////////////////////////////////////////
|
||||
////////////Regular Implants/////////////
|
||||
@@ -508,6 +508,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/eyes/cybernetic
|
||||
category = list("Medical")
|
||||
|
||||
@@ -518,6 +519,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/liver/cybernetic
|
||||
category = list("Medical")
|
||||
|
||||
@@ -528,6 +530,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/kidneys/cybernetic
|
||||
category = list("Medical")
|
||||
|
||||
@@ -538,6 +541,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/heart/cybernetic
|
||||
category = list("Medical")
|
||||
|
||||
@@ -548,6 +552,7 @@
|
||||
req_tech = list("biotech" = 5, "materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/heart/cybernetic/upgraded
|
||||
category = list("Medical")
|
||||
|
||||
@@ -558,6 +563,7 @@
|
||||
req_tech = list("biotech" = 4, "materials" = 4)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/lungs/cybernetic
|
||||
category = list("Medical")
|
||||
|
||||
@@ -568,5 +574,6 @@
|
||||
req_tech = list("biotech" = 5, "materials" = 5, "engineering" = 5)
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500)
|
||||
construction_time = 60
|
||||
build_path = /obj/item/organ/internal/lungs/cybernetic/upgraded
|
||||
category = list("Medical")
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "craftxbox"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Highlight string uses regex"
|
||||
- rscdel: "Removed jquery mark"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Kyep"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Disarming/grabbing a door with IDSCAN disabled no longer results in a can_admin_interact runtime error."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Couls"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Medical category to exosuit fabricator with implants and cybernetics"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "uc_guy"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Theft objective locations hints now ignore the Centcomm Z level."
|
||||
- bugfix: "Adv. Pinpointer no longer targets items in Centcom Z level."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "iantine"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Skrell *warble emote"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Citinited"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Destroying a disposals trunk should no longer occasionally delete things held inside it."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Arkatos"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "Added new Boo! spell icon"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Couls"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "codephrase names no longer appear blank"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Improvedname"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Cargo miner starter kit crate will no longer include a ID"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Kyep"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Terror Spiders no longer trigger their special attack when nuzzling someone on help intent."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Citinited"
|
||||
delete-after: True
|
||||
changes:
|
||||
- imageadd: "Ports liquid dispenser sprites from tgstation."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ty-Omaha"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Manual bans now auto-note"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Evankhell561"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Portable Seed Extractor designon the protolathe."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Ty-Omaha"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Stops projectiles using the legacy system such as emitters from hurting shield blobs due to an exploit where it would always hit or go through."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "farie82"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscdel: "Reverts the string highlighting done by regex"
|
||||
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 112 KiB |
|
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 286 KiB After Width: | Height: | Size: 290 KiB |
|
Before Width: | Height: | Size: 302 KiB After Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 360 KiB After Width: | Height: | Size: 366 KiB |
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 43 KiB |