diff --git a/code/defines/obj/clothing/jumpsuit.dm b/code/defines/obj/clothing/jumpsuit.dm
index e4dc73d0bf2..a294be2acf8 100644
--- a/code/defines/obj/clothing/jumpsuit.dm
+++ b/code/defines/obj/clothing/jumpsuit.dm
@@ -283,6 +283,13 @@
item_state = "lb_suit"
color = "cargo"
+/obj/item/clothing/under/sexyclown
+ name = "Sexyclown suit"
+ desc = "What can I do for you?"
+ icon_state = "sexyclown"
+ item_state = "sexyclown"
+ color = "sexyclown"
+
/obj/item/clothing/under/rank/bartender
desc = "It looks like it could use more flair."
name = "Bartender's Uniform"
diff --git a/code/defines/obj/clothing/mask.dm b/code/defines/obj/clothing/mask.dm
index 015c16bc9a9..a5667839002 100644
--- a/code/defines/obj/clothing/mask.dm
+++ b/code/defines/obj/clothing/mask.dm
@@ -115,6 +115,12 @@
icon_state = "clown"
item_state = "clown_hat"
+/obj/item/clothing/mask/gas/sexyclown
+ name = "sexy clown mask"
+ desc = "That face...."
+ icon_state = "sexyclown"
+ item_state = "sexyclown"
+
/obj/item/clothing/mask/gas/mime
name = "mime mask"
desc = "It looks a little creepy"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 09f28cfc821..2dc3196e51d 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -492,6 +492,19 @@
throw_speed = 2
throw_range = 10
+/obj/item/weapon/chemsprayer
+ desc = "Chem Sprayer"
+ icon = 'gun.dmi'
+ name = "chem sprayer"
+ icon_state = "chemsprayer"
+ item_state = "chemsprayer"
+ flags = ONBELT|TABLEPASS|OPENCONTAINER|FPRINT|USEDELAY
+ throwforce = 3
+ w_class = 2.0
+ throw_speed = 2
+ throw_range = 10
+ origin_tech = "combat=3;materials=3;engineering=3"
+
/obj/item/weapon/clipboard
name = "clipboard"
desc = "Apply paper to this to write better. Can also hold pens."
diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm
index 85b698ba418..4fbfb85d833 100644
--- a/code/game/atom_procs.dm
+++ b/code/game/atom_procs.dm
@@ -48,7 +48,7 @@
if ((O.client && !( O.blinded )))
O << text("\red [src] has been scanned by [user] with the [W]")
else
- if (!( istype(W, /obj/item/weapon/grab) ) && !(istype(W, /obj/item/weapon/plastique)) &&!(istype(W, /obj/item/weapon/cleaner)) && !(istype(W, /obj/item/weapon/plantbgone)) )
+ if (!( istype(W, /obj/item/weapon/grab) ) && !(istype(W, /obj/item/weapon/plastique)) &&!(istype(W, /obj/item/weapon/cleaner)) &&!(istype(W, /obj/item/weapon/chemsprayer)) && !(istype(W, /obj/item/weapon/plantbgone)) )
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O << text("\red [] has been hit by [] with []", src, user, W)
diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index 0d3d890c4f8..46b31cf1c6e 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -22,7 +22,7 @@
/obj/machinery/bot/proc/explode()
del(src)
-
+
/obj/machinery/bot/proc/healthcheck()
if (src.health <= 0)
src.explode()
@@ -81,6 +81,8 @@
// src.health -= 2
if (PROJECTILE_LASER)
src.health -= 10
+ if (PROJECTILE_SHOCK)
+ src.health -= 15
if (PROJECTILE_PULSE)
src.health -= 40
healthcheck()
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 620741b2ce7..fdc1ea6fef4 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -241,6 +241,9 @@ Neutralize All Unidentified Life Signs: []
"},
else if(flag == PROJECTILE_PULSE)
if(prob(25)) src.spark_system.start() // creates some sparks
src.health -= 30
+ else if(flag == PROJECTILE_SHOCK)
+ if(prob(25)) src.spark_system.start()
+ src.health -= 15
else if(flag == PROJECTILE_LASER)
if(prob(25)) src.spark_system.start()
src.health -= 10
@@ -493,6 +496,12 @@ Neutralize All Unidentified Life Signs: []
"},
icon_state = "orange_target_prism"
if(!emagged) use_power(500)
else use_power(1000)
+ else if (istype(E, /obj/item/weapon/gun/energy/shockgun))
+ A = new /obj/item/projectile/fireball( loc )
+ A.original = target.loc
+ icon_state = "orange_target_prism"
+ if(!emagged) use_power(500)
+ else use_power(1000)
else if(istype(E, /obj/item/weapon/gun/energy/pulse_rifle))
A = new /obj/item/projectile/beam/pulse( loc )
A.original = target.loc
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index ad0bb42efd2..7abfdb39503 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -385,6 +385,8 @@
src.storedpower -= 1
if (PROJECTILE_LASER)
src.storedpower +=20
+ if (PROJECTILE_SHOCK)
+ src.storedpower +=25
if (PROJECTILE_TASER)
src.storedpower +=3
if (PROJECTILE_PULSE)
@@ -513,6 +515,8 @@
G.storedpower -=1
if (PROJECTILE_LASER)
G.storedpower +=20
+ if (PROJECTILE_SHOCK)
+ G.storedpower +=25
if (PROJECTILE_TASER)
G.storedpower +=3
if (PROJECTILE_PULSE)
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index f24ea943599..3b3c85fae43 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -438,6 +438,8 @@
damage = 40
if(PROJECTILE_LASER)
damage = 20
+ if(PROJECTILE_SHOCK)
+ damage = 25
if(PROJECTILE_TASER)
damage = 8
if(PROJECTILE_WEAKBULLET)
diff --git a/code/game/magic/magicmonster.dm b/code/game/magic/magicmonster.dm
index 634ec20b092..ce3cb24ef15 100644
--- a/code/game/magic/magicmonster.dm
+++ b/code/game/magic/magicmonster.dm
@@ -82,6 +82,8 @@
src.health -= 4
else if (flag == PROJECTILE_LASER)
src.health -= 10
+ else if (flag == PROJECTILE_SHOCK)
+ src.health -= 15
healthcheck()
ex_act(severity)
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 04762577b22..d4c98beca95 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -480,6 +480,8 @@
damage = 30
if(PROJECTILE_LASER)
damage = 20
+ if(PROJECTILE_SHOCK)
+ damage = 25
if(PROJECTILE_WEAKBULLET)
damage = 8
if(PROJECTILE_BULLET)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 3b6561c29b1..fe8a82d335e 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -378,6 +378,8 @@
dam_type = "Pulse"
if(PROJECTILE_LASER)
dam_type = "Laser"
+ if(PROJECTILE_SHOCK)
+ dam_type = "Shock"
if(PROJECTILE_TASER)
dam_type = "Taser"
else
@@ -400,6 +402,9 @@
ignore_threshold = 1
if(PROJECTILE_LASER)
damage = 20
+ if(PROJECTILE_SHOCK)
+ damage = 25
+ use_power(500)
if(PROJECTILE_TASER)
use_power(500)
if(PROJECTILE_WEAKBULLET)
diff --git a/code/game/objects/alien/egg.dm b/code/game/objects/alien/egg.dm
index bc55d9d481e..2fa9974970d 100644
--- a/code/game/objects/alien/egg.dm
+++ b/code/game/objects/alien/egg.dm
@@ -20,6 +20,8 @@
health -= 50
if (PROJECTILE_LASER)
health -= 10
+ if (PROJECTILE_SHOCK)
+ health -= 15
healthcheck()
return
diff --git a/code/game/objects/alien/facehugger.dm b/code/game/objects/alien/facehugger.dm
index 6b98fd8bbad..102ddfa296e 100644
--- a/code/game/objects/alien/facehugger.dm
+++ b/code/game/objects/alien/facehugger.dm
@@ -93,6 +93,8 @@
health -= 4
if (PROJECTILE_LASER)
health -= 10
+ if (PROJECTILE_SHOCK)
+ health -= 20
if (PROJECTILE_PULSE)
health -= 35
healthcheck()
diff --git a/code/game/objects/alien/resin.dm b/code/game/objects/alien/resin.dm
index e2e9bb8bc6f..9018c176c6e 100644
--- a/code/game/objects/alien/resin.dm
+++ b/code/game/objects/alien/resin.dm
@@ -25,6 +25,8 @@
health -= 50
if (PROJECTILE_LASER)
health -= 10
+ if (PROJECTILE_SHOCK)
+ health -= 15
healthcheck()
return
diff --git a/code/game/objects/displaycase.dm b/code/game/objects/displaycase.dm
index 4a04e0921c6..7ddf5913bc1 100644
--- a/code/game/objects/displaycase.dm
+++ b/code/game/objects/displaycase.dm
@@ -25,6 +25,10 @@
src.health -= 2
src.healthcheck()
return
+ if (flag != PROJECTILE_SHOCK)
+ src.health -= 4
+ src.healthcheck()
+ return
else
src.health -= 5
src.healthcheck()
diff --git a/code/game/objects/items/weapons/guns_new.dm b/code/game/objects/items/weapons/guns_new.dm
index 14a346e48ea..a2a6bb52b0b 100644
--- a/code/game/objects/items/weapons/guns_new.dm
+++ b/code/game/objects/items/weapons/guns_new.dm
@@ -6,6 +6,7 @@ var/const/PROJECTILE_BOLT = 5
var/const/PROJECTILE_WEAKBULLET = 6
var/const/PROJECTILE_TELEGUN = 7
var/const/PROJECTILE_DART = 8
+var/const/PROJECTILE_SHOCK = 9
///////////////////////////////////////////////
////////////////AMMO SECTION///////////////////
@@ -47,6 +48,12 @@ var/const/PROJECTILE_DART = 8
damage_type = PROJECTILE_PULSE
icon_state = "u_laser"
+ fireball
+ name = "shock"
+ damage_type = PROJECTILE_SHOCK
+ icon_state = "fireball"
+ pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
+
dart
name = "dart"
damage_type = PROJECTILE_DART
@@ -775,6 +782,50 @@ var/const/PROJECTILE_DART = 8
return 1
return 0
+ shockgun
+ name = "shock gun"
+ icon_state = "shockgun"
+ fire_sound = 'Laser.ogg'
+ charge_cost = 50
+
+ load_into_chamber()
+ if(in_chamber)
+ return 1
+ if(power_supply.charge <= charge_cost)
+ return 0
+ in_chamber = new /obj/item/projectile/fireball(src)
+ power_supply.use(charge_cost)
+ return 1
+
+ attack_self(mob/living/user as mob)
+ return
+
+ New()
+ power_supply = new /obj/item/weapon/cell/super(src)
+ power_supply.give(power_supply.maxcharge)
+
+ stunrevolver
+ name = "stun revolver"
+ icon_state = "stunrevolver"
+ fire_sound = 'Gunshot.ogg'
+ charge_cost = 25
+
+ load_into_chamber()
+ if(in_chamber)
+ return 1
+ if(power_supply.charge <= charge_cost)
+ return 0
+ in_chamber = new /obj/item/projectile/electrode(src)
+ power_supply.use(charge_cost)
+ return 1
+
+ attack_self(mob/living/user as mob)
+ return
+
+ New()
+ power_supply = new /obj/item/weapon/cell/crap(src)
+ power_supply.give(power_supply.maxcharge)
+
freeze
name = "freeze gun"
icon_state = "freezegun"
diff --git a/code/game/objects/items/weapons/mops_cleaners.dm b/code/game/objects/items/weapons/mops_cleaners.dm
index f0b2345106c..dd8983f484f 100644
--- a/code/game/objects/items/weapons/mops_cleaners.dm
+++ b/code/game/objects/items/weapons/mops_cleaners.dm
@@ -52,6 +52,54 @@ MOP
..()
return
+/obj/item/weapon/chemsprayer/New()
+ var/datum/reagents/R = new/datum/reagents(1000)
+ reagents = R
+ R.my_atom = src
+ R.add_reagent("cleaner", 10)
+
+/obj/item/weapon/chemsprayer/attack(mob/living/carbon/human/M as mob, mob/user as mob)
+ return
+
+/obj/item/weapon/chemsprayer/afterattack(atom/A as mob|obj, mob/user as mob)
+ if (istype(A, /obj/item/weapon/storage/backpack ))
+ return
+ else if (src.reagents.total_volume < 1)
+ user << "\blue Add more cleaner!"
+ return
+
+ var/obj/decal/D = new/obj/decal(get_turf(src))
+ D.name = "chemicals"
+ D.icon = 'chemical.dmi'
+ D.icon_state = "chempuff"
+ D.create_reagents(10)
+ src.reagents.trans_to(D, 10)
+ playsound(src.loc, 'spray2.ogg', 50, 1, -6)
+
+ spawn(0)
+ for(var/i=0, i<6, i++)
+ step_towards(D,A)
+ D.reagents.reaction(get_turf(D))
+ for(var/atom/T in get_turf(D))
+ D.reagents.reaction(T)
+ sleep(6)
+ del(D)
+
+ if(isrobot(user)) //Cyborgs can clean forever if they keep charged
+ var/mob/living/silicon/robot/janitor = user
+ janitor.cell.charge -= 20
+ var/refill = src.reagents.get_master_reagent_id()
+ spawn(600)
+ src.reagents.add_reagent(refill, 10)
+
+ return
+
+/obj/item/weapon/chemsprayer/examine()
+ set src in usr
+ usr << text("\icon[] [] units of cleaner left!", src, src.reagents.total_volume)
+ ..()
+ return
+
// MOP
/obj/item/weapon/mop/New()
diff --git a/code/game/objects/lamarr.dm b/code/game/objects/lamarr.dm
index 413ecc0a058..9dedf6bb3d9 100644
--- a/code/game/objects/lamarr.dm
+++ b/code/game/objects/lamarr.dm
@@ -43,6 +43,14 @@
src.health -= 5
src.healthcheck()
return
+ if (flag != PROJECTILE_SHOCK)
+ src.health -= 4
+ src.healthcheck()
+ return
+ else
+ src.health -= 7
+ src.healthcheck()
+ return
/obj/lamarr/blob_act()
diff --git a/code/game/objects/livestock.dm b/code/game/objects/livestock.dm
index 302f71d0316..09a9e0d200a 100644
--- a/code/game/objects/livestock.dm
+++ b/code/game/objects/livestock.dm
@@ -144,6 +144,8 @@
src.health -= 8
if(PROJECTILE_LASER)
src.health -= 10
+ if(PROJECTILE_SHOCK)
+ src.health -= 15
if(PROJECTILE_PULSE)
src.health -= 25
if(prob(30))
diff --git a/code/game/research/designs.dm b/code/game/research/designs.dm
index 07118736b8f..2e376aa704d 100644
--- a/code/game/research/designs.dm
+++ b/code/game/research/designs.dm
@@ -930,6 +930,36 @@ datum
reliability_base = 76
build_path = "/obj/item/weapon/gun/energy/nuclear"
+ stunrevolver
+ name = "Stun Revolver"
+ desc = "The prize of the Head of Security."
+ id = "nuclear_gun"
+ req_tech = list("combat" = 2, "materials" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 4000)
+ reliability_base = 76
+ build_path = "/obj/item/weapon/gun/energy/stunrevolver"
+
+ shockgun
+ name = "Shock Gun"
+ desc = "Your opponent has just lost THE GAME."
+ id = "shockgun"
+ req_tech = list("combat" = 4, "materials" = 4, "powerstorage" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 8000, "$silver" = 3000)
+ reliability_base = 76
+ build_path = "/obj/item/weapon/gun/energy/shockgun"
+
+ chemsprayer
+ name = "Chem Sprayer"
+ desc = "An advanced chem spraying device."
+ id = "chemsprayer"
+ req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 1000)
+ reliability_base = 100
+ build_path = "/obj/item/weapon/chemsprayer"
+
freeze_gun
name = "Freeze Gun"
desc = "A gun that shoots supercooled hydrogen particles to drastically chill a target's body temperature."
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 22ec882e6a3..48cda2c85c7 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -137,6 +137,17 @@
updatehealth()
if (prob(25))
stunned = 1
+ if(PROJECTILE_SHOCK)
+ var/d = 20
+ if (!eye_blurry) eye_blurry = 4 //This stuff makes no sense but lasers need a buff./ It really doesn't make any sense. /N
+ if (prob(25)) stunned++
+ if (stat != 2)
+ bruteloss += d
+ updatehealth()
+ if (prob(25))
+ stunned = 10
+ else
+ weakened = 10
if(PROJECTILE_PULSE)
var/d = 40
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index ca5f4e61ed7..7a5d5ae42de 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -120,6 +120,20 @@
updatehealth()
if (prob(25))
stunned = 1
+ if(PROJECTILE_SHOCK)
+ var/d = 20
+
+ if (!eye_blurry) eye_blurry = 4 //This stuff makes no sense but lasers need a buff./ It really doesn't make any sense. /N
+ if (prob(25)) stunned++
+
+ if (stat != 2)
+ bruteloss += d
+
+ updatehealth()
+ if (prob(25))
+ stunned = 1
+ else
+ weakened = 10
if(PROJECTILE_PULSE)
var/d = 40
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 3cf3ab3a0a9..aa0643e9708 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -359,6 +359,41 @@
updatehealth()
if (prob(25))
stunned = 1
+ if(PROJECTILE_SHOCK)
+ armor = getarmor(affecting, "laser")
+ var/d = 20
+ if (prob(armor["armor"]))
+ show_message("\red Your [armor["clothes"]] absorbs the hit!", 4)
+ return
+ else
+ if (prob(armor["armor"])/2)
+ show_message("\red Your [armor["clothes"]] only softens the hit!", 4)
+ if (prob(20))
+ d = d / 2
+ d = d / 2
+ /*else
+ if (istype(wear_suit, /obj/item/clothing/suit/swat_suit))
+ if (prob(70))
+ show_message("\red Your armor absorbs the blow!", 4)
+ return
+ else
+ if (prob(90))
+ show_message("\red Your armor only softens the blow!", 4)
+ if (prob(60))
+ d = d / 2
+ d = d / 2*/
+
+ if (!eye_blurry) eye_blurry = 4 //This stuff makes no sense but lasers need a buff.
+ if (prob(25)) stunned++
+
+ if (stat != 2)
+ affecting.take_damage(0, d)
+ UpdateDamageIcon()
+ updatehealth()
+ if (prob(25))
+ stunned = 10
+ else
+ weakened = 10
if(PROJECTILE_PULSE)
armor = getarmor(affecting, "laser")
var/d = 40
diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm
index 2f6bbf41de1..985fc205e6b 100644
--- a/code/modules/mob/living/carbon/metroid/metroid.dm
+++ b/code/modules/mob/living/carbon/metroid/metroid.dm
@@ -177,6 +177,20 @@
bruteloss += d
updatehealth()
+ if(PROJECTILE_SHOCK)
+ var/d = 30
+
+ attacked += 10
+ if (!eye_blurry) eye_blurry = 4 //This stuff makes no sense but lasers need a buff./ It really doesn't make any sense. /N
+
+ if (stat != 2)
+ bruteloss += d
+
+ updatehealth()
+
+ if (prob(70))
+ powerlevel++
+ if(powerlevel > 10) powerlevel = 10
if(PROJECTILE_PULSE)
var/d = 100
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 23782e24137..4bd62a06d78 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -143,6 +143,16 @@
updatehealth()
if (prob(25))
stunned = 1
+ else if(flag == PROJECTILE_SHOCK)
+ if (!eye_blurry) eye_blurry = 4 //This stuff makes no sense but lasers need a buff.
+ if (prob(25)) stunned++
+ if (stat != 2)
+ take_organ_damage(0, 20)
+ updatehealth()
+ if (prob(25))
+ stunned = 10
+ else
+ weakened = 10
else if(flag == PROJECTILE_PULSE)
if (stat != 2)
take_organ_damage(0, 40)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 09e31c3a61c..2aec13b1587 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -47,6 +47,23 @@
src.take_organ_damage(20)
if (prob(25) && src.stunned <= 2)
src.stunned = 2
+ if(PROJECTILE_SHOCK)
+ if (istype(src, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = src
+ var/dam_zone = pick("chest", "chest", "chest", "groin", "head")
+ if (H.organs[text("[]", dam_zone)])
+ var/datum/organ/external/affecting = H.organs[text("[]", dam_zone)]
+ if (affecting.take_damage(20, 0))
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
+ src.updatehealth()
+ else
+ src.take_organ_damage(20)
+ if (prob(25) && src.stunned <= 2)
+ src.stunned = 10
+ else
+ src.weakened = 10
if(PROJECTILE_PULSE)
if (istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index fe201767bcb..decd2203cb9 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -282,6 +282,14 @@
updatehealth()
if (prob(25))
stunned = 1
+ else if(flag == PROJECTILE_SHOCK)
+ if (stat != 2)
+ bruteloss += 20
+ updatehealth()
+ if (prob(25))
+ stunned = 10
+ else
+ weakened = 10
else if(flag == PROJECTILE_PULSE)
if (stat != 2)
bruteloss += 40
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index fd95178eb81..f63a72841f9 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -133,6 +133,14 @@
src.updatehealth()
if (prob(25))
src.stunned = 1
+ else if(flag == PROJECTILE_SHOCK)
+ if (src.stat != 2)
+ src.bruteloss += 20
+ src.updatehealth()
+ if (prob(25))
+ src.stunned = 10
+ else
+ src.weakened = 15
else if(flag == PROJECTILE_PULSE)
if (src.stat != 2)
src.bruteloss += 40
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 8fb847ed898..d436b8bdc9c 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -307,6 +307,12 @@
if (stat != 2)
bruteloss += 20
updatehealth()
+ if(PROJECTILE_SHOCK)
+ if (stat != 2)
+ bruteloss += 20
+ updatehealth()
+ fireloss += rand(0,10)
+ stunned += rand(0,3)
if(PROJECTILE_PULSE)
if (stat != 2)
bruteloss += 40
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 6ac558e8b88..f92910ff713 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -178,6 +178,8 @@ field_generator power level display
src.power -= 25
else if (flag == PROJECTILE_LASER)
src.power += 20
+ else if (flag == PROJECTILE_LASER)
+ src.power += 25
else if (flag == PROJECTILE_TASER)
src.power += 5
else
diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi
index 2262ba1b015..4feb6b4a3f8 100644
Binary files a/icons/mob/mask.dmi and b/icons/mob/mask.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index e2bf8086e3b..d4506af54a5 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/Metroid_gen.dmi b/icons/obj/Metroid_gen.dmi
index 8d5bbe1bd90..7b6f835133e 100644
Binary files a/icons/obj/Metroid_gen.dmi and b/icons/obj/Metroid_gen.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index 8e4e0bc1a40..a0ba73da86e 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 06083060c61..8a06e48cb43 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi
index 939bec056c5..75a9920dd69 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ
diff --git a/maps/tgstation.2.0.7.dmm b/maps/tgstation.2.0.7.dmm
index c2c4f97e75c..0d15d6ebc71 100644
--- a/maps/tgstation.2.0.7.dmm
+++ b/maps/tgstation.2.0.7.dmm
@@ -2092,7 +2092,7 @@
"aOl" = (/obj/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
"aOm" = (/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aOn" = (/turf/simulated/floor{dir = 5; icon_state = "carpetside"},/area/crew_quarters/theatre)
-"aOo" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/theatre)
+"aOo" = (/obj/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/rack,/obj/item/clothing/under/sexyclown,/obj/item/clothing/mask/gas/sexyclown,/turf/simulated/floor,/area/crew_quarters/theatre)
"aOp" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 5; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor,/area/crew_quarters/theatre)
"aOq" = (/obj/rack,/obj/item/clothing/under/owl,/obj/item/clothing/mask/owl_mask,/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/crew_quarters/theatre)
"aOr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/stool/chair{dir = 1},/obj/item/device/radio/intercom{frequency = 1480; name = "Confessional Intercom"; pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
@@ -6653,7 +6653,7 @@
"cxW" = (/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
"cxX" = (/turf/unsimulated/floor{dir = 4; icon_state = "chapel"},/area/wizard_station)
"cxY" = (/obj/item/weapon/spacecash,/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/planet/clown)
-"cxZ" = (/mob/living/carbon/metroid{desc = "A tamed other thing. Very smart looking."; icon = 'icons/obj/otherthing.dmi'; icon_state = "otherthing"; name = "Tamed Otherthing"; toxloss = 0; voice_message = "gurgles"; voice_name = "otherthing"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
+"cxZ" = (/mob/living/carbon/metroid{desc = "A tamed other thing. Very smart looking."; icon = 'otherthing.dmi'; icon_state = "otherthing"; name = "Tamed Otherthing"; toxloss = 0; voice_message = "gurgles"; voice_name = "otherthing"},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"cya" = (/obj/grille,/obj/window/reinforced,/obj/window/reinforced{dir = 4},/obj/window/reinforced{dir = 8},/turf/unsimulated/floor,/area/wizard_station)
"cyb" = (/obj/stool,/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/wizard_station)
"cyc" = (/turf/unsimulated/floor{dir = 8; icon_state = "chapel"},/area/wizard_station)