mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 03:33:21 +00:00
Merge pull request #3979 from Anewbe/tracking_implant
Improves tracking implant code, adds a tracking implant variant to the loadout
This commit is contained in:
@@ -352,6 +352,8 @@ var/global/datum/controller/occupations/job_master
|
|||||||
H << "<span class='warning'>Your current species, job or whitelist status does not permit you to spawn with [thing]!</span>"
|
H << "<span class='warning'>Your current species, job or whitelist status does not permit you to spawn with [thing]!</span>"
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
H.amend_exploitable(G.path)
|
||||||
|
|
||||||
if(G.slot == "implant")
|
if(G.slot == "implant")
|
||||||
H.implant_loadout(G)
|
H.implant_loadout(G)
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -69,8 +69,37 @@
|
|||||||
/obj/item/weapon/implant/tracking
|
/obj/item/weapon/implant/tracking
|
||||||
name = "tracking implant"
|
name = "tracking implant"
|
||||||
desc = "Track with this."
|
desc = "Track with this."
|
||||||
var/id = 1.0
|
var/id = 1
|
||||||
|
var/degrade_time = 10 MINUTES //How long before the implant stops working outside of a living body.
|
||||||
|
|
||||||
|
/obj/item/weapon/implant/tracking/weak //This is for the loadout
|
||||||
|
degrade_time = 2.5 MINUTES
|
||||||
|
|
||||||
|
/obj/item/weapon/implant/tracking/New()
|
||||||
|
id = rand(1, 1000)
|
||||||
|
..()
|
||||||
|
|
||||||
|
/obj/item/weapon/implant/tracking/implanted(var/mob/source)
|
||||||
|
processing_objects.Add(src)
|
||||||
|
listening_objects |= src
|
||||||
|
return 1
|
||||||
|
|
||||||
|
/obj/item/weapon/implant/tracking/Destroy()
|
||||||
|
processing_objects.Remove(src)
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/obj/item/weapon/implant/tracking/process()
|
||||||
|
var/implant_location = src.loc
|
||||||
|
if(ismob(implant_location))
|
||||||
|
var/mob/living/L = implant_location
|
||||||
|
if(L.stat == DEAD)
|
||||||
|
if(world.time >= L.timeofdeath + degrade_time)
|
||||||
|
name = "melted implant"
|
||||||
|
desc = "Charred circuit in melted plastic case. Wonder what that used to be..."
|
||||||
|
icon_state = "implant_melted"
|
||||||
|
malfunction = MALFUNCTION_PERMANENT
|
||||||
|
processing_objects.Remove(src)
|
||||||
|
return 1
|
||||||
|
|
||||||
/obj/item/weapon/implant/tracking/get_data()
|
/obj/item/weapon/implant/tracking/get_data()
|
||||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||||
|
|||||||
@@ -82,7 +82,7 @@
|
|||||||
if (href_list["tracking_id"])
|
if (href_list["tracking_id"])
|
||||||
var/obj/item/weapon/implant/tracking/T = src.case.imp
|
var/obj/item/weapon/implant/tracking/T = src.case.imp
|
||||||
T.id += text2num(href_list["tracking_id"])
|
T.id += text2num(href_list["tracking_id"])
|
||||||
T.id = min(100, T.id)
|
T.id = min(1000, T.id)
|
||||||
T.id = max(1, T.id)
|
T.id = max(1, T.id)
|
||||||
|
|
||||||
if (istype(src.loc, /mob))
|
if (istype(src.loc, /mob))
|
||||||
|
|||||||
@@ -79,13 +79,8 @@ Frequency:
|
|||||||
|
|
||||||
src.temp += "<B>Extranneous Signals:</B><BR>"
|
src.temp += "<B>Extranneous Signals:</B><BR>"
|
||||||
for (var/obj/item/weapon/implant/tracking/W in world)
|
for (var/obj/item/weapon/implant/tracking/W in world)
|
||||||
if (!W.implanted || !(istype(W.loc,/obj/item/organ/external) || ismob(W.loc)))
|
if (!W.implanted || !(istype(W.loc,/obj/item/organ/external) || ismob(W.loc) || W.malfunction))
|
||||||
continue
|
continue
|
||||||
else
|
|
||||||
var/mob/M = W.loc
|
|
||||||
if (M.stat == 2)
|
|
||||||
if (M.timeofdeath + 6000 < world.time)
|
|
||||||
continue
|
|
||||||
|
|
||||||
var/turf/tr = get_turf(W)
|
var/turf/tr = get_turf(W)
|
||||||
if (tr.z == sr.z && tr)
|
if (tr.z == sr.z && tr)
|
||||||
|
|||||||
@@ -204,6 +204,7 @@ var/list/gear_datums = list()
|
|||||||
var/whitelisted //Term to check the whitelist for..
|
var/whitelisted //Term to check the whitelist for..
|
||||||
var/sort_category = "General"
|
var/sort_category = "General"
|
||||||
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
|
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
|
||||||
|
var/exploitable = 0 //Does it go on the exploitable information list?
|
||||||
|
|
||||||
/datum/gear/New()
|
/datum/gear/New()
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -76,12 +76,20 @@
|
|||||||
display_name = "cell, device"
|
display_name = "cell, device"
|
||||||
path = /obj/item/weapon/cell/device
|
path = /obj/item/weapon/cell/device
|
||||||
|
|
||||||
/datum/gear/utility/implant //This does nothing if you don't actually know EAL.
|
/datum/gear/utility/implant
|
||||||
|
exploitable = 1
|
||||||
|
|
||||||
|
/datum/gear/utility/implant/eal //This does nothing if you don't actually know EAL.
|
||||||
display_name = "implant, language, EAL"
|
display_name = "implant, language, EAL"
|
||||||
path = /obj/item/weapon/implant/language/eal
|
path = /obj/item/weapon/implant/language/eal
|
||||||
cost = 2
|
cost = 2
|
||||||
slot = "implant"
|
slot = "implant"
|
||||||
var/implant_type = "EAL"
|
|
||||||
|
/datum/gear/utility/implant/tracking
|
||||||
|
display_name = "implant, tracking"
|
||||||
|
path = /obj/item/weapon/implant/tracking/weak
|
||||||
|
cost = 10
|
||||||
|
slot = "implant"
|
||||||
|
|
||||||
/datum/gear/utility/translator
|
/datum/gear/utility/translator
|
||||||
display_name = "universal translator"
|
display_name = "universal translator"
|
||||||
|
|||||||
@@ -1657,12 +1657,13 @@
|
|||||||
|
|
||||||
for(var/obj/item/weapon/implant/I in src)
|
for(var/obj/item/weapon/implant/I in src)
|
||||||
if(I.implanted)
|
if(I.implanted)
|
||||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
if(!I.malfunction)
|
||||||
holder1.icon_state = "hud_imp_tracking"
|
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||||
if(istype(I,/obj/item/weapon/implant/loyalty))
|
holder1.icon_state = "hud_imp_tracking"
|
||||||
holder2.icon_state = "hud_imp_loyal"
|
if(istype(I,/obj/item/weapon/implant/loyalty))
|
||||||
if(istype(I,/obj/item/weapon/implant/chem))
|
holder2.icon_state = "hud_imp_loyal"
|
||||||
holder3.icon_state = "hud_imp_chem"
|
if(istype(I,/obj/item/weapon/implant/chem))
|
||||||
|
holder3.icon_state = "hud_imp_chem"
|
||||||
|
|
||||||
hud_list[IMPTRACK_HUD] = holder1
|
hud_list[IMPTRACK_HUD] = holder1
|
||||||
hud_list[IMPLOYAL_HUD] = holder2
|
hud_list[IMPLOYAL_HUD] = holder2
|
||||||
|
|||||||
@@ -1059,6 +1059,13 @@ mob/proc/yank_out_object()
|
|||||||
/mob/proc/is_muzzled()
|
/mob/proc/is_muzzled()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
//Exploitable Info Update
|
||||||
|
|
||||||
|
/mob/proc/amend_exploitable(var/obj/item/I)
|
||||||
|
var/obj/item/exploit_item = new I(src.loc)
|
||||||
|
exploit_addons |= exploit_item
|
||||||
|
var/exploitmsg = html_decode("\n" + "Has " + exploit_item.name + ".")
|
||||||
|
exploit_record += exploitmsg
|
||||||
|
|
||||||
/client/proc/check_has_body_select()
|
/client/proc/check_has_body_select()
|
||||||
return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel)
|
return mob && mob.hud_used && istype(mob.zone_sel, /obj/screen/zone_sel)
|
||||||
|
|||||||
@@ -72,6 +72,7 @@
|
|||||||
var/sec_record = ""
|
var/sec_record = ""
|
||||||
var/gen_record = ""
|
var/gen_record = ""
|
||||||
var/exploit_record = ""
|
var/exploit_record = ""
|
||||||
|
var/exploit_addons = list() //Assorted things that show up at the end of the exploit_record list
|
||||||
var/blinded = null
|
var/blinded = null
|
||||||
var/bhunger = 0 //Carbon
|
var/bhunger = 0 //Carbon
|
||||||
var/ajourn = 0
|
var/ajourn = 0
|
||||||
|
|||||||
Reference in New Issue
Block a user