diff --git a/code/game/gamemodes/changeling/helpers/_store.dm b/code/game/gamemodes/changeling/helpers/_store.dm
index 6f122fea858..97e23dea1cf 100644
--- a/code/game/gamemodes/changeling/helpers/_store.dm
+++ b/code/game/gamemodes/changeling/helpers/_store.dm
@@ -38,8 +38,8 @@ var/list/datum/power/changeling/powerinstances = list()
/datum/power/changeling/lesser_form
name = "Lesser Form"
- desc = "We debase ourselves and become lesser. We become a monkey."
- genomecost = 4
+ desc = "We debase ourselves and become lesser. We become a weaker, but more mobile form."
+ genomecost = 2
verbpath = /mob/proc/changeling_lesser_form
/datum/power/changeling/mimicvoice
@@ -54,7 +54,6 @@ var/list/datum/power/changeling/powerinstances = list()
desc = "We fake our own death, imperceptible to even the best of doctors. We can choose when to re-animate."
helptext = "Can be used before or after death. Duration varies greatly."
genomecost = 0
- allowduringlesserform = TRUE
verbpath = /mob/proc/changeling_fakedeath
//Hivemind
diff --git a/code/game/gamemodes/changeling/implements/powers/body.dm b/code/game/gamemodes/changeling/implements/powers/body.dm
index cb3fa9ce750..e8aaed52988 100644
--- a/code/game/gamemodes/changeling/implements/powers/body.dm
+++ b/code/game/gamemodes/changeling/implements/powers/body.dm
@@ -7,6 +7,10 @@
if(!changeling)
return
+ if(!ishuman(src))
+ to_chat(src, "We cannot perform this ability as this form!")
+ return
+
var/list/names = list()
for(var/datum/absorbed_dna/DNA in changeling.absorbed_dna)
names += "[DNA.name]"
@@ -33,9 +37,8 @@
return TRUE
/mob/proc/handle_changeling_transform(var/datum/absorbed_dna/chosen_dna)
- src.visible_message("[src] transforms!")
-
if(ishuman(src))
+ src.visible_message("[src] transforms!")
var/mob/living/carbon/human/H = src
var/newSpecies = chosen_dna.speciesName
H.set_species(newSpecies, 1)
@@ -75,7 +78,30 @@
H.visible_message("[H] transforms!")
changeling.geneticdamage = 30
to_chat(H, "Our genes cry out!")
- H = H.monkeyize()
+
+ var/mob/living/simple_animal/hostile/lesser_changeling/ling = new (get_turf(H))
+
+ if(istype(H,/mob/living/carbon/human))
+ for(var/obj/item/I in H.contents)
+ if(isorgan(I))
+ continue
+ H.drop_from_inventory(I)
+
+ if(H.mind)
+ H.mind.transfer_to(ling)
+ else
+ ling.key = H.key
+ ling.occupant = H
+ var/atom/movable/overlay/effect = new /atom/movable/overlay(get_turf(H))
+ effect.density = FALSE
+ effect.anchored = TRUE
+ effect.icon = 'icons/effects/effects.dmi'
+ effect.layer = 3
+ flick("summoning", effect)
+ QDEL_IN(effect, 10)
+ H.forceMove(ling)
+ H.status_flags |= GODMODE
+
feedback_add_details("changeling_powers", "LF")
return TRUE
@@ -338,7 +364,7 @@
if(M.l_hand && M.r_hand)
to_chat(M, "Your hands are full.")
return
-
+
if(M.handcuffed)
var/cuffs = M.handcuffed
M.u_equip(M.handcuffed)
diff --git a/code/modules/mob/living/simple_animal/hostile/changeling.dm b/code/modules/mob/living/simple_animal/hostile/changeling.dm
index 9f5c3547a88..a2e514e1755 100644
--- a/code/modules/mob/living/simple_animal/hostile/changeling.dm
+++ b/code/modules/mob/living/simple_animal/hostile/changeling.dm
@@ -6,9 +6,9 @@
icon_state = "abomination"
icon_living = "abomination"
icon_dead = "abomination_dead"
- stop_automated_movement = 1
- universal_speak = 1
- universal_understand = 1
+ stop_automated_movement = TRUE
+ universal_speak = TRUE
+ universal_understand = TRUE
mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY
mob_push_flags = ALLMOBS
@@ -139,3 +139,94 @@
var/obj/item/bone_dart/A = new /obj/item/bone_dart(usr.loc)
A.throw_at(target, 10, 20, usr)
add_logs(src, target, "launched a bone dart at")
+
+/mob/living/simple_animal/hostile/lesser_changeling
+ name = "crawling horror"
+ desc = "An agile monster made of twisted flesh and bone."
+ speak_emote = list("gibbers")
+ icon = 'icons/mob/npc/animal.dmi'
+ icon_state = "lesser_ling"
+ icon_living = "lesser_ling"
+
+ stop_automated_movement = TRUE
+ universal_speak = TRUE
+ universal_understand = TRUE
+
+ tameable = FALSE
+
+ response_help = "pets"
+ response_disarm = "shoves"
+ response_harm = "harmlessly punches"
+ maxHealth = 150
+ health = 150
+ harm_intent_damage = 5
+ melee_damage_lower = 5
+ melee_damage_upper = 10
+ mob_size = 15
+ attacktext = "mangled"
+ attack_sound = 'sound/weapons/bloodyslice.ogg'
+
+ see_in_dark = 8
+ see_invisible = SEE_INVISIBLE_NOLIGHTING
+
+ pass_flags = PASSTABLE
+
+ density = FALSE
+
+ minbodytemp = 0
+ maxbodytemp = 350
+ min_oxy = 0
+ max_co2 = 0
+ max_tox = 0
+
+ speed = -2
+
+ var/mob/living/carbon/human/occupant = null
+
+/mob/living/simple_animal/hostile/lesser_changeling/Initialize()
+ . = ..()
+ verbs += /mob/living/proc/ventcrawl
+
+/mob/living/simple_animal/hostile/lesser_changeling/mind_initialize()
+ ..()
+ mind.assigned_role = "Changeling"
+
+/mob/living/simple_animal/hostile/lesser_changeling/death(gibbed)
+ ..()
+ if(!gibbed)
+ if(occupant)
+ occupant.forceMove(get_turf(src))
+ occupant.status_flags &= ~GODMODE
+ if(mind)
+ mind.transfer_to(occupant)
+
+ visible_message("\The [src] explodes into a shower of gore!")
+ gibs(src.loc)
+ qdel(src)
+ return
+
+/mob/living/simple_animal/hostile/lesser_changeling/verb/untransform()
+ set name = "Return to original form"
+ set desc = "Return to your original form."
+ set category = "Changeling"
+
+ if(!health)
+ to_chat(usr, "We are dead, we cannot use any abilities!")
+ return
+
+ if(last_special > world.time)
+ return
+
+ if(!isturf(loc))
+ return
+
+ last_special = world.time + 30
+
+ if(occupant)
+ occupant.forceMove(get_turf(src))
+ occupant.status_flags &= ~GODMODE
+ if(mind)
+ mind.transfer_to(occupant)
+ visible_message("\The [src] explodes into a shower of gore!")
+ gibs(src.loc)
+ qdel(src)
\ No newline at end of file
diff --git a/code/modules/ventcrawl/ventcrawl.dm b/code/modules/ventcrawl/ventcrawl.dm
index e77664b2f08..00c9c936fe2 100644
--- a/code/modules/ventcrawl/ventcrawl.dm
+++ b/code/modules/ventcrawl/ventcrawl.dm
@@ -11,7 +11,8 @@ var/global/list/can_enter_vent_with = list(
/obj/item/holder,
/obj/machinery/camera,
/mob/living/simple_animal/borer,
- /mob/living/simple_animal/rat
+ /mob/living/simple_animal/rat,
+ /mob/living/carbon/human
)
/mob/living/var/list/icon/pipes_shown = list()
diff --git a/code/modules/ventcrawl/ventcrawl_atmospherics.dm b/code/modules/ventcrawl/ventcrawl_atmospherics.dm
index 994ab757f0b..4795bfa27b4 100644
--- a/code/modules/ventcrawl/ventcrawl_atmospherics.dm
+++ b/code/modules/ventcrawl/ventcrawl_atmospherics.dm
@@ -41,14 +41,17 @@
//If its not small or the device isnt enabled, it wont blend
if(!issmall(AM) || !use_power)
return FALSE
-
+
//Get the things we need to create the "output"
var/mob/living/L = AM
+ if(L.mob_size > MOB_TINY)
+ return
+
var/blood_color = "#A10808"
if(L.blood_color)
blood_color = L.blood_color
-
+
if(iscarbon(AM))
var/mob/living/carbon/C = AM
blood_color = C.species.blood_color
@@ -58,7 +61,7 @@
//Blend the Mob
to_chat(AM, span("danger","\The [src] blends you to a fine dust."))
L.death()
- qdel(L)
+ qdel(L)
//Output what´s left through the connected vents
if(N)
diff --git a/html/changelogs/alberyk_newlesser.yml b/html/changelogs/alberyk_newlesser.yml
new file mode 100644
index 00000000000..72ac65e7d73
--- /dev/null
+++ b/html/changelogs/alberyk_newlesser.yml
@@ -0,0 +1,6 @@
+author: Alberyk, Kyres1
+
+delete-after: True
+
+changes:
+ - rscadd: "Reworked the changeling lesser form power. It transform the changeling into a small monster, that can ventcrawl and fun fast."
diff --git a/icons/mob/npc/animal.dmi b/icons/mob/npc/animal.dmi
index 201c735276d..f1de8defea7 100644
Binary files a/icons/mob/npc/animal.dmi and b/icons/mob/npc/animal.dmi differ