diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 0fe833ac3de..5dc4c2c0f5e 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -14,6 +14,9 @@
stop_automated_movement = 1
status_flags = CANPUSH
attack_sound = 'sound/weapons/punch1.ogg'
+ environment_smash = 1
+ see_in_dark = 7
+ damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0)
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
maxbodytemp = INFINITY
@@ -22,7 +25,7 @@
flying = 1
unique_name = 1
var/list/construct_spells = list()
- var/playstyle_string = "You are a generic construct! Your job is to not exist."
+ var/playstyle_string = "You are a generic construct! Your job is to not exist."
/mob/living/simple_animal/construct/New()
@@ -39,13 +42,13 @@
return
/mob/living/simple_animal/construct/examine(mob/user)
- var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
+ var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
if (src.health < src.maxHealth)
msg += ""
if (src.health >= src.maxHealth/2)
msg += "It looks slightly dented.\n"
else
- msg += "It looks severely dented!\n"
+ msg += "It looks severely dented!\n"
msg += ""
msg += "*---------*"
@@ -53,28 +56,32 @@
/mob/living/simple_animal/construct/attack_animal(mob/living/simple_animal/M)
if(istype(M, /mob/living/simple_animal/construct/builder))
- adjustBruteLoss(-5)
- if(src != M)
- Beam(M,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=4)
- M.emote("me", 1, "repairs some of \the [src]'s dents.")
+ if(health < maxHealth)
+ adjustBruteLoss(-5)
+ if(src != M)
+ Beam(M,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=4)
+ M.visible_message("[M] repairs some of \the [src]'s dents.", \
+ "You repair some of [src]'s dents, leaving [src] at [health]/[maxHealth] health.")
+ else
+ M.visible_message("[M] repairs some of its own dents.", \
+ "You repair some of your own dents, leaving you at [M.health]/[M.maxHealth] health.")
+ else
+ if(src != M)
+ M << "You cannot repair [src]'s dents, as it has none!"
+ else
+ M << "You cannot repair your own dents, as you have none!"
else if(src != M)
..()
-/mob/living/simple_animal/construct/bullet_act(obj/item/projectile/Proj)
- if(!Proj)
- return
- if(Proj.damage_type == BURN || Proj.damage_type == BRUTE)
- adjustBruteLoss(Proj.damage)
- Proj.on_hit(src)
- return 0
+/mob/living/simple_animal/construct/Process_Spacemove(movement_dir = 0)
+ return 1
/mob/living/simple_animal/construct/narsie_act()
return
+
+
/////////////////Juggernaut///////////////
-
-
-
/mob/living/simple_animal/construct/armored
name = "Juggernaut"
real_name = "Juggernaut"
@@ -95,17 +102,16 @@
mob_size = MOB_SIZE_LARGE
force_threshold = 11
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
- playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \
- create shield walls, rip apart enemies and walls alike, and even deflect energy weapons."
+ playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \
+ create shield walls, rip apart enemies and walls alike, and even deflect energy weapons."
/mob/living/simple_animal/construct/armored/bullet_act(obj/item/projectile/P)
if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam))
var/reflectchance = 80 - round(P.damage/3)
if(prob(reflectchance))
- if(P.damage_type == BURN || P.damage_type == BRUTE)
- adjustBruteLoss(P.damage * 0.5)
- visible_message("The [P.name] gets reflected by [src]'s shell!", \
- "The [P.name] gets reflected by [src]'s shell!")
+ apply_damage(P.damage * 0.5, P.damage_type)
+ visible_message("The [P.name] is reflected by [src]'s armored shell!", \
+ "The [P.name] is reflected by your armored shell!")
// Find a turf near or on the original location to bounce to
if(P.starting)
@@ -128,9 +134,6 @@
////////////////////////Wraith/////////////////////////////////////////////
-
-
-
/mob/living/simple_animal/construct/wraith
name = "Wraith"
real_name = "Wraith"
@@ -142,16 +145,13 @@
melee_damage_lower = 25
melee_damage_upper = 25
attacktext = "slashes"
- speed = 0
- see_in_dark = 7
attack_sound = 'sound/weapons/bladeslice.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift)
- playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls."
+ playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls."
/////////////////////////////Artificer/////////////////////////
-
/mob/living/simple_animal/construct/builder
name = "Artificer"
real_name = "Artificer"
@@ -165,7 +165,6 @@
melee_damage_lower = 5
melee_damage_upper = 5
attacktext = "rams"
- speed = 0
environment_smash = 2
attack_sound = 'sound/weapons/punch2.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall,
@@ -173,13 +172,14 @@
/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone,
/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser,
/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser)
- playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \
+ playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \
use magic missile, repair allied constructs (by clicking on them), \
- and most important of all create new constructs \
- (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone)."
+ and, most important of all, create new constructs by producing soulstones to capture souls, \
+ and shells to place those soulstones into."
+
+
/////////////////////////////Harvester/////////////////////////
-
/mob/living/simple_animal/construct/harvester
name = "Harvester"
real_name = "Harvester"
@@ -191,13 +191,8 @@
melee_damage_lower = 1
melee_damage_upper = 5
attacktext = "prods"
- speed = 0
- environment_smash = 1
- see_in_dark = 7
attack_sound = 'sound/weapons/tap.ogg'
construct_spells = list(/obj/effect/proc_holder/spell/targeted/smoke/disable)
playstyle_string = "You are a Harvester. You are not strong, but your powers of domination will assist you in your role: \
Bring those who still cling to this world of illusion back to the Geometer so they may know Truth."
-/mob/living/simple_animal/construct/harvester/Process_Spacemove(movement_dir = 0)
- return 1
\ No newline at end of file
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 5aac4642fcd..da5434e8968 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index b95549b5cc9..ac3b0ff7a01 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 3292ee4ddec..c3a70d8615f 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index d8bd9667399..b828eb830d7 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ