diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index 8467d00124..24f65756c8 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -92,6 +92,11 @@
return BULLET_ACT_HIT
else if(istype(Proj , /obj/item/projectile/energy/florayield))
return myseed.bullet_act(Proj)
+ else if(istype(Proj , /obj/item/projectile/energy/florarevolution))
+ if(myseed)
+ if(myseed.mutatelist.len > 0)
+ myseed.instability = (myseed.instability/2)
+ mutatespecie()
else
return ..()
@@ -384,7 +389,6 @@
/obj/machinery/hydroponics/proc/hardmutate()
mutate(4, 10, 2, 4, 50, 4, 10, 3)
-
/obj/machinery/hydroponics/proc/mutatespecie() // Mutagent produced a new plant!
if(!myseed || dead)
return
@@ -600,7 +604,34 @@
desc = initial(desc)
weedlevel = 0 //Has a side effect of cleaning up those nasty weeds
update_icon()
-
+ else if(istype(O, /obj/item/gun/energy/floragun))
+ var/obj/item/gun/energy/floragun/flowergun = O
+ if(flowergun.cell.charge < flowergun.cell.maxcharge)
+ to_chat(user, "[flowergun] must be fully charged to lock in a mutation!")
+ return
+ if(!myseed)
+ to_chat(user, "[src] is empty!")
+ return
+ if(myseed.endurance <= 20)
+ to_chat(user, "[myseed.plantname] isn't hardy enough to sequence its mutation!")
+ return
+ if(!myseed.mutatelist)
+ to_chat(user, "[myseed.plantname] has nothing else to mutate into!")
+ return
+ else
+ var/list/fresh_mut_list = list()
+ for(var/muties in myseed.mutatelist)
+ var/obj/item/seeds/another_mut = new muties
+ fresh_mut_list[another_mut.plantname] = muties
+ var/locked_mutation = (input(user, "Select a mutation to lock.", "Plant Mutation Locks") as null|anything in sortList(fresh_mut_list))
+ if(!user.canUseTopic(src, BE_CLOSE) || !locked_mutation)
+ return
+ myseed.mutatelist = list(fresh_mut_list[locked_mutation])
+ myseed.endurance = (myseed.endurance/2)
+ flowergun.cell.use(flowergun.cell.charge)
+ flowergun.update_icon()
+ to_chat(user, "[myseed.plantname]'s mutation was set to [locked_mutation], depleting [flowergun]'s cell!")
+ return
else
return ..()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 8042eca673..8d473639b4 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1985,6 +1985,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
H.show_message("The radiation beam dissipates harmlessly through your body.")
if(/obj/item/projectile/energy/florayield)
H.show_message("The radiation beam dissipates harmlessly through your body.")
+ if(/obj/item/projectile/energy/florarevolution)
+ H.show_message("The radiation beam dissipates harmlessly through your body.")
/datum/species/proc/bullet_act(obj/item/projectile/P, mob/living/carbon/human/H)
// called before a projectile hit
diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
index c25c5efb6c..697c3db35e 100644
--- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm
@@ -64,6 +64,11 @@
H.show_message("The radiation beam singes you!")
if(/obj/item/projectile/energy/florayield)
H.adjust_nutrition(30, NUTRITION_LEVEL_FULL)
+ if(/obj/item/projectile/energy/florarevolution)
+ H.show_message("The radiation beam leaves you feeling disoriented!")
+ H.Dizzy(15)
+ H.emote("flip")
+ H.emote("spin")
/datum/species/pod/pseudo_weak
name = "Anthromorphic Plant"
diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm
index fc4207d084..2bf7c06ec6 100644
--- a/code/modules/projectiles/ammunition/energy/special.dm
+++ b/code/modules/projectiles/ammunition/energy/special.dm
@@ -24,6 +24,11 @@
projectile_type = /obj/item/projectile/energy/floramut
select_name = "mutation"
+/obj/item/ammo_casing/energy/flora/revolution
+ projectile_type = /obj/item/projectile/energy/florarevolution
+ select_name = "revolution"
+ e_cost = 250
+
/obj/item/ammo_casing/energy/temp
projectile_type = /obj/item/projectile/temp
select_name = "freeze"
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index ae6050a68e..f965100846 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -45,7 +45,7 @@
desc = "A tool that discharges controlled radiation which induces mutation in plant cells."
icon_state = "flora"
item_state = "gun"
- ammo_type = list(/obj/item/ammo_casing/energy/flora/yield, /obj/item/ammo_casing/energy/flora/mut)
+ ammo_type = list(/obj/item/ammo_casing/energy/flora/yield, /obj/item/ammo_casing/energy/flora/mut, /obj/item/ammo_casing/energy/flora/revolution)
modifystate = 1
ammo_x_offset = 1
selfcharge = EGUN_SELFCHARGE
diff --git a/code/modules/projectiles/projectile/special/floral.dm b/code/modules/projectiles/projectile/special/floral.dm
index c3fe1f0fcb..b855322f09 100644
--- a/code/modules/projectiles/projectile/special/floral.dm
+++ b/code/modules/projectiles/projectile/special/floral.dm
@@ -2,7 +2,7 @@
name = "alpha somatoray"
icon_state = "energy"
damage = 0
- damage_type = TOX
+ damage_type = TRUE
nodamage = 1
flag = "energy"
@@ -21,5 +21,13 @@
icon_state = "energy2"
damage = 0
damage_type = TOX
- nodamage = 1
+ nodamage = TRUE
+ flag = "energy"
+
+/obj/item/projectile/energy/florarevolution
+ name = "gamma somatorary"
+ icon_state = "energy3"
+ damage = 0
+ damage_type = TOX
+ nodamage = TRUE
flag = "energy"
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 8c934d39a9..11dd29a416 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -324,8 +324,7 @@
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
id = "flora_gun"
build_type = PROTOLATHE
- materials = list(/datum/material/iron = 2000, /datum/material/glass = 500)
- reagents_list = list(/datum/reagent/radium = 20)
+ materials = list(/datum/material/iron = 2000, /datum/material/glass = 500, /datum/material/uranium = 2000)
build_path = /obj/item/gun/energy/floragun
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE
diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi
index 7e7e4a644b..158c95ee5d 100644
Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ
diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi
index 94568b8633..740c64b1dc 100644
Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ