diff --git a/baystation12.dme b/baystation12.dme
index e4c8cc0ca79..9953cacd6e1 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -520,7 +520,7 @@
#include "code\game\machinery\computer\id.dm"
#include "code\game\machinery\computer\lockdown.dm"
#include "code\game\machinery\computer\medical.dm"
-#include "code\game\machinery\computer\operating.dm"
+#include "code\game\machinery\computer\Operating.dm"
#include "code\game\machinery\computer\power.dm"
#include "code\game\machinery\computer\robot.dm"
#include "code\game\machinery\computer\security.dm"
@@ -1009,6 +1009,7 @@
#include "code\modules\projectiles\guns\projectile\shotgun.dm"
#include "code\modules\projectiles\projectile\beams.dm"
#include "code\modules\projectiles\projectile\bullets.dm"
+#include "code\modules\projectiles\projectile\change.dm"
#include "code\modules\projectiles\projectile\energy.dm"
#include "code\modules\projectiles\projectile\special.dm"
#include "code\modules\recycling\conveyor2.dm"
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index ccc8bfb2d3b..bfb5c85678b 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -18,6 +18,9 @@ obj/machinery/recharger
if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow))
user << "Your gun's recharge port was removed to make room for a miniaturized reactor."
return
+ if (istype(G, /obj/item/weapon/gun/energy/staff))
+ user << "It's a wooden staff, not a gun!"
+ return
user.drop_item()
G.loc = src
src.charging = G
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index 568f291e2d2..87230391edb 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -557,8 +557,8 @@
/obj/item/weapon/gun/rapidsyringe
name = "rapid syringe gun"
icon = 'gun.dmi'
- icon_state = "syringegun"
- item_state = "syringegun"
+ icon_state = "rapidsyringegun"
+ item_state = "rapidsyringegun"
w_class = 3.0
throw_speed = 4
throw_range = 10
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 45c7d5781eb..c3b345a278c 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -19,3 +19,35 @@
origin_tech = "combat=5;materials=4;powerstorage=3"
charge_cost = 100
projectile_type = "/obj/item/projectile/energy/declone"
+
+obj/item/weapon/gun/energy/staff
+ name = "staff of change"
+ desc = "an artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
+ icon = 'gun.dmi'
+ icon_state = "staff"
+ item_state = "staff"
+ fire_sound = 'emitter.ogg'
+ charge_cost = 200
+ projectile_type = "/obj/item/projectile/change"
+ origin_tech = null
+ var/charge_tick = 0
+
+
+ New()
+ ..()
+ processing_objects.Add(src)
+
+
+ Del()
+ processing_objects.Remove(src)
+ ..()
+
+
+ process()
+ charge_tick++
+ if(charge_tick < 4) return 0
+ charge_tick = 0
+ if(!power_supply) return 0
+ power_supply.give(200)
+ update_icon()
+ return 1
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm
new file mode 100644
index 00000000000..ac3f03eeda3
--- /dev/null
+++ b/code/modules/projectiles/projectile/change.dm
@@ -0,0 +1,152 @@
+/obj/item/projectile/change
+ name = "bolt of change"
+ icon_state = "ice_1"
+ damage = 0
+ damage_type = BURN
+ nodamage = 1
+ flag = "energy"
+
+ on_hit(var/atom/change)
+ wabbajack(change)
+
+
+ /*Bump(atom/change)
+ if(istype(change, /mob/living))
+ wabbajack(change)
+ else
+ del(src)*/
+
+
+
+/obj/item/projectile/change/proc/wabbajack (mob/M as mob in world)
+ if(istype(M, /mob/living))
+ for(var/obj/item/W in M)
+ M.drop_from_slot(W)
+ var/randomize = pick("monkey","robot","metroid","alien")
+ switch(randomize)
+ if("monkey")
+ if (M.monkeyizing)
+ return
+ M.update_clothing()
+ M.monkeyizing = 1
+ M.canmove = 0
+ M.icon = null
+ M.invisibility = 101
+ var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( M.loc )
+
+ O.name = "monkey"
+ if (M.client)
+ M.client.mob = O
+ if(M.mind)
+ M.mind.transfer_to(O)
+ O.a_intent = "hurt"
+ O << "You are now a monkey."
+ del(M)
+ return O
+ if("robot")
+ if (M.monkeyizing)
+ return
+ M.update_clothing()
+ M.monkeyizing = 1
+ M.canmove = 0
+ M.icon = null
+ M.invisibility = 101
+ if(M.client)
+ M.client.screen -= M.hud_used.contents
+ M.client.screen -= M.hud_used.adding
+ M.client.screen -= M.hud_used.mon_blo
+ M.client.screen -= list( M.oxygen, M.throw_icon, M.i_select, M.m_select, M.toxin, M.internals, M.fire, M.hands, M.healths, M.pullin, M.blind, M.flash, M.rest, M.sleep, M.mach )
+ M.client.screen -= list( M.zone_sel, M.oxygen, M.throw_icon, M.i_select, M.m_select, M.toxin, M.internals, M.fire, M.hands, M.healths, M.pullin, M.blind, M.flash, M.rest, M.sleep, M.mach )
+
+ var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( M.loc )
+ O.cell = new(O)
+ O.cell.maxcharge = 7500
+ O.cell.charge = 7500
+ O.gender = M.gender
+ O.invisibility = 0
+ O.name = "Cyborg"
+ O.real_name = "Cyborg"
+ O.lastKnownIP = M.client.address ? M.client.address : null
+ if (M.mind)
+ M.mind.transfer_to(O)
+ if (M.mind.assigned_role == "Cyborg")
+ M.mind.original = O
+ else if (M.mind.special_role) O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
+ else
+ M.mind = new /datum/mind( )
+ M.mind.key = M.key
+ M.mind.current = O
+ M.mind.original = O
+ M.mind.transfer_to(O)
+
+ if(!(O.mind in ticker.minds))
+ ticker.minds += O.mind//Adds them to regular mind list.
+
+ O.loc = loc
+ O << "You are playing a Robot. A Robot can interact with most electronic objects in its view point."
+ O << "You must follow the laws that the AI has. You are the AI's assistant to the station basically."
+ O << "To use something, simply double-click it."
+ O << {"Use say ":s to speak to fellow cyborgs and the AI through binary."}
+
+ O.job = "Cyborg"
+
+ O.mmi = new /obj/item/device/mmi(O)
+ O.mmi.transfer_identity(M)//Does not transfer key/client.
+ del(M)
+ return O
+ if("metroid")
+ if (M.monkeyizing)
+ return
+ M.update_clothing()
+ M.monkeyizing = 1
+ M.canmove = 0
+ M.icon = null
+ M.invisibility = 101
+ if(prob(50))
+ var/mob/living/carbon/metroid/adult/new_metroid = new /mob/living/carbon/metroid/adult (M.loc)
+ if (M.client)
+ M.client.mob = new_metroid
+ if(M.mind)
+ M.mind.transfer_to(new_metroid)
+
+ new_metroid.a_intent = "hurt"
+ new_metroid << "You are now an adult Metroid."
+ del(M)
+ return new_metroid
+ else
+ var/mob/living/carbon/metroid/new_metroid = new /mob/living/carbon/metroid (M.loc)
+ if (M.client)
+ M.client.mob = new_metroid
+ if(M.mind)
+ M.mind.transfer_to(new_metroid)
+ new_metroid.a_intent = "hurt"
+ new_metroid << "You are now a baby Metroid."
+ del(M)
+ return new_metroid
+ if("alien")
+ if (M.monkeyizing)
+ return
+ M.update_clothing()
+ M.monkeyizing = 1
+ M.canmove = 0
+ M.icon = null
+ M.invisibility = 101
+ var/alien_caste = pick("Hunter","Sentinel","Drone")
+ var/mob/living/carbon/alien/humanoid/new_xeno
+ switch(alien_caste)
+ if("Hunter")
+ new_xeno = new /mob/living/carbon/alien/humanoid/hunter (M.loc)
+ if("Sentinel")
+ new_xeno = new /mob/living/carbon/alien/humanoid/sentinel (M.loc)
+ if("Drone")
+ new_xeno = new /mob/living/carbon/alien/humanoid/drone (M.loc)
+ if (M.client)
+ M.client.mob = new_xeno
+ if(M.mind)
+ M.mind.transfer_to(new_xeno)
+ new_xeno.a_intent = "hurt"
+ new_xeno << "You are now an alien."
+ del(M)
+ return new_xeno
+ return
+
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 052c237146d..ae20b7ca630 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -23,8 +23,6 @@
explosion(target, -1, 0, 2)
return 1
-
-
/obj/item/projectile/temp
name = "freeze beam"
icon_state = "ice_2"
diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi
index 1371eb3bb06..2a4d79e7205 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ