mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 19:47:22 +01:00
File standardisation (#13131)
* Adds the check components * Adds in trailing newlines * Converts all CRLF to LF * Post merge EOF * Post merge line endings * Final commit
This commit is contained in:
@@ -8,4 +8,4 @@
|
||||
return "ERROR"
|
||||
else
|
||||
healthstring = "[round(imp_in.getOxyLoss())] - [round(imp_in.getFireLoss())] - [round(imp_in.getToxLoss())] - [round(imp_in.getBruteLoss())]"
|
||||
return healthstring
|
||||
return healthstring
|
||||
|
||||
@@ -1,87 +1,87 @@
|
||||
/obj/item/implant
|
||||
name = "implant"
|
||||
icon = 'icons/obj/implants.dmi'
|
||||
icon_state = "generic" //Shows up as the action button icon
|
||||
origin_tech = "materials=2;biotech=3;programming=2"
|
||||
|
||||
actions_types = list(/datum/action/item_action/hands_free/activate)
|
||||
var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like mindshield implants
|
||||
var/implanted = null
|
||||
var/mob/living/imp_in = null
|
||||
item_color = "b"
|
||||
var/allow_multiple = 0
|
||||
var/uses = -1
|
||||
flags = DROPDEL
|
||||
|
||||
|
||||
/obj/item/implant/proc/trigger(emote, mob/source, force)
|
||||
return
|
||||
|
||||
/obj/item/implant/proc/activate()
|
||||
return
|
||||
|
||||
/obj/item/implant/ui_action_click()
|
||||
activate("action_button")
|
||||
|
||||
|
||||
//What does the implant do upon injection?
|
||||
//return 1 if the implant injects
|
||||
//return -1 if the implant fails to inject
|
||||
//return 0 if there is no room for implant
|
||||
/obj/item/implant/proc/implant(var/mob/source, var/mob/user)
|
||||
var/obj/item/implant/imp_e = locate(src.type) in source
|
||||
if(!allow_multiple && imp_e && imp_e != src)
|
||||
if(imp_e.uses < initial(imp_e.uses)*2)
|
||||
if(uses == -1)
|
||||
imp_e.uses = -1
|
||||
else
|
||||
imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
|
||||
src.loc = source
|
||||
imp_in = source
|
||||
implanted = 1
|
||||
if(activated)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(source)
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
H.sec_hud_set_implants()
|
||||
|
||||
if(user)
|
||||
add_attack_logs(user, source, "Implanted with [src]")
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/implant/proc/removed(var/mob/source)
|
||||
src.loc = null
|
||||
imp_in = null
|
||||
implanted = 0
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(source)
|
||||
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
H.sec_hud_set_implants()
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/implant/Destroy()
|
||||
if(imp_in)
|
||||
removed(imp_in)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/implant/proc/get_data()
|
||||
return "No information available"
|
||||
|
||||
/obj/item/implant/dropped(mob/user)
|
||||
. = 1
|
||||
..()
|
||||
/obj/item/implant
|
||||
name = "implant"
|
||||
icon = 'icons/obj/implants.dmi'
|
||||
icon_state = "generic" //Shows up as the action button icon
|
||||
origin_tech = "materials=2;biotech=3;programming=2"
|
||||
|
||||
actions_types = list(/datum/action/item_action/hands_free/activate)
|
||||
var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like mindshield implants
|
||||
var/implanted = null
|
||||
var/mob/living/imp_in = null
|
||||
item_color = "b"
|
||||
var/allow_multiple = 0
|
||||
var/uses = -1
|
||||
flags = DROPDEL
|
||||
|
||||
|
||||
/obj/item/implant/proc/trigger(emote, mob/source, force)
|
||||
return
|
||||
|
||||
/obj/item/implant/proc/activate()
|
||||
return
|
||||
|
||||
/obj/item/implant/ui_action_click()
|
||||
activate("action_button")
|
||||
|
||||
|
||||
//What does the implant do upon injection?
|
||||
//return 1 if the implant injects
|
||||
//return -1 if the implant fails to inject
|
||||
//return 0 if there is no room for implant
|
||||
/obj/item/implant/proc/implant(var/mob/source, var/mob/user)
|
||||
var/obj/item/implant/imp_e = locate(src.type) in source
|
||||
if(!allow_multiple && imp_e && imp_e != src)
|
||||
if(imp_e.uses < initial(imp_e.uses)*2)
|
||||
if(uses == -1)
|
||||
imp_e.uses = -1
|
||||
else
|
||||
imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
|
||||
src.loc = source
|
||||
imp_in = source
|
||||
implanted = 1
|
||||
if(activated)
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(source)
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
H.sec_hud_set_implants()
|
||||
|
||||
if(user)
|
||||
add_attack_logs(user, source, "Implanted with [src]")
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/implant/proc/removed(var/mob/source)
|
||||
src.loc = null
|
||||
imp_in = null
|
||||
implanted = 0
|
||||
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(source)
|
||||
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
H.sec_hud_set_implants()
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/implant/Destroy()
|
||||
if(imp_in)
|
||||
removed(imp_in)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/implant/proc/get_data()
|
||||
return "No information available"
|
||||
|
||||
/obj/item/implant/dropped(mob/user)
|
||||
. = 1
|
||||
..()
|
||||
|
||||
@@ -44,4 +44,4 @@
|
||||
if(c.team == team)
|
||||
console = c
|
||||
break
|
||||
return console
|
||||
return console
|
||||
|
||||
@@ -174,4 +174,4 @@
|
||||
|
||||
/obj/item/implanter/dust/New()
|
||||
imp = new /obj/item/implant/dust(src)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -37,4 +37,4 @@
|
||||
|
||||
/obj/item/implantcase/krav_maga/New()
|
||||
imp = new /obj/item/implant/krav_maga(src)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -56,4 +56,4 @@
|
||||
|
||||
/obj/item/implantcase/mindshield/New()
|
||||
imp = new /obj/item/implant/mindshield(src)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -37,4 +37,4 @@
|
||||
|
||||
/obj/item/implantcase/track/New()
|
||||
imp = new /obj/item/implant/tracking(src)
|
||||
..()
|
||||
..()
|
||||
|
||||
@@ -1,102 +1,102 @@
|
||||
/obj/item/implantcase
|
||||
name = "implant case"
|
||||
desc = "A glass case containing an implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-0"
|
||||
item_state = "implantcase"
|
||||
throw_speed = 2
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
origin_tech = "materials=1;biotech=2"
|
||||
container_type = OPENCONTAINER | INJECTABLE | DRAWABLE
|
||||
materials = list(MAT_GLASS=500)
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
/obj/item/implantcase/update_icon()
|
||||
if(imp)
|
||||
icon_state = "implantcase-[imp.item_color]"
|
||||
origin_tech = imp.origin_tech
|
||||
flags = imp.flags & ~DROPDEL
|
||||
reagents = imp.reagents
|
||||
else
|
||||
icon_state = "implantcase-0"
|
||||
origin_tech = initial(origin_tech)
|
||||
flags = initial(flags)
|
||||
reagents = null
|
||||
|
||||
|
||||
/obj/item/implantcase/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
if(!in_range(src, user) && loc != user)
|
||||
return
|
||||
if(t)
|
||||
name = "implant case - '[t]'"
|
||||
else
|
||||
name = "implant case"
|
||||
else if(istype(W, /obj/item/implanter))
|
||||
var/obj/item/implanter/I = W
|
||||
if(I.imp)
|
||||
if(imp || I.imp.implanted)
|
||||
return
|
||||
I.imp.loc = src
|
||||
imp = I.imp
|
||||
I.imp = null
|
||||
update_icon()
|
||||
I.update_icon()
|
||||
else
|
||||
if(imp)
|
||||
if(I.imp)
|
||||
return
|
||||
imp.loc = I
|
||||
I.imp = imp
|
||||
imp = null
|
||||
update_icon()
|
||||
I.update_icon()
|
||||
|
||||
/*else if(istype(W, /obj/item/ammo_casing/shotgun/implanter))
|
||||
var/obj/item/ammo_casing/shotgun/implanter/I = W
|
||||
if(I.implanter)
|
||||
src.attackby(I.implanter, user, params) */ // COMING SOON -- c0
|
||||
|
||||
/obj/item/implantcase/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/implantcase/tracking
|
||||
name = "implant case - 'Tracking'"
|
||||
desc = "A glass case containing a tracking implant."
|
||||
|
||||
/obj/item/implantcase/tracking/New()
|
||||
imp = new /obj/item/implant/tracking(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/implantcase/weapons_auth
|
||||
name = "implant case - 'Firearms Authentication'"
|
||||
desc = "A glass case containing a firearms authentication implant."
|
||||
|
||||
/obj/item/implantcase/weapons_auth/New()
|
||||
imp = new /obj/item/implant/weapons_auth(src)
|
||||
..()
|
||||
|
||||
/obj/item/implantcase/adrenaline
|
||||
name = "implant case - 'Adrenaline'"
|
||||
desc = "A glass case containing an adrenaline implant."
|
||||
|
||||
/obj/item/implantcase/adrenaline/New()
|
||||
imp = new /obj/item/implant/adrenalin(src)
|
||||
..()
|
||||
|
||||
/obj/item/implantcase/death_alarm
|
||||
name = "Glass Case- 'Death Alarm'"
|
||||
desc = "A case containing a death alarm implant."
|
||||
|
||||
/obj/item/implantcase/death_alarm/New()
|
||||
imp = new /obj/item/implant/death_alarm(src)
|
||||
..()
|
||||
/obj/item/implantcase
|
||||
name = "implant case"
|
||||
desc = "A glass case containing an implant."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantcase-0"
|
||||
item_state = "implantcase"
|
||||
throw_speed = 2
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
origin_tech = "materials=1;biotech=2"
|
||||
container_type = OPENCONTAINER | INJECTABLE | DRAWABLE
|
||||
materials = list(MAT_GLASS=500)
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
/obj/item/implantcase/update_icon()
|
||||
if(imp)
|
||||
icon_state = "implantcase-[imp.item_color]"
|
||||
origin_tech = imp.origin_tech
|
||||
flags = imp.flags & ~DROPDEL
|
||||
reagents = imp.reagents
|
||||
else
|
||||
icon_state = "implantcase-0"
|
||||
origin_tech = initial(origin_tech)
|
||||
flags = initial(flags)
|
||||
reagents = null
|
||||
|
||||
|
||||
/obj/item/implantcase/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
if(!in_range(src, user) && loc != user)
|
||||
return
|
||||
if(t)
|
||||
name = "implant case - '[t]'"
|
||||
else
|
||||
name = "implant case"
|
||||
else if(istype(W, /obj/item/implanter))
|
||||
var/obj/item/implanter/I = W
|
||||
if(I.imp)
|
||||
if(imp || I.imp.implanted)
|
||||
return
|
||||
I.imp.loc = src
|
||||
imp = I.imp
|
||||
I.imp = null
|
||||
update_icon()
|
||||
I.update_icon()
|
||||
else
|
||||
if(imp)
|
||||
if(I.imp)
|
||||
return
|
||||
imp.loc = I
|
||||
I.imp = imp
|
||||
imp = null
|
||||
update_icon()
|
||||
I.update_icon()
|
||||
|
||||
/*else if(istype(W, /obj/item/ammo_casing/shotgun/implanter))
|
||||
var/obj/item/ammo_casing/shotgun/implanter/I = W
|
||||
if(I.implanter)
|
||||
src.attackby(I.implanter, user, params) */ // COMING SOON -- c0
|
||||
|
||||
/obj/item/implantcase/New()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/implantcase/tracking
|
||||
name = "implant case - 'Tracking'"
|
||||
desc = "A glass case containing a tracking implant."
|
||||
|
||||
/obj/item/implantcase/tracking/New()
|
||||
imp = new /obj/item/implant/tracking(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/implantcase/weapons_auth
|
||||
name = "implant case - 'Firearms Authentication'"
|
||||
desc = "A glass case containing a firearms authentication implant."
|
||||
|
||||
/obj/item/implantcase/weapons_auth/New()
|
||||
imp = new /obj/item/implant/weapons_auth(src)
|
||||
..()
|
||||
|
||||
/obj/item/implantcase/adrenaline
|
||||
name = "implant case - 'Adrenaline'"
|
||||
desc = "A glass case containing an adrenaline implant."
|
||||
|
||||
/obj/item/implantcase/adrenaline/New()
|
||||
imp = new /obj/item/implant/adrenalin(src)
|
||||
..()
|
||||
|
||||
/obj/item/implantcase/death_alarm
|
||||
name = "Glass Case- 'Death Alarm'"
|
||||
desc = "A case containing a death alarm implant."
|
||||
|
||||
/obj/item/implantcase/death_alarm/New()
|
||||
imp = new /obj/item/implant/death_alarm(src)
|
||||
..()
|
||||
|
||||
@@ -1,158 +1,158 @@
|
||||
/obj/machinery/implantchair
|
||||
name = "mindshield implanter"
|
||||
desc = "Used to implant occupants with mindshield implants."
|
||||
icon = 'icons/obj/machines/implantchair.dmi'
|
||||
icon_state = "implantchair"
|
||||
density = 1
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
|
||||
var/ready = 1
|
||||
var/malfunction = 0
|
||||
var/list/obj/item/implant/mindshield/implant_list = list()
|
||||
var/max_implants = 5
|
||||
var/injection_cooldown = 600
|
||||
var/replenish_cooldown = 6000
|
||||
var/replenishing = 0
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/injecting = 0
|
||||
|
||||
/obj/machinery/implantchair/proc
|
||||
go_out()
|
||||
put_mob(mob/living/carbon/M)
|
||||
implant(var/mob/M)
|
||||
add_implants()
|
||||
|
||||
|
||||
/obj/machinery/implantchair/New()
|
||||
..()
|
||||
add_implants()
|
||||
|
||||
|
||||
/obj/machinery/implantchair/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
var/health_text = ""
|
||||
if(src.occupant)
|
||||
if(src.occupant.health <= -100)
|
||||
health_text = "<FONT color=red>Dead</FONT>"
|
||||
else if(src.occupant.health < 0)
|
||||
health_text = "<FONT color=red>[round(src.occupant.health,0.1)]</FONT>"
|
||||
else
|
||||
health_text = "[round(src.occupant.health,0.1)]"
|
||||
|
||||
var/dat ="<B>Implanter Status</B><BR>"
|
||||
|
||||
dat +="<B>Current occupant:</B> [src.occupant ? "<BR>Name: [src.occupant]<BR>Health: [health_text]<BR>" : "<FONT color=red>None</FONT>"]<BR>"
|
||||
dat += "<B>Implants:</B> [src.implant_list.len ? "[implant_list.len]" : "<A href='?src=[UID()];replenish=1'>Replenish</A>"]<BR>"
|
||||
if(src.occupant)
|
||||
dat += "[src.ready ? "<A href='?src=[UID()];implant=1'>Implant</A>" : "Recharging"]<BR>"
|
||||
user.set_machine(src)
|
||||
user << browse(dat, "window=implant")
|
||||
onclose(user, "implant")
|
||||
|
||||
|
||||
/obj/machinery/implantchair/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(href_list["implant"])
|
||||
if(src.occupant)
|
||||
injecting = 1
|
||||
go_out()
|
||||
ready = 0
|
||||
spawn(injection_cooldown)
|
||||
ready = 1
|
||||
|
||||
if(href_list["replenish"])
|
||||
ready = 0
|
||||
spawn(replenish_cooldown)
|
||||
add_implants()
|
||||
ready = 1
|
||||
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/grab))
|
||||
var/obj/item/grab/G = W
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
var/mob/M = G.affecting
|
||||
if(M.has_buckled_mobs())
|
||||
to_chat(user, "[M] will not fit into [src] because [M.p_they()] [M.p_have()] a slime latched onto [M.p_their()] head.")
|
||||
return
|
||||
if(put_mob(M))
|
||||
qdel(G)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/go_out(mob/M)
|
||||
if(!( src.occupant ))
|
||||
return
|
||||
if(M == occupant) // so that the guy inside can't eject himself -Agouri
|
||||
return
|
||||
occupant.forceMove(loc)
|
||||
if(injecting)
|
||||
implant(src.occupant)
|
||||
injecting = 0
|
||||
src.occupant = null
|
||||
icon_state = "implantchair"
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/put_mob(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
to_chat(usr, "<span class='warning'>The [src.name] cannot hold this!</span>")
|
||||
return
|
||||
if(src.occupant)
|
||||
to_chat(usr, "<span class='warning'>The [src.name] is already occupied!</span>")
|
||||
return
|
||||
M.stop_pulling()
|
||||
M.forceMove(src)
|
||||
src.occupant = M
|
||||
src.add_fingerprint(usr)
|
||||
icon_state = "implantchair_on"
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/implantchair/implant(mob/M)
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if(!implant_list.len) return
|
||||
for(var/obj/item/implant/mindshield/imp in implant_list)
|
||||
if(!imp) continue
|
||||
if(istype(imp, /obj/item/implant/mindshield))
|
||||
M.visible_message("<span class='warning'>[M] has been implanted by the [src.name].</span>")
|
||||
|
||||
if(imp.implant(M))
|
||||
implant_list -= imp
|
||||
break
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/add_implants()
|
||||
for(var/i=0, i<src.max_implants, i++)
|
||||
var/obj/item/implant/mindshield/I = new /obj/item/implant/mindshield(src)
|
||||
implant_list += I
|
||||
return
|
||||
|
||||
/obj/machinery/implantchair/verb/get_out()
|
||||
set name = "Eject occupant"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
if(usr.stat != 0)
|
||||
return
|
||||
src.go_out(usr)
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/verb/move_inside()
|
||||
set name = "Move Inside"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
if(usr.stat != 0 || stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
put_mob(usr)
|
||||
return
|
||||
/obj/machinery/implantchair
|
||||
name = "mindshield implanter"
|
||||
desc = "Used to implant occupants with mindshield implants."
|
||||
icon = 'icons/obj/machines/implantchair.dmi'
|
||||
icon_state = "implantchair"
|
||||
density = 1
|
||||
opacity = 0
|
||||
anchored = 1
|
||||
|
||||
var/ready = 1
|
||||
var/malfunction = 0
|
||||
var/list/obj/item/implant/mindshield/implant_list = list()
|
||||
var/max_implants = 5
|
||||
var/injection_cooldown = 600
|
||||
var/replenish_cooldown = 6000
|
||||
var/replenishing = 0
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/injecting = 0
|
||||
|
||||
/obj/machinery/implantchair/proc
|
||||
go_out()
|
||||
put_mob(mob/living/carbon/M)
|
||||
implant(var/mob/M)
|
||||
add_implants()
|
||||
|
||||
|
||||
/obj/machinery/implantchair/New()
|
||||
..()
|
||||
add_implants()
|
||||
|
||||
|
||||
/obj/machinery/implantchair/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
var/health_text = ""
|
||||
if(src.occupant)
|
||||
if(src.occupant.health <= -100)
|
||||
health_text = "<FONT color=red>Dead</FONT>"
|
||||
else if(src.occupant.health < 0)
|
||||
health_text = "<FONT color=red>[round(src.occupant.health,0.1)]</FONT>"
|
||||
else
|
||||
health_text = "[round(src.occupant.health,0.1)]"
|
||||
|
||||
var/dat ="<B>Implanter Status</B><BR>"
|
||||
|
||||
dat +="<B>Current occupant:</B> [src.occupant ? "<BR>Name: [src.occupant]<BR>Health: [health_text]<BR>" : "<FONT color=red>None</FONT>"]<BR>"
|
||||
dat += "<B>Implants:</B> [src.implant_list.len ? "[implant_list.len]" : "<A href='?src=[UID()];replenish=1'>Replenish</A>"]<BR>"
|
||||
if(src.occupant)
|
||||
dat += "[src.ready ? "<A href='?src=[UID()];implant=1'>Implant</A>" : "Recharging"]<BR>"
|
||||
user.set_machine(src)
|
||||
user << browse(dat, "window=implant")
|
||||
onclose(user, "implant")
|
||||
|
||||
|
||||
/obj/machinery/implantchair/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if(href_list["implant"])
|
||||
if(src.occupant)
|
||||
injecting = 1
|
||||
go_out()
|
||||
ready = 0
|
||||
spawn(injection_cooldown)
|
||||
ready = 1
|
||||
|
||||
if(href_list["replenish"])
|
||||
ready = 0
|
||||
spawn(replenish_cooldown)
|
||||
add_implants()
|
||||
ready = 1
|
||||
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/grab))
|
||||
var/obj/item/grab/G = W
|
||||
if(!ismob(G.affecting))
|
||||
return
|
||||
var/mob/M = G.affecting
|
||||
if(M.has_buckled_mobs())
|
||||
to_chat(user, "[M] will not fit into [src] because [M.p_they()] [M.p_have()] a slime latched onto [M.p_their()] head.")
|
||||
return
|
||||
if(put_mob(M))
|
||||
qdel(G)
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/go_out(mob/M)
|
||||
if(!( src.occupant ))
|
||||
return
|
||||
if(M == occupant) // so that the guy inside can't eject himself -Agouri
|
||||
return
|
||||
occupant.forceMove(loc)
|
||||
if(injecting)
|
||||
implant(src.occupant)
|
||||
injecting = 0
|
||||
src.occupant = null
|
||||
icon_state = "implantchair"
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/put_mob(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
to_chat(usr, "<span class='warning'>The [src.name] cannot hold this!</span>")
|
||||
return
|
||||
if(src.occupant)
|
||||
to_chat(usr, "<span class='warning'>The [src.name] is already occupied!</span>")
|
||||
return
|
||||
M.stop_pulling()
|
||||
M.forceMove(src)
|
||||
src.occupant = M
|
||||
src.add_fingerprint(usr)
|
||||
icon_state = "implantchair_on"
|
||||
return 1
|
||||
|
||||
|
||||
/obj/machinery/implantchair/implant(mob/M)
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if(!implant_list.len) return
|
||||
for(var/obj/item/implant/mindshield/imp in implant_list)
|
||||
if(!imp) continue
|
||||
if(istype(imp, /obj/item/implant/mindshield))
|
||||
M.visible_message("<span class='warning'>[M] has been implanted by the [src.name].</span>")
|
||||
|
||||
if(imp.implant(M))
|
||||
implant_list -= imp
|
||||
break
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/add_implants()
|
||||
for(var/i=0, i<src.max_implants, i++)
|
||||
var/obj/item/implant/mindshield/I = new /obj/item/implant/mindshield(src)
|
||||
implant_list += I
|
||||
return
|
||||
|
||||
/obj/machinery/implantchair/verb/get_out()
|
||||
set name = "Eject occupant"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
if(usr.stat != 0)
|
||||
return
|
||||
src.go_out(usr)
|
||||
add_fingerprint(usr)
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/implantchair/verb/move_inside()
|
||||
set name = "Move Inside"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
if(usr.stat != 0 || stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
put_mob(usr)
|
||||
return
|
||||
|
||||
@@ -1,89 +1,89 @@
|
||||
/obj/item/implanter
|
||||
name = "implanter"
|
||||
desc = "A sterile automatic implant injector."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implanter0"
|
||||
item_state = "syringe_0"
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
origin_tech = "materials=2;biotech=3"
|
||||
materials = list(MAT_METAL=600, MAT_GLASS=200)
|
||||
toolspeed = 1
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
/obj/item/implanter/update_icon()
|
||||
if(imp)
|
||||
icon_state = "implanter1"
|
||||
origin_tech = imp.origin_tech
|
||||
else
|
||||
icon_state = "implanter0"
|
||||
origin_tech = initial(origin_tech)
|
||||
|
||||
|
||||
/obj/item/implanter/attack(mob/living/carbon/M, mob/user)
|
||||
if(!iscarbon(M))
|
||||
return
|
||||
if(user && imp)
|
||||
if(M != user)
|
||||
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
|
||||
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && (M == user || do_after(user, 50 * toolspeed, target = M)))
|
||||
if(user && M && (get_turf(M) == T) && src && imp)
|
||||
if(imp.implant(M, user))
|
||||
if(M == user)
|
||||
to_chat(user, "<span class='notice'>You implant yourself.</span>")
|
||||
else
|
||||
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you.</span>")
|
||||
imp = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/implanter/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
if(!in_range(src, user) && loc != user)
|
||||
return
|
||||
if(t)
|
||||
name = "implanter ([t])"
|
||||
else
|
||||
name = "implanter"
|
||||
|
||||
/obj/item/implanter/New()
|
||||
..()
|
||||
spawn(1)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/implanter/adrenalin
|
||||
name = "implanter (adrenalin)"
|
||||
|
||||
/obj/item/implanter/adrenalin/New()
|
||||
imp = new /obj/item/implant/adrenalin(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/implanter/emp
|
||||
name = "implanter (EMP)"
|
||||
|
||||
/obj/item/implanter/emp/New()
|
||||
imp = new /obj/item/implant/emp(src)
|
||||
..()
|
||||
|
||||
/obj/item/implanter/traitor
|
||||
name = "implanter (Mindslave)"
|
||||
|
||||
/obj/item/implanter/traitor/New()
|
||||
imp = new /obj/item/implant/traitor(src)
|
||||
..()
|
||||
|
||||
/obj/item/implanter/death_alarm
|
||||
name = "implanter (Death Alarm)"
|
||||
|
||||
/obj/item/implanter/death_alarm/New()
|
||||
imp = new /obj/item/implant/death_alarm(src)
|
||||
..()
|
||||
/obj/item/implanter
|
||||
name = "implanter"
|
||||
desc = "A sterile automatic implant injector."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implanter0"
|
||||
item_state = "syringe_0"
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
origin_tech = "materials=2;biotech=3"
|
||||
materials = list(MAT_METAL=600, MAT_GLASS=200)
|
||||
toolspeed = 1
|
||||
var/obj/item/implant/imp = null
|
||||
|
||||
|
||||
/obj/item/implanter/update_icon()
|
||||
if(imp)
|
||||
icon_state = "implanter1"
|
||||
origin_tech = imp.origin_tech
|
||||
else
|
||||
icon_state = "implanter0"
|
||||
origin_tech = initial(origin_tech)
|
||||
|
||||
|
||||
/obj/item/implanter/attack(mob/living/carbon/M, mob/user)
|
||||
if(!iscarbon(M))
|
||||
return
|
||||
if(user && imp)
|
||||
if(M != user)
|
||||
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
|
||||
|
||||
var/turf/T = get_turf(M)
|
||||
if(T && (M == user || do_after(user, 50 * toolspeed, target = M)))
|
||||
if(user && M && (get_turf(M) == T) && src && imp)
|
||||
if(imp.implant(M, user))
|
||||
if(M == user)
|
||||
to_chat(user, "<span class='notice'>You implant yourself.</span>")
|
||||
else
|
||||
M.visible_message("[user] has implanted [M].", "<span class='notice'>[user] implants you.</span>")
|
||||
imp = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/implanter/attackby(obj/item/W, mob/user, params)
|
||||
..()
|
||||
if(istype(W, /obj/item/pen))
|
||||
var/t = stripped_input(user, "What would you like the label to be?", name, null)
|
||||
if(user.get_active_hand() != W)
|
||||
return
|
||||
if(!in_range(src, user) && loc != user)
|
||||
return
|
||||
if(t)
|
||||
name = "implanter ([t])"
|
||||
else
|
||||
name = "implanter"
|
||||
|
||||
/obj/item/implanter/New()
|
||||
..()
|
||||
spawn(1)
|
||||
update_icon()
|
||||
|
||||
|
||||
/obj/item/implanter/adrenalin
|
||||
name = "implanter (adrenalin)"
|
||||
|
||||
/obj/item/implanter/adrenalin/New()
|
||||
imp = new /obj/item/implant/adrenalin(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/item/implanter/emp
|
||||
name = "implanter (EMP)"
|
||||
|
||||
/obj/item/implanter/emp/New()
|
||||
imp = new /obj/item/implant/emp(src)
|
||||
..()
|
||||
|
||||
/obj/item/implanter/traitor
|
||||
name = "implanter (Mindslave)"
|
||||
|
||||
/obj/item/implanter/traitor/New()
|
||||
imp = new /obj/item/implant/traitor(src)
|
||||
..()
|
||||
|
||||
/obj/item/implanter/death_alarm
|
||||
name = "implanter (Death Alarm)"
|
||||
|
||||
/obj/item/implanter/death_alarm/New()
|
||||
imp = new /obj/item/implant/death_alarm(src)
|
||||
..()
|
||||
|
||||
@@ -1,107 +1,107 @@
|
||||
/obj/item/implantpad
|
||||
name = "implantpad"
|
||||
desc = "Used to modify implants."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantpad-0"
|
||||
item_state = "electronic"
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/obj/item/implantcase/case = null
|
||||
|
||||
/obj/item/implantpad/Destroy()
|
||||
if(case)
|
||||
dropcase()
|
||||
return ..()
|
||||
|
||||
/obj/item/implantpad/update_icon()
|
||||
if(case)
|
||||
src.icon_state = "implantpad-1"
|
||||
else
|
||||
src.icon_state = "implantpad-0"
|
||||
return
|
||||
|
||||
/obj/item/implantpad/proc/addcase(mob/user as mob, obj/item/implantcase/C as obj)
|
||||
if(!user || !C)
|
||||
return
|
||||
if(case)
|
||||
to_chat(user, "<span class='warning'>There's already an implant in the pad!</span>")
|
||||
return
|
||||
user.unEquip(C)
|
||||
C.forceMove(src)
|
||||
case = C
|
||||
update_icon()
|
||||
|
||||
/obj/item/implantpad/proc/dropcase(mob/user as mob)
|
||||
if(!case)
|
||||
to_chat(user, "<span class='warning'>There's no implant in the pad!</span>")
|
||||
return
|
||||
if(user)
|
||||
if(user.put_in_hands(case))
|
||||
add_fingerprint(user)
|
||||
case.add_fingerprint(user)
|
||||
case = null
|
||||
update_icon()
|
||||
return
|
||||
|
||||
case.forceMove(get_turf(src))
|
||||
case = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/implantpad/verb/remove_implant()
|
||||
set category = "Object"
|
||||
set name = "Remove Implant"
|
||||
set src in usr
|
||||
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
dropcase(usr)
|
||||
|
||||
/obj/item/implantpad/attackby(obj/item/implantcase/C as obj, mob/user as mob, params)
|
||||
if(istype(C, /obj/item/implantcase))
|
||||
addcase(user, C)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/implantpad/attack_self(mob/user as mob)
|
||||
add_fingerprint(user)
|
||||
user.set_machine(src)
|
||||
var/dat = "<B>Implant Mini-Computer:</B><HR>"
|
||||
if(case)
|
||||
if(case.imp)
|
||||
if(istype(case.imp, /obj/item/implant))
|
||||
dat += "<A href='byond://?src=[UID()];removecase=1'>Remove Case</A><HR>"
|
||||
dat += case.imp.get_data()
|
||||
if(istype(case.imp, /obj/item/implant/tracking))
|
||||
var/obj/item/implant/tracking/T = case.imp
|
||||
dat += {"ID (1-100):
|
||||
<A href='byond://?src=[UID()];tracking_id=-10'>-</A>
|
||||
<A href='byond://?src=[UID()];tracking_id=-1'>-</A> [T.id]
|
||||
<A href='byond://?src=[UID()];tracking_id=1'>+</A>
|
||||
<A href='byond://?src=[UID()];tracking_id=10'>+</A><BR>"}
|
||||
else
|
||||
dat += "The implant casing is empty."
|
||||
else
|
||||
dat += "Please insert an implant casing!"
|
||||
user << browse(dat, "window=implantpad")
|
||||
onclose(user, "implantpad")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/implantpad/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
var/mob/living/user = usr
|
||||
if(href_list["tracking_id"])
|
||||
if(case && case.imp)
|
||||
var/obj/item/implant/tracking/T = case.imp
|
||||
T.id += text2num(href_list["tracking_id"])
|
||||
T.id = min(100, T.id)
|
||||
T.id = max(1, T.id)
|
||||
else if(href_list["removecase"])
|
||||
dropcase(user)
|
||||
|
||||
attack_self(user)
|
||||
return 1
|
||||
/obj/item/implantpad
|
||||
name = "implantpad"
|
||||
desc = "Used to modify implants."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "implantpad-0"
|
||||
item_state = "electronic"
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/obj/item/implantcase/case = null
|
||||
|
||||
/obj/item/implantpad/Destroy()
|
||||
if(case)
|
||||
dropcase()
|
||||
return ..()
|
||||
|
||||
/obj/item/implantpad/update_icon()
|
||||
if(case)
|
||||
src.icon_state = "implantpad-1"
|
||||
else
|
||||
src.icon_state = "implantpad-0"
|
||||
return
|
||||
|
||||
/obj/item/implantpad/proc/addcase(mob/user as mob, obj/item/implantcase/C as obj)
|
||||
if(!user || !C)
|
||||
return
|
||||
if(case)
|
||||
to_chat(user, "<span class='warning'>There's already an implant in the pad!</span>")
|
||||
return
|
||||
user.unEquip(C)
|
||||
C.forceMove(src)
|
||||
case = C
|
||||
update_icon()
|
||||
|
||||
/obj/item/implantpad/proc/dropcase(mob/user as mob)
|
||||
if(!case)
|
||||
to_chat(user, "<span class='warning'>There's no implant in the pad!</span>")
|
||||
return
|
||||
if(user)
|
||||
if(user.put_in_hands(case))
|
||||
add_fingerprint(user)
|
||||
case.add_fingerprint(user)
|
||||
case = null
|
||||
update_icon()
|
||||
return
|
||||
|
||||
case.forceMove(get_turf(src))
|
||||
case = null
|
||||
update_icon()
|
||||
|
||||
/obj/item/implantpad/verb/remove_implant()
|
||||
set category = "Object"
|
||||
set name = "Remove Implant"
|
||||
set src in usr
|
||||
|
||||
if(usr.stat || usr.restrained())
|
||||
return
|
||||
|
||||
dropcase(usr)
|
||||
|
||||
/obj/item/implantpad/attackby(obj/item/implantcase/C as obj, mob/user as mob, params)
|
||||
if(istype(C, /obj/item/implantcase))
|
||||
addcase(user, C)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/implantpad/attack_self(mob/user as mob)
|
||||
add_fingerprint(user)
|
||||
user.set_machine(src)
|
||||
var/dat = "<B>Implant Mini-Computer:</B><HR>"
|
||||
if(case)
|
||||
if(case.imp)
|
||||
if(istype(case.imp, /obj/item/implant))
|
||||
dat += "<A href='byond://?src=[UID()];removecase=1'>Remove Case</A><HR>"
|
||||
dat += case.imp.get_data()
|
||||
if(istype(case.imp, /obj/item/implant/tracking))
|
||||
var/obj/item/implant/tracking/T = case.imp
|
||||
dat += {"ID (1-100):
|
||||
<A href='byond://?src=[UID()];tracking_id=-10'>-</A>
|
||||
<A href='byond://?src=[UID()];tracking_id=-1'>-</A> [T.id]
|
||||
<A href='byond://?src=[UID()];tracking_id=1'>+</A>
|
||||
<A href='byond://?src=[UID()];tracking_id=10'>+</A><BR>"}
|
||||
else
|
||||
dat += "The implant casing is empty."
|
||||
else
|
||||
dat += "Please insert an implant casing!"
|
||||
user << browse(dat, "window=implantpad")
|
||||
onclose(user, "implantpad")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/implantpad/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
var/mob/living/user = usr
|
||||
if(href_list["tracking_id"])
|
||||
if(case && case.imp)
|
||||
var/obj/item/implant/tracking/T = case.imp
|
||||
T.id += text2num(href_list["tracking_id"])
|
||||
T.id = min(100, T.id)
|
||||
T.id = max(1, T.id)
|
||||
else if(href_list["removecase"])
|
||||
dropcase(user)
|
||||
|
||||
attack_self(user)
|
||||
return 1
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
/obj/item/implant/uplink
|
||||
name = "uplink implant"
|
||||
desc = "Summon things."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "radio"
|
||||
origin_tech = "materials=4;magnets=4;programming=4;biotech=4;syndicate=5;bluespace=5"
|
||||
|
||||
/obj/item/implant/uplink/New()
|
||||
hidden_uplink = new(src)
|
||||
hidden_uplink.uses = 10
|
||||
..()
|
||||
|
||||
/obj/item/implant/uplink/sit/New()
|
||||
..()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.uplink_type = "sit"
|
||||
|
||||
/obj/item/implant/uplink/admin/New()
|
||||
..()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.uplink_type = "admin"
|
||||
|
||||
/obj/item/implant/uplink/implant(mob/source)
|
||||
var/obj/item/implant/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
imp_e.hidden_uplink.uses += hidden_uplink.uses
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
if(..())
|
||||
hidden_uplink.uplink_owner="[source.key]"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/implant/uplink/activate()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.check_trigger(imp_in)
|
||||
|
||||
|
||||
/obj/item/implanter/uplink
|
||||
name = "implanter (uplink)"
|
||||
|
||||
/obj/item/implanter/uplink/New()
|
||||
imp = new /obj/item/implant/uplink(src)
|
||||
..()
|
||||
/obj/item/implant/uplink
|
||||
name = "uplink implant"
|
||||
desc = "Summon things."
|
||||
icon = 'icons/obj/radio.dmi'
|
||||
icon_state = "radio"
|
||||
origin_tech = "materials=4;magnets=4;programming=4;biotech=4;syndicate=5;bluespace=5"
|
||||
|
||||
/obj/item/implant/uplink/New()
|
||||
hidden_uplink = new(src)
|
||||
hidden_uplink.uses = 10
|
||||
..()
|
||||
|
||||
/obj/item/implant/uplink/sit/New()
|
||||
..()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.uplink_type = "sit"
|
||||
|
||||
/obj/item/implant/uplink/admin/New()
|
||||
..()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.uplink_type = "admin"
|
||||
|
||||
/obj/item/implant/uplink/implant(mob/source)
|
||||
var/obj/item/implant/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
imp_e.hidden_uplink.uses += hidden_uplink.uses
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
if(..())
|
||||
hidden_uplink.uplink_owner="[source.key]"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/implant/uplink/activate()
|
||||
if(hidden_uplink)
|
||||
hidden_uplink.check_trigger(imp_in)
|
||||
|
||||
|
||||
/obj/item/implanter/uplink
|
||||
name = "implanter (uplink)"
|
||||
|
||||
/obj/item/implanter/uplink/New()
|
||||
imp = new /obj/item/implant/uplink(src)
|
||||
..()
|
||||
|
||||
Reference in New Issue
Block a user