mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
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:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user