Merge remote-tracking branch 'upstream/master' into hog-mergeconflicts

Conflicts:
	code/__DEFINES/hud.dm
	code/__HELPERS/game.dm
	code/_onclick/hud/_defines.dm
	code/_onclick/hud/hud.dm
	code/game/gamemodes/antag_spawner.dm
	code/game/gamemodes/game_mode.dm
	code/game/machinery/turrets.dm
	code/modules/client/preferences_toggles.dm
	code/modules/events/alien_infestation.dm
	code/modules/mob/dead/observer/observer.dm
	code/modules/mob/living/carbon/alien/special/alien_embryo.dm
	code/modules/mob/living/simple_animal/revenant/revenant.dm
	icons/mob/back.dmi
	icons/mob/head.dmi
	icons/mob/hud.dmi
	icons/mob/inhands/items_lefthand.dmi
	icons/mob/inhands/items_righthand.dmi
	icons/mob/mob.dmi
	icons/mob/suit.dmi
	icons/obj/clothing/hats.dmi
	icons/obj/items.dmi
	icons/obj/projectiles.dmi
	icons/obj/storage.dmi
This commit is contained in:
Tkdrg
2015-11-02 01:06:30 -03:00
651 changed files with 46354 additions and 43557 deletions
+30
View File
@@ -281,6 +281,26 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/clothing/glasses/hud/security/night
category = list("Equipment")
datum/design/diagnostic_hud
name = "Diagnostic HUD"
desc = "A HUD used to analyze and determine faults within robotic machinery."
id = "dianostic_hud"
req_tech = list("magnets" = 3, "engineering" = 3, "powerstorage" = 2)
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/clothing/glasses/hud/diagnostic
category = list("Equipment")
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 = "dianostic_hud_night"
req_tech = list("magnets" = 5, "engineering" = 4, "powerstorage" = 4)
build_type = PROTOLATHE
materials = list("$metal" = 200, "$glass" = 200, "$uranium" = 1000, "$plasma" = 300)
build_path = /obj/item/clothing/glasses/hud/diagnostic/night
category = list("Equipment")
/////////////////////////////////////////
//////////////////Test///////////////////
/////////////////////////////////////////
@@ -379,6 +399,16 @@ other types of metals and chemistry for reagents).
build_path = /obj/item/clothing/shoes/magboots
category = list("Equipment")
/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"
req_tech = list("materials" = 3, "magnets" = 3, "engineering" = 2)
build_type = PROTOLATHE
materials = list(MAT_METAL = 250, MAT_GLASS = 300)
build_path = /obj/item/clothing/glasses/science
category = list("Equipment")
/////////////////////////////////////////
////////////Janitor Designs//////////////
/////////////////////////////////////////
@@ -569,4 +569,12 @@
build_type = AUTOLATHE
materials = list(MAT_METAL = 150, MAT_GLASS = 125)
build_path = /obj/item/weapon/hand_labeler
category = list("initial", "Electronics")
category = list("initial", "Electronics")
/datum/design/geiger
name = "Geiger counter"
id = "geigercounter"
build_type = AUTOLATHE
materials = list(MAT_METAL = 150, MAT_GLASS = 150)
build_path = /obj/item/device/geiger_counter
category = list("initial", "Tools")
@@ -402,6 +402,16 @@
build_path = /obj/item/weapon/circuitboard/autolathe
category = list ("Misc. Machinery")
/datum/design/recharger
name = "Machine Design (Weapon Recharger Board)"
desc = "The circuit board for a Weapon Recharger."
id = "recharger"
req_tech = list("powerstorage" = 3, "engineering" = 3, "materials" = 4)
build_type = IMPRINTER
materials = list(MAT_GLASS = 1000, "sacid" = 20, MAT_GOLD = 100)
build_path = /obj/item/weapon/circuitboard/recharger
category = list("Misc. Machinery")
/datum/design/vendor
name = "Machine Design (Vendor Board)"
desc = "The circuit board for a Vendor."
@@ -11,7 +11,7 @@
materials = list(MAT_METAL = 700, MAT_GLASS = 50)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell
category = list("Misc","Power Designs")
category = list("Misc","Power Designs","Machinery","initial")
/datum/design/high_cell
name = "High-Capacity Power Cell"
@@ -32,7 +32,7 @@
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
build_path = /obj/item/weapon/stock_parts/capacitor
category = list("Stock Parts")
category = list("Stock Parts","Machinery","initial")
/datum/design/adv_capacitor
name = "Advanced Capacitor"
@@ -75,7 +75,7 @@
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 50, MAT_GLASS = 20)
build_path = /obj/item/weapon/stock_parts/scanning_module
category = list("Stock Parts")
category = list("Stock Parts","Machinery","initial")
/datum/design/adv_scanning
name = "Advanced Scanning Module"
@@ -118,7 +118,7 @@
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 30)
build_path = /obj/item/weapon/stock_parts/manipulator
category = list("Stock Parts")
category = list("Stock Parts","Machinery","initial")
/datum/design/nano_mani
name = "Nano Manipulator"
@@ -161,7 +161,7 @@
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 10, MAT_GLASS = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser
category = list("Stock Parts")
category = list("Stock Parts","Machinery","initial")
/datum/design/high_micro_laser
name = "High-Power Micro-Laser"
@@ -203,7 +203,7 @@
build_type = PROTOLATHE | AUTOLATHE
materials = list(MAT_METAL = 80)
build_path = /obj/item/weapon/stock_parts/matter_bin
category = list("Stock Parts")
category = list("Stock Parts","Machinery","initial")
/datum/design/adv_matter_bin
name = "Advanced Matter Bin"
@@ -306,4 +306,4 @@
build_type = PROTOLATHE
materials = list(MAT_GLASS = 100, MAT_SILVER = 10, MAT_URANIUM = 15)
build_path = /obj/item/weapon/stock_parts/subspace/transmitter
category = list("Stock Parts")
category = list("Stock Parts")
@@ -180,7 +180,7 @@
//WT550 Mags
/datum/design/mag_oldsmg
name = "WT-550 Auto Gun Magazine (9mm)"
name = "WT-550 Auto Gun Magazine (4.6×30mm)"
desc = "A 20 round magazine for the out of date security WT-550 Auto Rifle"
id = "mag_oldsmg"
req_tech = list("combat" = 1, "materials" = 1)
@@ -190,24 +190,24 @@
category = list("Ammo")
/datum/design/mag_oldsmg/ap_mag
name = "WT-550 Auto Gun Armour Piercing Magazine (9mmAP)"
name = "WT-550 Auto Gun Armour Piercing Magazine (4.6×30mm AP)"
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle"
id = "mag_oldsmg_ap"
materials = list(MAT_METAL = 6000, MAT_SILVER = 200)
materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
/datum/design/mag_oldsmg/ic_mag
name = "WT-550 Auto Gun Incendiary Magazine (9mmIC)"
name = "WT-550 Auto Gun Incendiary Magazine (4.6×30mm IC)"
desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle"
id = "mag_oldsmg_ic"
materials = list(MAT_METAL = 6000, MAT_SILVER = 200, MAT_GLASS = 800)
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
/datum/design/mag_oldsmg/tx_mag
name = "WT-550 Auto Gun Urnaium Magazine (9mmTX)"
name = "WT-550 Auto Gun Urnaium Magazine (4.6×30mm TX)"
desc = "A 20 round urnaium tipped magazine for the out of date security WT-550 Auto Rifle"
id = "mag_oldsmg_tx"
materials = list(MAT_METAL = 6000, MAT_SILVER = 400, MAT_URANIUM = 2000)
materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_URANIUM = 2000)
build_path = /obj/item/ammo_box/magazine/wt550m9/wttx
//SABR Mags
+24 -28
View File
@@ -229,8 +229,8 @@
loaded_item = null
/obj/machinery/r_n_d/experimentor/proc/throwSmoke(turf/where)
var/datum/effect/effect/system/smoke_spread/smoke = new
smoke.set_up(1,0, where, 0)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, where)
smoke.start()
/obj/machinery/r_n_d/experimentor/proc/pickWeighted(list/from)
@@ -319,8 +319,8 @@
R.my_atom = src
R.add_reagent(chosenchem , 50)
investigate_log("Experimentor has released [chosenchem] smoke.", "experimentor")
var/datum/effect/effect/system/smoke_spread/chem/smoke = new
smoke.set_up(R, 1, 0, src, 0, silent = 1)
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, 0, src, silent = 1)
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
smoke.start()
qdel(R)
@@ -331,8 +331,8 @@
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = src
R.add_reagent(chosenchem , 50)
var/datum/effect/effect/system/smoke_spread/chem/smoke = new
smoke.set_up(R, 1, 0, src, 0, silent = 1)
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, 0, src, silent = 1)
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
smoke.start()
qdel(R)
@@ -418,8 +418,8 @@
R.my_atom = src
R.add_reagent("frostoil" , 50)
investigate_log("Experimentor has released frostoil gas.", "experimentor")
var/datum/effect/effect/system/smoke_spread/chem/smoke = new
smoke.set_up(R, 1, 0, src, 0, silent = 1)
var/datum/effect_system/smoke_spread/chem/smoke = new
smoke.set_up(R, 0, src, silent = 1)
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
smoke.start()
qdel(R)
@@ -440,8 +440,8 @@
ejectItem(TRUE)
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
visible_message("<span class='warning'>[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!</span>")
var/datum/effect/effect/system/smoke_spread/smoke = new
smoke.set_up(1,0, src.loc, 0)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, src.loc)
smoke.start()
ejectItem()
////////////////////////////////////////////////////////////////////////////////////////////////
@@ -457,27 +457,23 @@
visible_message("<span class='danger'>[src]'s crusher goes way too many levels too high, crushing right through space-time!</span>")
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor")
var/list/throwAt = list()
for(var/i in oview(7,src))
if(istype(i,/obj/item) || istype(i,/mob/living))
throwAt.Add(i)
var/counter
for(counter = 1, counter < throwAt.len, ++counter)
var/cast = throwAt[counter]
cast:throw_at(src,10,1)
spawn(0)
for(var/atom/movable/AM in oview(7,src))
if(!AM.anchored)
AM.throw_at(src,10,1)
if(prob(EFFECT_PROB_LOW-badThingCoeff))
visible_message("<span class='danger'>[src]'s crusher goes one level too high, crushing right into space-time!</span>")
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor")
var/list/oViewStuff = oview(7,src)
var/list/throwAt = list()
for(var/i in oViewStuff)
if(istype(i,/obj/item) || istype(i,/mob/living))
throwAt.Add(i)
var/counter
for(counter = 1, counter < throwAt.len, ++counter)
var/cast = throwAt[counter]
cast:throw_at(pick(throwAt),10,1)
for(var/atom/movable/AM in oview(7,src))
if(!AM.anchored)
throwAt.Add(AM)
spawn(0)
for(var/counter = 1, counter < throwAt.len, ++counter)
var/atom/movable/cast = throwAt[counter]
cast.throw_at(pick(throwAt),10,1)
ejectItem(TRUE)
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == FAIL)
@@ -646,8 +642,8 @@
//////////////// RELIC PROCS /////////////////////////////
/obj/item/weapon/relic/proc/throwSmoke(turf/where)
var/datum/effect/effect/system/smoke_spread/smoke = new
smoke.set_up(1,0, where, 0)
var/datum/effect_system/smoke_spread/smoke = new
smoke.set_up(0, where)
smoke.start()
/obj/item/weapon/relic/proc/corgicannon(mob/user)
+1 -1
View File
@@ -276,7 +276,7 @@ var/obj/machinery/blackbox_recorder/blackbox
var/pda_msg_amt = 0
var/rc_msg_amt = 0
for (var/obj/machinery/message_server/MS in world)
for (var/obj/machinery/message_server/MS in message_servers)
if (MS.chat_msgs.len > chat_msg_amt)
chat_msg_amt = MS.chat_msgs.len
if (MS.pda_msgs.len > pda_msg_amt)
+5 -5
View File
@@ -52,7 +52,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/list/datum/design/matching_designs = list() //for the search function
/obj/machinery/computer/rdconsole/proc/CallTechName(ID) //A simple helper proc to find the name of a tech with a given ID.
/proc/CallTechName(ID) //A simple helper proc to find the name of a tech with a given ID.
var/datum/tech/check_tech
var/return_name = null
for(var/T in typesof(/datum/tech) - /datum/tech)
@@ -66,7 +66,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
return return_name
/obj/machinery/computer/rdconsole/proc/CallMaterialName(ID)
proc/CallMaterialName(ID)
var/datum/reagent/temp_reagent
var/return_name = null
if (copytext(ID, 1, 2) == "$")
@@ -119,7 +119,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
//Have it automatically push research to the centcom server so wild griffins can't fuck up R&D's work --NEO
/obj/machinery/computer/rdconsole/proc/griefProtection()
for(var/obj/machinery/r_n_d/server/centcom/C in world)
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
for(var/datum/tech/T in files.known_tech)
C.files.AddTech2Known(T)
for(var/datum/design/D in files.known_designs)
@@ -132,7 +132,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
files = new /datum/research(src) //Setup the research data holder.
matching_designs = list()
if(!id)
for(var/obj/machinery/r_n_d/server/centcom/S in world)
for(var/obj/machinery/r_n_d/server/centcom/S in machines)
S.initialize()
break
@@ -314,7 +314,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
griefProtection() //Putting this here because I dont trust the sync process
spawn(30)
if(src)
for(var/obj/machinery/r_n_d/server/S in world)
for(var/obj/machinery/r_n_d/server/S in machines)
var/server_processed = 0
if(S.disabled)
continue
+1 -1
View File
@@ -30,7 +30,7 @@
return 0
if(!prob(prb))
return 0
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7))
+6 -6
View File
@@ -93,7 +93,7 @@
//Backup files to centcom to help admins recover data after greifer attacks
/obj/machinery/r_n_d/server/proc/griefProtection()
for(var/obj/machinery/r_n_d/server/centcom/C in world)
for(var/obj/machinery/r_n_d/server/centcom/C in machines)
for(var/datum/tech/T in files.known_tech)
C.files.AddTech2Known(T)
for(var/datum/design/D in files.known_designs)
@@ -151,7 +151,7 @@
..()
var/list/no_id_servers = list()
var/list/server_ids = list()
for(var/obj/machinery/r_n_d/server/S in world)
for(var/obj/machinery/r_n_d/server/S in machines)
switch(S.server_id)
if(-1)
continue
@@ -203,20 +203,20 @@
temp_server = null
consoles = list()
servers = list()
for(var/obj/machinery/r_n_d/server/S in world)
for(var/obj/machinery/r_n_d/server/S in machines)
if(S.server_id == text2num(href_list["access"]) || S.server_id == text2num(href_list["data"]) || S.server_id == text2num(href_list["transfer"]))
temp_server = S
break
if(href_list["access"])
screen = 1
for(var/obj/machinery/computer/rdconsole/C in world)
for(var/obj/machinery/computer/rdconsole/C in machines)
if(C.sync)
consoles += C
else if(href_list["data"])
screen = 2
else if(href_list["transfer"])
screen = 3
for(var/obj/machinery/r_n_d/server/S in world)
for(var/obj/machinery/r_n_d/server/S in machines)
if(S == src)
continue
servers += S
@@ -266,7 +266,7 @@
if(0) //Main Menu
dat += "Connected Servers:<BR><BR>"
for(var/obj/machinery/r_n_d/server/S in world)
for(var/obj/machinery/r_n_d/server/S in machines)
if(istype(S, /obj/machinery/r_n_d/server/centcom) && !badmin)
continue
dat += "[S.name] || "
@@ -0,0 +1,164 @@
//Xenobio control console
/mob/camera/aiEye/remote/xenobio
visible_icon = 1
icon = 'icons/obj/abductor.dmi'
icon_state = "camera_target"
/mob/camera/aiEye/remote/xenobio/setLoc(var/t)
var/area/new_area = get_area(t)
if(new_area && new_area.name == "Xenobiology Lab" || new_area && istype(new_area, /area/toxins/xenobiology ))
return ..()
else
return
/obj/machinery/computer/camera_advanced/xenobio
name = "Slime management console"
desc = "A computer used for remotely handling slimes."
networks = list("SS13")
off_action = new/datum/action/innate/camera_off/xenobio
var/datum/action/innate/slime_place/slime_place_action = new
var/datum/action/innate/slime_pick_up/slime_up_action = new
var/datum/action/innate/feed_slime/feed_slime_action = new
var/datum/action/innate/monkey_recycle/monkey_recycle_action = new
var/list/stored_slimes = list()
var/max_slimes = 5
var/monkeys = 0
icon_screen = "slime_comp"
icon_keyboard = "rd_key"
/obj/machinery/computer/camera_advanced/xenobio/CreateEye()
eyeobj = new /mob/camera/aiEye/remote/xenobio()
eyeobj.loc = get_turf(src)
eyeobj.origin = src
eyeobj.visible_icon = 1
eyeobj.icon = 'icons/obj/abductor.dmi'
eyeobj.icon_state = "camera_target"
/obj/machinery/computer/camera_advanced/xenobio/GrantActions(mob/living/carbon/user)
off_action.target = user
off_action.Grant(user)
jump_action.target = user
jump_action.Grant(user)
slime_up_action.target = src
slime_up_action.Grant(user)
slime_place_action.target = src
slime_place_action.Grant(user)
feed_slime_action.target = src
feed_slime_action.Grant(user)
monkey_recycle_action.target = src
monkey_recycle_action.Grant(user)
/obj/machinery/computer/camera_advanced/xenobio/attack_hand(mob/user)
if(!ishuman(user)) //AIs using it might be weird
return
return ..()
/datum/action/innate/camera_off/xenobio/Activate()
if(!target || !ishuman(target))
return
var/mob/living/carbon/C = target
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/origin = remote_eye.origin
C.remote_view = 0
origin.current_user = null
origin.jump_action.Remove(C)
origin.slime_place_action.Remove(C)
origin.slime_up_action.Remove(C)
origin.feed_slime_action.Remove(C)
origin.monkey_recycle_action.Remove(C)
//All of this stuff below could probably be a proc for all advanced cameras, only the action removal needs to be camera specific
remote_eye.user = null
if(C.client)
C.client.perspective = MOB_PERSPECTIVE
C.client.eye = src
C.client.images -= remote_eye.user_image
for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks)
C.client.images -= chunk.obscured
C.remote_control = null
C.unset_machine()
src.Remove(C)
/datum/action/innate/slime_place
name = "Place Slimes"
button_icon_state = "slime_down"
/datum/action/innate/slime_place/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(cameranet.checkTurfVis(remote_eye.loc))
for(var/mob/living/simple_animal/slime/S in X.stored_slimes)
S.loc = remote_eye.loc
S.visible_message("[S] warps in!")
X.stored_slimes -= S
/datum/action/innate/slime_pick_up
name = "Pick up Slime"
button_icon_state = "slime_up"
/datum/action/innate/slime_pick_up/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(cameranet.checkTurfVis(remote_eye.loc))
for(var/mob/living/simple_animal/slime/S in remote_eye.loc)
if(X.stored_slimes.len >= X.max_slimes)
break
if(!S.ckey)
S.visible_message("[S] vanishes in a flash of light!")
S.loc = X
X.stored_slimes += S
/datum/action/innate/feed_slime
name = "Feed Slimes"
button_icon_state = "monkey_down"
/datum/action/innate/feed_slime/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(cameranet.checkTurfVis(remote_eye.loc))
if(X.monkeys > 0)
var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(remote_eye.loc)
food.LAssailant = C
X.monkeys --
owner << "[X] now has [X.monkeys] monkeys left."
/datum/action/innate/monkey_recycle
name = "Recycle Monkeys"
button_icon_state = "monkey_up"
/datum/action/innate/monkey_recycle/Activate()
if(!target || !ishuman(owner))
return
var/mob/living/carbon/human/C = owner
var/mob/camera/aiEye/remote/xenobio/remote_eye = C.remote_control
var/obj/machinery/computer/camera_advanced/xenobio/X = target
if(cameranet.checkTurfVis(remote_eye.loc))
for(var/mob/living/carbon/monkey/M in remote_eye.loc)
if(M.stat)
M.visible_message("[M] vanishes as they are reclaimed for recycling!")
X.monkeys += 0.2
qdel(M)
@@ -204,6 +204,8 @@
if(!src)
return
listclearnulls(consenting_candidates) //some candidates might have left during sleep(50)
if(consenting_candidates.len)
var/client/C = null
C = pick(consenting_candidates)
@@ -295,7 +297,24 @@
M.mutator_used = TRUE
qdel(src)
/obj/item/slimepotion/speed
name = "slime speed potion"
desc = "A potent chemical mix that will remove the slowdown from any item."
icon = 'icons/obj/chemical.dmi'
icon_state = "bottle3"
/obj/item/slimepotion/speed/afterattack(obj/item/C, mob/user)
..()
if(!istype(C))
user << "<span class='warning'>The potion can only be used on items!</span>"
return
if(C.slowdown <= 0)
user << "<span class='warning'>The [C] can't be made any faster!</span>"
return..()
user <<"<span class='notice'>You slather the red gunk over the [C], making it faster.</span>"
C.color = "#FF0000"
C.slowdown = 0
qdel(src)
////////Adamantine Golem stuff I dunno where else to put it
@@ -367,15 +386,19 @@
unacidable = 1
layer = TURF_LAYER
New()
..()
SSobj.processing |= src
/obj/effect/golemrune/New()
..()
SSobj.processing |= src
/obj/effect/golemrune/process()
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in src.loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!O.client)
continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
continue
if (O.orbiting)
continue
ghost = O
break
if(ghost)
@@ -386,8 +409,12 @@
/obj/effect/golemrune/attack_hand(mob/living/user)
var/mob/dead/observer/ghost
for(var/mob/dead/observer/O in src.loc)
if(!O.client) continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD) continue
if(!O.client)
continue
if(O.mind && O.mind.current && O.mind.current.stat != DEAD)
continue
if (O.orbiting)
continue
ghost = O
break
if(!ghost)
@@ -397,6 +424,7 @@
G.set_species(/datum/species/golem/adamantine)
G.set_cloned_appearance()
G.real_name = "Adamantine Golem ([rand(1, 1000)])"
G.name = G.real_name
G.dna.unique_enzymes = G.dna.generate_unique_enzymes()
G.dna.species.auto_equip(G)
G.loc = src.loc
@@ -421,6 +449,7 @@
pixel_x = -64
pixel_y = -64
unacidable = 1
mouse_opacity = 0
var/mob/living/immune = list() // the one who creates the timestop is immune
var/freezerange = 2
var/duration = 140
@@ -514,3 +543,18 @@
icon_state = "sepia"
desc = "Time seems to flow very slowly around these tiles"
floor_tile = /obj/item/stack/tile/sepia
/obj/item/areaeditor/blueprints/slime
name = "cerulean prints"
desc = "A one use yet of blueprints made of jelly like organic material. Renaming an area to 'Xenobiology Lab' will extend the reach of the management console."
color = "#2956B2"
/obj/item/areaeditor/blueprints/slime/edit_area()
var/success = ..()
var/area/A = get_area(src)
if(success)
for(var/turf/T in A)
T.color = "#2956B2"
qdel(src)