Major Changeling Tweaks (#15993)

* wadawd

* Revert "revert"

This reverts commit 55e480dd85.

* w

* w

* w

* a

* w

* you can no longer grab The Thing

---------

Co-authored-by: DanseMacabre <rsurname1212@gmail.com>
This commit is contained in:
TheDanseMacabre
2023-03-19 07:42:51 -04:00
committed by GitHub
parent 300cf0a9f0
commit 411fa0f101
5 changed files with 91 additions and 61 deletions
@@ -255,9 +255,9 @@ var/list/datum/power/changeling/powerinstances = list()
/datum/power/changeling/horror_form
name = "Horror Form"
desc = "We tear apart our human disguise, revealing our true form."
helptext = "We will return to our current form after ten minutes. Death in our true form is permanent."
genomecost = 15
desc = "We tear apart our human disguise, revealing our true and ultimate form."
helptext = "We will assume our ultimate form. This is irreversible. While we are in this state, we are extremely powerful."
genomecost = 10
verbpath = /mob/proc/horror_form
// Modularchangling, totally stolen from the new player panel. YAYY
@@ -453,10 +453,10 @@
/mob/proc/horror_form()
set category = "Changeling"
set name = "Horror Form (40)"
set name = "Horror Form (50)"
set desc = "Tear apart your human disguise, revealing your true form."
var/datum/changeling/changeling = changeling_power(40,0,0)
var/datum/changeling/changeling = changeling_power(50,0,0)
if(!changeling)
return FALSE
@@ -465,10 +465,10 @@
var/mob/living/carbon/human/M = src
if(alert("Are we sure we wish to reveal ourselves? This will only revert after ten minutes.", , "Yes", "No") == "No") //Changelings have to confirm whether they want to go full horrorform
if(alert("Are we sure we wish to reveal ourselves and assume our ultimate form? This is irreversible, and we will not be able to revert to our disguised form.", , "Yes", "No") == "No") //Changelings have to confirm whether they want to go full horrorform
return
changeling.use_charges(40)
changeling.use_charges(50)
M.visible_message("<span class='danger'>[M] writhes and contorts, their body expanding to inhuman proportions!</span>", \
"<span class='danger'>We begin our transformation to our true form!</span>")
@@ -510,19 +510,6 @@
M.forceMove(ling) //move inside the new dude to hide him.
ling.occupant = M
M.status_flags |= GODMODE //dont want him to die or breathe or do ANYTHING
addtimer(CALLBACK(src, PROC_REF(revert_horror_form), ling), 10 MINUTES)
/mob/proc/revert_horror_form(var/mob/living/ling)
if(QDELETED(ling))
return
src.status_flags &= ~GODMODE //no more godmode.
if(ling.mind)
ling.mind.transfer_to(src)
else
src.key = ling.key
playsound(get_turf(src),'sound/effects/blobattack.ogg',50,1)
src.forceMove(get_turf(ling))
qdel(ling)
// Chiropteran Screech
/mob/proc/resonant_shriek()
@@ -1,7 +1,8 @@
/mob/living/simple_animal/hostile/true_changeling
name = "shambling horror"
desc = "A monstrous creature, made of twisted flesh and bone."
speak_emote = list("gibbers")
desc = "An entity ripped from your nightmares. A monstrous creature, a warped parody of a living being. It is created from a twisted amalgamation of flesh and bone, covered in oozing sores, open wounds, and serrated knife-like blades of bone. A strong, sickening smell of rot, blood, and sickness emanates from it."
speak_emote = list("snarls")
emote_hear = list("gibbers")
icon = 'icons/mob/npc/animal.dmi'
icon_state = "abomination"
icon_living = "abomination"
@@ -15,33 +16,42 @@
tameable = FALSE
organ_names = list("head", "chest", "tail", "leg")
response_help = "pets"
organ_names = list("gaping maw", "misshapen head", "engorged abdomen", "bladed tail", "warped legs", "scythelike arm")
response_help = "pokes"
response_disarm = "shoves"
response_harm = "harmlessly punches"
blood_amount = 600
maxHealth = 750
health = 750
blood_amount = 1000
maxHealth = 1250
health = 1250
harm_intent_damage = 0
melee_damage_lower = 30
melee_damage_upper = 30
resist_mod = 3
melee_damage_upper = 45
armor_penetration = 30
ranged = 1
projectiletype = /obj/item/projectile/bonedart/ling
projectilesound = 'sound/weapons/bloodyslice.ogg'
resist_mod = 15
mob_size = 25
environment_smash = 2
attacktext = "mangled"
attack_sound = 'sound/weapons/bloodyslice.ogg'
emote_sounds = list('sound/effects/creatures/bear_loud_1.ogg', 'sound/effects/creatures/bear_loud_2.ogg', 'sound/effects/creatures/bear_loud_3.ogg', 'sound/effects/creatures/bear_loud_4.ogg')
see_in_dark = 8
see_invisible = SEE_INVISIBLE_NOLIGHTING
minbodytemp = 0
maxbodytemp = 350
min_oxy = 0
min_oxy = 5
max_co2 = 0
max_tox = 0
var/is_devouring = FALSE
var/mob/living/carbon/human/occupant = null
var/loud_sounds = list('sound/effects/creatures/bear_loud_1.ogg',
'sound/effects/creatures/bear_loud_2.ogg',
'sound/effects/creatures/bear_loud_3.ogg',
'sound/effects/creatures/bear_loud_4.ogg')
/mob/living/simple_animal/hostile/true_changeling/Initialize()
. = ..()
@@ -49,24 +59,27 @@
icon_state = "horror"
icon_living = "horror"
icon_dead = "horror_dead"
else if(prob(25))
icon_state = "horror_alt"
icon_living = "horror_alt"
icon_dead = "horror_alt_dead"
/mob/living/simple_animal/hostile/true_changeling/Life()
..()
adjustBruteLoss(-10) //it will slowly heal brute damage, making fire/laser a stronger option
/mob/living/simple_animal/hostile/true_changeling/do_animate_chat(var/message, var/datum/language/language, var/small, var/list/show_to, var/duration, var/list/message_override)
INVOKE_ASYNC(src, /atom/movable/proc/animate_chat, message, language, small, show_to, duration)
/mob/living/simple_animal/hostile/true_changeling/mind_initialize()
..()
mind.assigned_role = "Changeling"
/mob/living/simple_animal/hostile/true_changeling/Life()
if(prob(10))
custom_emote(VISIBLE_MESSAGE, pick( list("shrieks!","roars!", "screeches!", "snarls!", "bellows!", "screams!") ) )
var/sound = pick(loud_sounds)
playsound(src, sound, 90, 1, 15, usepressure = 0)
/mob/living/simple_animal/hostile/true_changeling/death(gibbed)
..()
if(!gibbed)
visible_message("<b>[src]</b> lets out a waning scream as it falls, twitching, to the floor!")
playsound(loc, 'sound/effects/creepyshriek.ogg', 30, 1)
visible_message("<b>[src]</b> lets out a waning scream as it disintegrates into a pile of flesh!")
playsound(loc, 'sound/effects/creatures/vannatusk_attack.ogg', 90, 1, 15)
if(occupant)
qdel(occupant)
gibs(src.loc)
@@ -75,7 +88,7 @@
/mob/living/simple_animal/hostile/true_changeling/verb/ling_devour(mob/living/target as mob in oview())
set category = "Changeling"
set name = "Devour"
set name = "Devour (Heal)"
set desc = "Devours a creature, destroying its body and regenerating health."
if(!Adjacent(target))
@@ -124,26 +137,9 @@
src.is_devouring = FALSE
return
/mob/living/simple_animal/hostile/true_changeling/verb/dart(mob/living/target as mob in oview())
set name = "Launch Bone Dart"
set desc = "Launches a Bone Dart at a target."
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
last_special = world.time + 30
visible_message("<span class='warning'>\The [src]'s skin bulges and tears, launching a bone-dart at [target]!</span>")
playsound(src.loc, 'sound/weapons/bloodyslice.ogg', 50, 1)
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/true_changeling/attempt_grab(var/mob/living/grabber)
to_chat(grabber, SPAN_WARNING("\The [src] contorts and shifts away from you when you try to grab it!"))
return FALSE
/mob/living/simple_animal/hostile/lesser_changeling
name = "crawling horror"
@@ -321,4 +321,10 @@
check_armor = "melee"
embed = TRUE
sharp = TRUE
shrapnel_type = /obj/item/bone_dart/vannatusk
shrapnel_type = /obj/item/bone_dart/vannatusk
/obj/item/projectile/bonedart/ling
name = "bone dart"
damage = 10
armor_penetration = 10
check_armor = "bullet"
@@ -0,0 +1,41 @@
################################
# Example Changelog File
#
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
#
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
# When it is, any changes listed below will disappear.
#
# Valid Prefixes:
# bugfix
# wip (For works in progress)
# tweak
# soundadd
# sounddel
# rscadd (general adding of nice things)
# rscdel (general deleting of nice things)
# imageadd
# imagedel
# maptweak
# spellcheck (typo fixes)
# experiment
# balance
# admin
# backend
# security
# refactor
#################################
# Your name.
author: TheDanseMacabre
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
delete-after: True
# Any changes you've made. See valid prefix list above.
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
# SCREW THIS UP AND IT WON'T WORK.
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
changes:
- balance: "Changeling horror form has been reworked. It is now permanent, it does not passively regenerate health, cannot survive in a vacuum, and costs more chems to use the ability. In exchange, it has better stats across the board, and is marginally cheaper to purchase."