diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index ddd121434d2..19c2dd13ec8 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -184,7 +184,7 @@
qdel(src)
return
if(3.0)
- if (prob(30))
+ if (prob(40))
var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
new remains(loc)
qdel(src)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index 890d84a1f70..efdadfbb7c2 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -11,11 +11,13 @@
qdel(src)
return
if(2.0)
- if (prob(50))
+ if (prob(70))
+ new /obj/item/stack/sheet/metal(src.loc)
qdel(src)
return
if(3.0)
- if (prob(5))
+ if (prob(50))
+ new /obj/item/stack/sheet/metal(src.loc)
qdel(src)
return
return
diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm
index d50d2f7ce59..03ed2d630b4 100644
--- a/code/modules/mob/language.dm
+++ b/code/modules/mob/language.dm
@@ -515,7 +515,7 @@
ask_verb = "tones"
exclaim_verb = "tones"
colour = "say_quote"
- key = "zw"//Zwarmer...Or Zerg!
+ key = "z"//Zwarmer...Or Zerg!
flags = RESTRICTED || HIVEMIND
follow = 1
diff --git a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
index fcd66d3f790..530409bd517 100644
--- a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
@@ -10,12 +10,14 @@
..()
/obj/item/unactivated_swarmer/Topic(href, href_list)
+ if(..())
+ return 1
if(href_list["ghostjoin"])
var/mob/dead/observer/ghost = usr
if(istype(ghost))
attack_ghost(ghost)
-/obj/item/unactivated_swarmer/attack_ghost(mob/user)
+/obj/item/unactivated_swarmer/attack_ghost(mob/user as mob)
var/be_swarmer = alert("Become a swarmer? (Warning, You can no longer be cloned!)",,"Yes","No")
if(be_swarmer == "No")
return
@@ -44,6 +46,14 @@
harm_intent_damage = 5
minbodytemp = 0
maxbodytemp = 500
+ min_oxy = 0
+ max_oxy = INFINITY
+ min_tox = 0
+ max_tox = INFINITY
+ min_co2 = 0
+ max_co2 = INFINITY
+ min_n2 = 0
+ max_n2 = INFINITY
unsuitable_atmos_damage = 0
melee_damage_lower = 15
melee_damage_upper = 15
@@ -59,7 +69,6 @@
pass_flags = PASSTABLE
ventcrawler = 2
ranged = 1
- projectiletype = /obj/item/projectile/beam/disabler
ranged_cooldown_cap = 2
projectilesound = 'sound/weapons/taser2.ogg'
AIStatus = AI_OFF
@@ -224,7 +233,7 @@
/mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S.DisperseTarget(src)
-/mob/living/simple_animal/slime/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+/mob/living/carbon/slime/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S << "This biological resource is somehow resisting our bluespace transceiver. Aborting."
////END CTRL CLICK FOR SWARMERS////
@@ -252,7 +261,6 @@
var/obj/effect/swarmer/integrate/I = new /obj/effect/swarmer/integrate(get_turf(target))
I.pixel_x = target.pixel_x
I.pixel_y = target.pixel_y
- I.pixel_z = target.pixel_z
if(istype(target, /obj/item/stack))
var/obj/item/stack/S = target
S.use(1)
@@ -268,7 +276,6 @@
do_attack_animation(target)
changeNext_move(CLICK_CD_MELEE)
target.ex_act(3)
- return
/mob/living/simple_animal/hostile/swarmer/proc/DisperseTarget(var/mob/living/target)
if(target != src)
@@ -290,8 +297,7 @@
if((pressure > 20) && (pressure < 550))//Account for crushing pressure or vaccuums
if(ishuman(target))//If we're getting rid of a human, slap some zipties on them to keep them away from us a little longer
var/obj/item/weapon/restraints/handcuffs/cable/zipties/Z = new /obj/item/weapon/restraints/handcuffs/cable/zipties(src)
- var/mob/living/carbon/human/H = target
- Z.apply_cuffs(H, src)
+ Z.apply_cuffs(target, src)
do_teleport(target, F, 0)
playsound(src,'sound/effects/sparks4.ogg',50,1)
break
@@ -303,7 +309,6 @@
var/obj/effect/swarmer/dismantle/D = new /obj/effect/swarmer/dismantle(get_turf(target))
D.pixel_x = target.pixel_x
D.pixel_y = target.pixel_y
- D.pixel_z = target.pixel_z
if(do_mob(src, target, 100))
src << "Dismantling complete."
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(target.loc)
@@ -314,7 +319,6 @@
var/obj/effect/swarmer/disintegration/N = new /obj/effect/swarmer/disintegration(get_turf(target))
N.pixel_x = target.pixel_x
N.pixel_y = target.pixel_y
- N.pixel_z = target.pixel_z
target.dropContents()
if(istype(target, /obj/machinery/computer))
var/obj/machinery/computer/C = target
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 125d4007879..7694f714aca 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -253,22 +253,21 @@
var/target = the_target
visible_message("[src] [ranged_message] at [target]!")
- var/tturf = get_turf(target)
if(rapid)
spawn(1)
- Shoot(tturf, src.loc, src)
+ Shoot(target, src.loc, src)
if(casingtype)
new casingtype(get_turf(src))
spawn(4)
- Shoot(tturf, src.loc, src)
+ Shoot(target, src.loc, src)
if(casingtype)
new casingtype(get_turf(src))
spawn(6)
- Shoot(tturf, src.loc, src)
+ Shoot(target, src.loc, src)
if(casingtype)
new casingtype(get_turf(src))
else
- Shoot(tturf, src.loc, src)
+ Shoot(target, src.loc, src)
if(casingtype)
new casingtype
ranged_cooldown = ranged_cooldown_cap
@@ -278,17 +277,17 @@
if(target == start)
return
- var/obj/item/projectile/A = new projectiletype(user:loc)
+ var/obj/item/projectile/A = new projectiletype(src.loc)
playsound(user, projectilesound, 100, 1)
if(!A) return
- if (!istype(target, /turf))
- qdel(A)
- return
A.current = target
A.firer = src
A.yo = target:y - start:y
A.xo = target:x - start:x
+ if(AIStatus == AI_OFF)//Don't want mindless mobs to have their movement screwed up firing in space
+ newtonian_move(get_dir(target, user))
+ A.original = target
spawn( 0 )
A.process()
return
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 9ca93519fb5..a7d3051a2c6 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -513,7 +513,7 @@
/mob/living/simple_animal/proc/attack_threshold_check(damage, damagetype)
if(damage <= force_threshold)
- visible_message("[src] looks unharmed.")
+ visible_message("[src] looks unharmed from the damage.")
else
switch(damagetype)
if(BRUTE)