This commit is contained in:
unusualcrow
2016-09-17 22:55:06 -04:00
committed by TalkingCactus
parent b5e3121d3a
commit 85cd936712
8 changed files with 24 additions and 15 deletions

View File

@@ -1,13 +1,11 @@
/* /*
Telekinesis Telekinesis
This needs more thinking out, but I might as well. This needs more thinking out, but I might as well.
*/ */
var/const/tk_maxrange = 15 var/const/tk_maxrange = 15
/* /*
Telekinetic attack: Telekinetic attack:
By default, emulate the user's unarmed attack By default, emulate the user's unarmed attack
*/ */
/atom/proc/attack_tk(mob/user) /atom/proc/attack_tk(mob/user)
@@ -19,7 +17,6 @@ var/const/tk_maxrange = 15
/* /*
This is similar to item attack_self, but applies to anything This is similar to item attack_self, but applies to anything
that you can grab with a telekinetic grab. that you can grab with a telekinetic grab.
It is used for manipulating things at range, for example, opening and closing closets. It is used for manipulating things at range, for example, opening and closing closets.
There are not a lot of defaults at this time, add more where appropriate. There are not a lot of defaults at this time, add more where appropriate.
*/ */
@@ -57,7 +54,6 @@ var/const/tk_maxrange = 15
/* /*
TK Grab Item (the workhorse of old TK) TK Grab Item (the workhorse of old TK)
* If you have not grabbed something, do a normal tk attack * If you have not grabbed something, do a normal tk attack
* If you have something, throw it at the target. If it is already adjacent, do a normal attackby() * If you have something, throw it at the target. If it is already adjacent, do a normal attackby()
* If you click what you are holding, or attack_self(), do an attack_self_tk() on it. * If you click what you are holding, or attack_self(), do an attack_self_tk() on it.
@@ -121,15 +117,16 @@ var/const/tk_maxrange = 15
focus_object(target, user) focus_object(target, user)
return return
if(focus.anchored) if(focus.anchored || !isturf(focus.loc))
qdel(src) qdel(src)
return
if(target == focus) if(target == focus)
target.attack_self_tk(user) target.attack_self_tk(user)
return // todo: something like attack_self not laden with assumptions inherent to attack_self return // todo: something like attack_self not laden with assumptions inherent to attack_self
if(!istype(target, /turf) && istype(focus,/obj/item) && target.Adjacent(focus)) if(!isturf(target) && istype(focus,/obj/item) && target.Adjacent(focus))
var/obj/item/I = focus var/obj/item/I = focus
var/resolved = target.attackby(I, user, params) var/resolved = target.attackby(I, user, params)
if(!resolved && target && I) if(!resolved && target && I)
@@ -139,7 +136,6 @@ var/const/tk_maxrange = 15
focus.throw_at(target, 10, 1,user) focus.throw_at(target, 10, 1,user)
last_throw = world.time last_throw = world.time
user.changeNext_move(CLICK_CD_MELEE) user.changeNext_move(CLICK_CD_MELEE)
return
/proc/tkMaxRangeCheck(mob/user, atom/target, atom/focus) /proc/tkMaxRangeCheck(mob/user, atom/target, atom/focus)
var/d = get_dist(user, target) var/d = get_dist(user, target)
@@ -155,7 +151,7 @@ var/const/tk_maxrange = 15
/obj/item/tk_grab/proc/focus_object(obj/target, mob/living/user) /obj/item/tk_grab/proc/focus_object(obj/target, mob/living/user)
if(!istype(target,/obj)) if(!isobj(target))
return//Cant throw non objects atm might let it do mobs later return//Cant throw non objects atm might let it do mobs later
if(target.anchored || !isturf(target.loc)) if(target.anchored || !isturf(target.loc))
qdel(src) qdel(src)
@@ -217,5 +213,4 @@ var/const/tk_maxrange = 15
var/X = source:x var/X = source:x
var/Y = source:y var/Y = source:y
var/Z = source:z var/Z = source:z
*/
*/

View File

@@ -96,7 +96,7 @@
occupant_status += "</div></div>" occupant_status += "</div></div>"
occupant_status += "<div class='line'><div class='statusLabel'>Health:</div><div class='progressBar'><div style='width: [viable_occupant.health]%;' class='progressFill good'></div></div><div class='statusValue'>[viable_occupant.health] %</div></div>" occupant_status += "<div class='line'><div class='statusLabel'>Health:</div><div class='progressBar'><div style='width: [viable_occupant.health]%;' class='progressFill good'></div></div><div class='statusValue'>[viable_occupant.health] %</div></div>"
occupant_status += "<div class='line'><div class='statusLabel'>Radiation Level:</div><div class='progressBar'><div style='width: [viable_occupant.radiation]%;' class='progressFill bad'></div></div><div class='statusValue'>[viable_occupant.radiation] %</div></div>" occupant_status += "<div class='line'><div class='statusLabel'>Radiation Level:</div><div class='progressBar'><div style='width: [viable_occupant.radiation]%;' class='progressFill bad'></div></div><div class='statusValue'>[viable_occupant.radiation] %</div></div>"
var/rejuvenators = viable_occupant.reagents.get_reagent_amount("epinephrine") var/rejuvenators = viable_occupant.reagents.get_reagent_amount("potass_iodide")
occupant_status += "<div class='line'><div class='statusLabel'>Rejuvenators:</div><div class='progressBar'><div style='width: [round((rejuvenators / REJUVENATORS_MAX) * 100)]%;' class='progressFill highlight'></div></div><div class='statusValue'>[rejuvenators] units</div></div>" occupant_status += "<div class='line'><div class='statusLabel'>Rejuvenators:</div><div class='progressBar'><div style='width: [round((rejuvenators / REJUVENATORS_MAX) * 100)]%;' class='progressFill highlight'></div></div><div class='statusValue'>[rejuvenators] units</div></div>"
occupant_status += "<div class='line'><div class='statusLabel'>Unique Enzymes :</div><div class='statusValue'><span class='highlight'>[viable_occupant.dna.unique_enzymes]</span></div></div>" occupant_status += "<div class='line'><div class='statusLabel'>Unique Enzymes :</div><div class='statusValue'><span class='highlight'>[viable_occupant.dna.unique_enzymes]</span></div></div>"
occupant_status += "<div class='line'><div class='statusLabel'>Last Operation:</div><div class='statusValue'>[last_change ? last_change : "----"]</div></div>" occupant_status += "<div class='line'><div class='statusLabel'>Last Operation:</div><div class='statusValue'>[last_change ? last_change : "----"]</div></div>"
@@ -350,9 +350,9 @@
current_screen = href_list["text"] current_screen = href_list["text"]
if("rejuv") if("rejuv")
if(viable_occupant && viable_occupant.reagents) if(viable_occupant && viable_occupant.reagents)
var/epinephrine_amount = viable_occupant.reagents.get_reagent_amount("epinephrine") var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount("potass_iodide")
var/can_add = max(min(REJUVENATORS_MAX - epinephrine_amount, REJUVENATORS_INJECT), 0) var/can_add = max(min(REJUVENATORS_MAX - potassiodide_amount, REJUVENATORS_INJECT), 0)
viable_occupant.reagents.add_reagent("epinephrine", can_add) viable_occupant.reagents.add_reagent("potass_iodide", can_add)
if("setbufferlabel") if("setbufferlabel")
var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null) var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null)
if(num && text) if(num && text)

View File

@@ -27,13 +27,17 @@
if ("small") if ("small")
new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src)
new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src)
new /obj/item/clothing/mask/breath(src)
new /obj/item/clothing/mask/breath(src)
if ("aid") if ("aid")
new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src)
new /obj/item/weapon/storage/firstaid/o2(src) new /obj/item/weapon/storage/firstaid/o2(src)
new /obj/item/clothing/mask/breath(src)
if ("tank") if ("tank")
new /obj/item/weapon/tank/internals/air(src) new /obj/item/weapon/tank/internals/air(src)
new /obj/item/clothing/mask/breath(src)
if ("both") if ("both")
new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src)

View File

@@ -4,6 +4,7 @@
name = "necropolis chest" name = "necropolis chest"
desc = "It's watching you closely." desc = "It's watching you closely."
icon_state = "necrocrate" icon_state = "necrocrate"
burn_state = LAVA_PROOF
/obj/structure/closet/crate/necropolis/tendril /obj/structure/closet/crate/necropolis/tendril
desc = "It's watching you suspiciously." desc = "It's watching you suspiciously."

View File

@@ -19,4 +19,6 @@
msg += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n" msg += "[src]Core.exe has stopped responding! NTOS is searching for a solution to the problem...\n"
msg += "*---------*</span>" msg += "*---------*</span>"
user << msg user << msg
..()

View File

@@ -0,0 +1,4 @@
/mob/living/silicon/examine(mob/user)
if(laws && isobserver(user))
user << "<b>[src] has the following laws:</b>"
laws.show_laws(user)

View File

@@ -47,3 +47,5 @@
msg += "*---------*</span>" msg += "*---------*</span>"
user << msg user << msg
..()

View File

@@ -58,6 +58,7 @@
/datum/reagent/toxin/plasma/on_mob_life(mob/living/M) /datum/reagent/toxin/plasma/on_mob_life(mob/living/M)
if(holder.has_reagent("epinephrine")) if(holder.has_reagent("epinephrine"))
holder.remove_reagent("epinephrine", 2*REM) holder.remove_reagent("epinephrine", 2*REM)
M.apply_effect(0.5*REM/M.metabolism_efficiency,IRRADIATE,0)
if(iscarbon(M)) if(iscarbon(M))
var/mob/living/carbon/C = M var/mob/living/carbon/C = M
C.adjustPlasma(20) C.adjustPlasma(20)