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