diff --git a/code/modules/psionics/equipment/psipower.dm b/code/modules/psionics/equipment/psipower.dm index d99d3e59f25..47d537d9cc8 100644 --- a/code/modules/psionics/equipment/psipower.dm +++ b/code/modules/psionics/equipment/psipower.dm @@ -2,8 +2,10 @@ name = "psychic power" icon = 'icons/obj/psychic_powers.dmi' flags = 0 - simulated = 1 - anchored = 1 + anchored = TRUE + throwforce = 0 //Just to be on the safe side + throw_range = 0 + throw_speed = 0 var/maintain_cost = 3 var/mob/living/owner @@ -31,6 +33,9 @@ /obj/item/psychic_power/dropped() ..() + QDEL_IN(src, 1) + +/obj/item/psychic_power/on_give() qdel(src) /obj/item/psychic_power/process() diff --git a/code/modules/psionics/equipment/psipower_tinker.dm b/code/modules/psionics/equipment/psipower_tinker.dm index 4b62cf5c54a..adf3bf0b1ef 100644 --- a/code/modules/psionics/equipment/psipower_tinker.dm +++ b/code/modules/psionics/equipment/psipower_tinker.dm @@ -1,39 +1,45 @@ /obj/item/psychic_power/tinker name = "psychokinetic crowbar" - icon_state = "tinker" - force = 1 - var/emulating = "Crowbar" + icon_state = "crowbar" + force = 5 + var/emulating = "crowbar" + var/list/tools = list("crowbar", "wrench", "screwdriver", "cutters") + +/obj/item/psychic_power/tinker/Initialize(mapload, ...) + . = ..() + var/list/new_tools = list() + for(var/tool_name in tools) + var/image/radial_image = image('icons/obj/psychic_powers.dmi', tool_name) + new_tools[capitalize_first_letters(tool_name)] = radial_image + tools = new_tools /obj/item/psychic_power/tinker/iscrowbar() - return emulating == "Crowbar" + return emulating == "crowbar" /obj/item/psychic_power/tinker/iswrench() - return emulating == "Wrench" + return emulating == "wrench" /obj/item/psychic_power/tinker/isscrewdriver() - return emulating == "Screwdriver" + return emulating == "screwdriver" /obj/item/psychic_power/tinker/iswirecutter() - return emulating == "Wirecutters" - -/obj/item/psychic_power/tinker/attack_self() + return emulating == "cutters" +/obj/item/psychic_power/tinker/attack_self(mob/user) if(!owner || loc != owner) return - var/choice = input("Select a tool to emulate.","Power") as null|anything in list("Crowbar","Wrench","Screwdriver","Wirecutters","Dismiss") + var/choice = show_radial_menu(user, user, tools, radius = 42, tooltips = TRUE) if(!choice) - return - - if(!owner || loc != owner) - return - - if(choice == "Dismiss") - sound_to(owner, 'sound/effects/psi/power_fail.ogg') + playsound(get_turf(src), 'sound/effects/psi/power_fail.ogg', 40, TRUE) owner.drop_from_inventory(src) return - emulating = choice - name = "psychokinetic [lowertext(emulating)]" - to_chat(owner, "You begin emulating \a [lowertext(emulating)].") - sound_to(owner, 'sound/effects/psi/power_fabrication.ogg') + if(!owner || loc != owner) + return + + emulating = lowertext(choice) + name = "psychokinetic [emulating]" + icon_state = emulating + to_chat(owner, SPAN_NOTICE("You begin emulating \a [emulating].")) + playsound(get_turf(src), 'sound/effects/psi/power_fabrication.ogg', 40, TRUE) \ No newline at end of file diff --git a/code/modules/psionics/equipment/psipower_tk.dm b/code/modules/psionics/equipment/psipower_tk.dm index 34de21f0634..b321a78b8e7 100644 --- a/code/modules/psionics/equipment/psipower_tk.dm +++ b/code/modules/psionics/equipment/psipower_tk.dm @@ -15,7 +15,6 @@ . = ..() /obj/item/psychic_power/telekinesis/proc/set_focus(var/atom/movable/_focus) - if(!_focus.simulated || !istype(_focus.loc, /turf)) return FALSE @@ -51,7 +50,6 @@ return focus.do_simple_ranged_interaction(user) /obj/item/psychic_power/telekinesis/afterattack(var/atom/target, var/mob/living/user, var/proximity) - if(!target || !user || (isobj(target) && !isturf(target.loc)) || !user.psi || !user.psi.can_use() || !user.psi.spend_power(5)) return @@ -93,4 +91,4 @@ O.icon_state = "nothing" flick("empdisable",O) sleep(5) - qdel(O) + qdel(O) \ No newline at end of file diff --git a/html/changelogs/geeves-psipower_tweakery.yml b/html/changelogs/geeves-psipower_tweakery.yml new file mode 100644 index 00000000000..f6a608d5dcc --- /dev/null +++ b/html/changelogs/geeves-psipower_tweakery.yml @@ -0,0 +1,8 @@ +author: Geeves + +delete-after: True + +changes: + - tweak: "Psychokinetic tools have been given new sprites. Changing what it's emulating has now been given a radial menu." + - bugfix: "Psychokinetic tools, psi-blades, and telekinetic grabs now properly delete when dropped or thrown." + - tweak: "Psi-tools now do slightly more damage, 5, up from 1." diff --git a/icons/obj/psychic_powers.dmi b/icons/obj/psychic_powers.dmi index f238fb3a93a..d98e588151d 100644 Binary files a/icons/obj/psychic_powers.dmi and b/icons/obj/psychic_powers.dmi differ