Changeling lesser form remake (#7436)

This commit is contained in:
Alberyk
2019-11-20 23:06:51 +01:00
committed by Werner
parent 8b3557d757
commit 60b60b9c0a
7 changed files with 140 additions and 14 deletions
@@ -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
@@ -7,6 +7,10 @@
if(!changeling)
return
if(!ishuman(src))
to_chat(src, "<span class='warning'>We cannot perform this ability as this form!</span>")
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("<span class='warning'>[src] transforms!</span>")
if(ishuman(src))
src.visible_message("<span class='warning'>[src] transforms!</span>")
var/mob/living/carbon/human/H = src
var/newSpecies = chosen_dna.speciesName
H.set_species(newSpecies, 1)
@@ -75,7 +78,30 @@
H.visible_message("<span class='warning'>[H] transforms!</span>")
changeling.geneticdamage = 30
to_chat(H, "<span class='warning'>Our genes cry out!</span>")
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, "<span class='danger'>Your hands are full.</span>")
return
if(M.handcuffed)
var/cuffs = M.handcuffed
M.u_equip(M.handcuffed)
@@ -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("<span class='warning'>\The [src] explodes into a shower of gore!</span>")
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, "<span class='notice'>We are dead, we cannot use any abilities!</span>")
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("<span class='warning'>\The [src] explodes into a shower of gore!</span>")
gibs(src.loc)
qdel(src)
+2 -1
View File
@@ -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()
@@ -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)
+6
View File
@@ -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."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

After

Width:  |  Height:  |  Size: 295 KiB