From 2c9c4f7a0a98795a96c0f60d2824f5b623eba2ba Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 9 Dec 2015 20:37:39 +0100 Subject: [PATCH 1/2] Adds Cloaker Belt --- .../objects/items/devices/traitordevices.dm | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index a7ecf241e68..61ae8ba0a41 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -143,4 +143,62 @@ effective or pretty fucking useless. attack_self(usr) add_fingerprint(usr) - return \ No newline at end of file + return + +/obj/item/device/shadowcloak + name = "cloaker belt" + desc = "Makes you invisible for short periods of time. Recharges in darkness." + icon = 'icons/obj/clothing/belts.dmi' + icon_state = "utilitybelt" + item_state = "utility" + slot_flags = SLOT_BELT + attack_verb = list("whipped", "lashed", "disciplined") + + var/mob/living/carbon/human/user = null + var/charge = 300 + var/max_charge = 300 + var/on = 0 + action_button_name = "Toggle Cloaker" + +/obj/item/device/shadowcloak/ui_action_click() + if(usr.get_item_by_slot(slot_belt) == src) + if(!on) + Activate(usr) + else + Deactivate() + return + +/obj/item/device/shadowcloak/proc/Activate(mob/living/carbon/human/user) + if(!user) + return + user << "You activate [src]." + src.user = user + SSobj.processing |= src + on = 1 + return + +/obj/item/device/shadowcloak/proc/Deactivate() + user << "You deactivate [src]." + SSobj.processing.Remove(src) + if(user) + user.alpha = initial(user.alpha) + on = 0 + user = null + return + +/obj/item/device/shadowcloak/dropped(mob/user) + if(user && user.get_item_by_slot(slot_belt) == src) + Deactivate() + return + +/obj/item/device/shadowcloak/process() + if(user.get_item_by_slot(slot_belt) != src) + Deactivate() + return + var/turf/simulated/T = get_turf(src) + if(on) + if(!T.lighting_object || T.get_lumcount() < 3) + charge = max(0,charge - 25)//Quick decrease in light + else + charge = min(max_charge,charge + 50) //Charge in the dark + animate(user,alpha = Clamp(255 - charge,0,255),time = 10) From 916d00c238ae776716fb04a7c41d7865ab0dae8f Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 16 Dec 2015 12:06:09 +0100 Subject: [PATCH 2/2] Minor fixes --- code/game/objects/items/devices/traitordevices.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 61ae8ba0a41..c4c0845d2b4 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -158,6 +158,7 @@ effective or pretty fucking useless. var/charge = 300 var/max_charge = 300 var/on = 0 + var/old_alpha = 0 action_button_name = "Toggle Cloaker" /obj/item/device/shadowcloak/ui_action_click() @@ -174,22 +175,20 @@ effective or pretty fucking useless. user << "You activate [src]." src.user = user SSobj.processing |= src + old_alpha = user.alpha on = 1 - return /obj/item/device/shadowcloak/proc/Deactivate() user << "You deactivate [src]." SSobj.processing.Remove(src) if(user) - user.alpha = initial(user.alpha) + user.alpha = old_alpha on = 0 user = null - return /obj/item/device/shadowcloak/dropped(mob/user) - if(user && user.get_item_by_slot(slot_belt) == src) + if(user && user.get_item_by_slot(slot_belt) != src) Deactivate() - return /obj/item/device/shadowcloak/process() if(user.get_item_by_slot(slot_belt) != src) @@ -197,7 +196,8 @@ effective or pretty fucking useless. return var/turf/simulated/T = get_turf(src) if(on) - if(!T.lighting_object || T.get_lumcount() < 3) + var/lumcount = T.get_lumcount() + if(lumcount > 3) charge = max(0,charge - 25)//Quick decrease in light else charge = min(max_charge,charge + 50) //Charge in the dark