From d9903511e880f343eea63de03cfe5ac8f8883c03 Mon Sep 17 00:00:00 2001
From: Henri215 <77684085+Henri215@users.noreply.github.com>
Date: Sun, 16 Oct 2022 12:43:50 -0300
Subject: [PATCH] Adds the chameleon counterfeiter (#19335)
* added cham counterfeit main code
* overlays and uplink
* icon
* small message fix
* adjustments
* updated cost
* Apply suggestions from code review
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* remvoved duplicated and added suggestion
* description
* adjustment
* moved to new file
* moved to new file and farie suggestion
* added examine override
* removed unnecessary stuff
* Update code/game/objects/items/devices/chameleon_counter.dm
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
* removed unnecessary stuff
* Update code/datums/uplink_item.dm
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
* lewcc suggestions
* moved playsound to before if
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
---
code/datums/uplink_item.dm | 7 ++
.../items/devices/chameleon_counter.dm | 77 ++++++++++++++++++
icons/obj/device.dmi | Bin 49714 -> 50074 bytes
paradise.dme | 1 +
4 files changed, 85 insertions(+)
create mode 100644 code/game/objects/items/devices/chameleon_counter.dm
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 043f96d19d6..52b20188bda 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -1268,6 +1268,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/chameleon
cost = 7
+/datum/uplink_item/stealthy_tools/chameleon_counter
+ name = "Chameleon Counterfeiter"
+ desc = "This device disguises itself as any object scanned by it. The disguise is not a perfect replica and can be noticed when examined by an observer."
+ reference = "CC"
+ item = /obj/item/chameleon_counterfeiter
+ cost = 2
+
/datum/uplink_item/stealthy_tools/camera_bug
name = "Camera Bug"
desc = "Enables you to view all cameras on the network to track a target."
diff --git a/code/game/objects/items/devices/chameleon_counter.dm b/code/game/objects/items/devices/chameleon_counter.dm
new file mode 100644
index 00000000000..502a81865ee
--- /dev/null
+++ b/code/game/objects/items/devices/chameleon_counter.dm
@@ -0,0 +1,77 @@
+/obj/item/chameleon_counterfeiter
+ name = "chameleon counterfeiter"
+ icon = 'icons/obj/device.dmi'
+ icon_state = "cham_counter"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+ item_state = "electronic"
+ w_class = WEIGHT_CLASS_SMALL
+ origin_tech = "syndicate=3;magnets=3"
+ var/can_use = TRUE
+ var/saved_name
+ var/saved_desc
+ var/saved_icon
+ var/saved_icon_state
+ var/saved_item_state
+ var/saved_overlays
+ var/saved_underlays
+ var/dummy_active = FALSE
+
+/obj/item/chameleon_counterfeiter/examine(mob/user)
+ . = ..()
+ if(dummy_active)
+ . += "It doesn't look quite right..."
+
+/obj/item/chameleon_counterfeiter/afterattack(obj/item/target, mob/user, proximity)
+ if(!proximity || !check_sprite(target) || target.alpha < 255 || target.invisibility != 0)
+ return
+ if(dummy_active || !isitem(target))
+ return
+ playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, 1, -6)
+ to_chat(user, "Scanned [target].")
+ saved_name = target.name
+ saved_desc = target.desc
+ saved_icon = target.icon
+ saved_icon_state = target.icon_state
+ saved_item_state = target.item_state
+ saved_overlays = target.overlays
+ saved_underlays = target.underlays
+
+/obj/item/chameleon_counterfeiter/proc/check_sprite(atom/target)
+ return (target.icon_state in icon_states(target.icon))
+
+/obj/item/chameleon_counterfeiter/proc/matter_toggle(mob/living/user)
+ if(!can_use || !saved_name)
+ return
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 100, 1, -6)
+ if(dummy_active)
+ matter_deactivate()
+ to_chat(user, "You deactivate [src].")
+ else
+ to_chat(user, "You activate [src].")
+ matter_activate()
+
+/obj/item/chameleon_counterfeiter/proc/matter_activate()
+ name = saved_name
+ desc = saved_desc
+ icon = saved_icon
+ icon_state = saved_icon_state
+ item_state = saved_item_state
+ overlays = saved_overlays
+ underlays = saved_underlays
+ dummy_active = TRUE
+
+/obj/item/chameleon_counterfeiter/proc/matter_deactivate()
+ name = initial(name)
+ desc = initial(desc)
+ icon = initial(icon)
+ icon_state = initial(icon_state)
+ item_state = initial(item_state)
+ overlays = initial(overlays)
+ underlays = initial(underlays)
+ dummy_active = FALSE
+ can_use = FALSE
+ addtimer(VARSET_CALLBACK(src, can_use, TRUE), 3 SECONDS)
+
+/obj/item/chameleon_counterfeiter/attack_self(mob/living/user)
+ matter_toggle(user)
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 6f5251c9ba89151b904f6d10960c0da96c923051..2c9dee8178c53ab98f1f50ee53e32cc785301327 100644
GIT binary patch
delta 6868
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
delta 6524
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
diff --git a/paradise.dme b/paradise.dme
index 86447f6f077..24cd8caacc9 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -893,6 +893,7 @@
#include "code\game\objects\items\devices\aicard.dm"
#include "code\game\objects\items\devices\autopsy.dm"
#include "code\game\objects\items\devices\camera_bug.dm"
+#include "code\game\objects\items\devices\chameleon_counter.dm"
#include "code\game\objects\items\devices\chameleonproj.dm"
#include "code\game\objects\items\devices\enginepicker.dm"
#include "code\game\objects\items\devices\flash.dm"