The cyborg chameleon projector can now transform into every (crew) cyborg type (#20088)

* Reworks the cyborg chameleon projector

* bamf

* ryan's review

* oop

* wait that too
This commit is contained in:
GDN
2023-01-16 20:53:06 -05:00
committed by GitHub
parent 1de0721d90
commit 9e73cb9cfa
2 changed files with 54 additions and 20 deletions
@@ -180,7 +180,7 @@
var/active = FALSE
var/activationCost = 300
var/activationUpkeep = 50
var/disguise = "landmate"
var/image/disguise
var/mob/living/silicon/robot/syndicate/saboteur/S
/obj/item/borg_chameleon/Destroy()
@@ -207,44 +207,78 @@
/obj/item/borg_chameleon/proc/toggle(mob/living/silicon/robot/syndicate/saboteur/user)
if(active)
playsound(src, 'sound/effects/pop.ogg', 100, 1, -6)
to_chat(user, "<span class='notice'>You deactivate [src].</span>")
deactivate(user)
to_chat(user, "<span class='notice'>You reconfigure [src].</span>")
activate(user)
return
to_chat(user, "<span class='notice'>You activate [src].</span>")
apply_wibbly_filters(user)
if(do_after(user, 5 SECONDS, target = user) && user.cell.use(activationCost))
activate(user)
else
to_chat(user, "<span class='notice'>You activate [src].</span>")
apply_wibbly_filters(user)
if(do_after(user, 50, target = user) && user.cell.use(activationCost))
playsound(src, 'sound/effects/bamf.ogg', 100, 1, -6)
to_chat(user, "<span class='notice'>You are now disguised as a Nanotrasen engineering cyborg.</span>")
activate(user)
else
to_chat(user, "<span class='warning'>The chameleon field fizzles.</span>")
do_sparks(3, FALSE, user)
remove_wibbly_filters(user)
to_chat(user, "<span class='warning'>The chameleon field fizzles.</span>")
do_sparks(3, FALSE, user)
remove_wibbly_filters(user)
/obj/item/borg_chameleon/process()
if(S)
if(!S.cell || !S.cell.use(activationUpkeep))
disrupt(S)
else
return PROCESS_KILL
return
return PROCESS_KILL
/obj/item/borg_chameleon/proc/activate(mob/living/silicon/robot/syndicate/saboteur/user)
var/static/list/module_options = list(
"Engineering" = image('icons/mob/robots.dmi', "engi-radial"),
"Janitor" = image('icons/mob/robots.dmi', "jan-radial"),
"Medical" = image('icons/mob/robots.dmi', "med-radial"),
"Mining" = image('icons/mob/robots.dmi', "mining-radial"),
"Service" = image('icons/mob/robots.dmi', "serv-radial"),
"Cancel Cloaking" = image('icons/mob/screen_gen.dmi', "x"))
var/selected_module = show_radial_menu(user, user, module_options, radius = 42)
if(!selected_module)
return
var/examine_text = "you shouldn't see this"
switch(selected_module)
if("Mining")
examine_text = "miner robot module"
if("Service")
examine_text = "service robot module"
if("Medical")
examine_text = "medical robot module"
if("Janitor")
examine_text = "janitorial robot module"
if("Engineering")
examine_text = "engineering robot module"
if("Cancel Cloaking")
deactivate(user)
return
var/module_sprites = user.get_module_sprites(selected_module)
var/selected_sprite = show_radial_menu(user, user, module_sprites, radius = 42)
if(!selected_sprite)
return
disguise = module_sprites[selected_sprite]
var/list/name_check = splittext(selected_sprite, "-")
user.custom_panel = trim(name_check[1])
START_PROCESSING(SSobj, src)
S = user
user.base_icon = disguise
user.icon_state = disguise
user.icon = disguise.icon
user.icon_state = disguise.icon_state
user.cham_proj = src
user.module.name = examine_text
user.bubble_icon = "robot"
active = TRUE
user.update_icons()
playsound(src, 'sound/effects/bamf.ogg', 100, TRUE, -6)
to_chat(user, "<span class='notice'>You are now disguised as a Nanotrasen [selected_module] cyborg.</span>")
/obj/item/borg_chameleon/proc/deactivate(mob/living/silicon/robot/syndicate/saboteur/user)
STOP_PROCESSING(SSobj, src)
S = user
user.base_icon = initial(user.base_icon)
user.icon = initial(user.icon)
user.icon_state = initial(user.icon_state)
user.module.name = initial(user.module.name)
user.bubble_icon = "syndibot"
user.custom_panel = null
active = FALSE
user.update_icons()