mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
Changeling Rebalance: Kill It With Fire, feat. Armblade Rework (#83616)
## About The Pull Request https://github.com/tgstation/tgstation/assets/4081722/684da396-fb28-4022-9f46-0fc4feb34b7a Changelings now do not like fire, as is tradition. If they are on fire, they no longer generate chemicals until they put the fire out. If they are on fire, they no longer can use any changeling powers until they put the fire out. All changeling equippable items like armblades, shields, armor, spacesuits, etc. are now flammable and super-duper vulnerable to flames. The Armblade now costs 30 chemicals to equip, and has a DNA cost of 3, compared to the previous 20 chemicals and 2 DNA cost. The Armblade now shatters after enough uses in exactly the same way as the Shield; extract genomes with Absorb to maximize your Armblade's efficiency. for its' chemical cost. Fixes items you're holding not catching on fire alongside the rest of you when you light on fire. Fixes the Changeling Shield having one more hit than it was supposed to. ## Why It's Good For The Game Changeling has been in a relatively incredibly rough state ever since someone walked up to this predominatly stealth and intrigue based antagonist and went "lets turn it into a carbon copy of an early 2000s action game I just played".  Since then, just about every changeling has been a loud changeling. The stats speak for themselves; Changelings are no longer a stealth antag and they're defined by having an undroppable e-sword, armor, and HP regen they can use mid-fight. They're just loud beatsticks now instead of the scary stealth antagonist they were years ago. I'm expecting a lot of pushback from the adrenaline addicts who dislike the concept of stealth, to which I say: too bad. Giving Changelings a weak point in the form of fire is not only thematically appropriate for the original inspiration for Changeling, but also provides the crew a way to actually scare off changelings back into hiding, and encourages more usage of fire-causing weapons. This is going to shake up changelings, and Nerfing the hell out of the Armblade is going to encourage changelings to take stealthier approaches to combat, and utilize the rest of their power assortment that isn't just focused around being a gigantic unstoppable beatstick. ## Changelog 🆑 balance: Changelings now do not like fire, as is tradition. balance: If they are on fire, they no longer generate chemicals until they put the fire out. balance: If they are on fire, they no longer can use any changeling powers until they put the fire out. balance: All changeling equippable items like armblades, shields, armor, spacesuits, etc. are now flammable and super-duper vulnerable to flames. balance: The Armblade now costs 30 chemicals to equip, and has a DNA cost of 3, compared to the previous 20 chemicals and 2 DNA cost. add: The Armblade now shatters after enough uses in exactly the same way as the Shield; extract genomes with Absorb to maximize your Armblade's efficiency. for its' chemical cost. fix: Fixes items you're holding not catching on fire alongside the rest of you when you light on fire. fix: Fixes the Changeling Shield having one more hit than it was supposed to. /🆑 --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
This commit is contained in:
@@ -260,6 +260,10 @@
|
||||
*/
|
||||
/datum/antagonist/changeling/proc/on_life(datum/source, seconds_per_tick, times_fired)
|
||||
SIGNAL_HANDLER
|
||||
if(isliving(owner.current))
|
||||
var/mob/living/living_owner = owner.current
|
||||
if(living_owner.fire_stacks && living_owner.on_fire)
|
||||
return // No chemical regen while on fire.
|
||||
|
||||
var/delta_time = DELTA_WORLD_TIME(SSmobs)
|
||||
|
||||
|
||||
@@ -81,6 +81,10 @@ the same goes for Remove(). if you override Remove(), call parent or else your p
|
||||
/datum/action/changeling/proc/can_sting(mob/living/user, mob/living/target)
|
||||
if(!can_be_used_by(user))
|
||||
return FALSE
|
||||
if(user.fire_stacks && user.on_fire)
|
||||
user.balloon_alert(user, "on fire!")
|
||||
to_chat(user, span_boldwarning("WE CANNOT DO THIS WHILE ENGULFED IN FLAMES!!! PUT OUT THE FIRE FIRST!!!"))
|
||||
return FALSE
|
||||
var/datum/antagonist/changeling/changeling = IS_CHANGELING(user)
|
||||
if(changeling.chem_charges < chemical_cost)
|
||||
user.balloon_alert(user, "needs [chemical_cost] chemicals!")
|
||||
|
||||
@@ -173,15 +173,24 @@
|
||||
\***************************************/
|
||||
/datum/action/changeling/weapon/arm_blade
|
||||
name = "Arm Blade"
|
||||
desc = "We reform one of our arms into a deadly blade. Costs 20 chemicals."
|
||||
helptext = "We may retract our armblade in the same manner as we form it. Cannot be used while in lesser form."
|
||||
desc = "We reform one of our arms into a deadly blade that breaks after a number of hits, improvable by absorbing genomes. Costs 40 chemicals."
|
||||
helptext = "We may retract our armblade in the same manner as we form it. Organic tissue is not perfect; the armblade will break after it is used too much. The more genomes we absorb, the stronger it is. Cannot be used while in lesser form."
|
||||
button_icon_state = "armblade"
|
||||
chemical_cost = 20
|
||||
dna_cost = 2
|
||||
chemical_cost = 30
|
||||
dna_cost = 3
|
||||
req_human = TRUE
|
||||
weapon_type = /obj/item/melee/arm_blade
|
||||
weapon_name_simple = "blade"
|
||||
|
||||
/datum/action/changeling/weapon/arm_blade/sting_action(mob/living/carbon/user)
|
||||
var/datum/antagonist/changeling/changeling = IS_CHANGELING(user) //So we can read the absorbed_count.
|
||||
if(!changeling)
|
||||
return
|
||||
|
||||
var/obj/item/melee/arm_blade/blade = ..()
|
||||
blade.remaining_uses = round(changeling.absorbed_count * 3)
|
||||
return TRUE
|
||||
|
||||
/obj/item/melee/arm_blade
|
||||
name = "arm blade"
|
||||
desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter."
|
||||
@@ -203,8 +212,10 @@
|
||||
wound_bonus = 10
|
||||
bare_wound_bonus = 10
|
||||
armour_penetration = 35
|
||||
resistance_flags = FLAMMABLE
|
||||
var/can_drop = FALSE
|
||||
var/fake = FALSE
|
||||
var/remaining_uses
|
||||
|
||||
/obj/item/melee/arm_blade/Initialize(mapload,silent,synthetic)
|
||||
. = ..()
|
||||
@@ -250,6 +261,15 @@
|
||||
span_hear("You hear a metal screeching sound."))
|
||||
opening.open(BYPASS_DOOR_CHECKS)
|
||||
|
||||
if(remaining_uses <= 1)
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/changeling = loc
|
||||
changeling.visible_message(span_warning("With a sickening crunch, [changeling] reforms [changeling.p_their()] [src] into an arm!"), span_notice("We assimilate our armblade into our body."), "<span class='italics'>You hear organic matter ripping and tearing!</span>")
|
||||
qdel(src)
|
||||
else
|
||||
remaining_uses--
|
||||
|
||||
|
||||
/obj/item/melee/arm_blade/dropped(mob/user)
|
||||
..()
|
||||
if(can_drop)
|
||||
@@ -297,6 +317,7 @@
|
||||
throw_range = 0
|
||||
throw_speed = 0
|
||||
can_hold_up = FALSE
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/obj/item/gun/magic/tentacle/Initialize(mapload, silent)
|
||||
. = ..()
|
||||
@@ -493,6 +514,9 @@
|
||||
S.remaining_uses = round(changeling.absorbed_count * 3)
|
||||
return TRUE
|
||||
|
||||
/datum/armor/item_shield/changeling
|
||||
fire = -100
|
||||
|
||||
/obj/item/shield/changeling
|
||||
name = "shield-like mass"
|
||||
desc = "A mass of tough, boney tissue. You can still see the fingers as a twisted pattern in the shield."
|
||||
@@ -502,6 +526,8 @@
|
||||
lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi'
|
||||
block_chance = 50
|
||||
armor_type = /datum/armor/item_shield/changeling
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
var/remaining_uses //Set by the changeling ability.
|
||||
|
||||
@@ -512,7 +538,7 @@
|
||||
loc.visible_message(span_warning("The end of [loc.name]\'s hand inflates rapidly, forming a huge shield-like mass!"), span_warning("We inflate our hand into a strong shield."), span_hear("You hear organic matter ripping and tearing!"))
|
||||
|
||||
/obj/item/shield/changeling/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK, damage_type = BRUTE)
|
||||
if(remaining_uses < 1)
|
||||
if(remaining_uses <= 1)
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.visible_message(span_warning("With a sickening crunch, [H] reforms [H.p_their()] shield into an arm!"), span_notice("We assimilate our shield into our body"), "<span class='italics>You hear organic matter ripping and tearing!</span>")
|
||||
@@ -551,6 +577,7 @@
|
||||
flags_inv = HIDEJUMPSUIT
|
||||
cold_protection = 0
|
||||
heat_protection = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/datum/armor/armor_changeling
|
||||
melee = 40
|
||||
@@ -559,7 +586,7 @@
|
||||
energy = 50
|
||||
bomb = 10
|
||||
bio = 10
|
||||
fire = 90
|
||||
fire = -100
|
||||
acid = 90
|
||||
|
||||
/obj/item/clothing/suit/armor/changeling/Initialize(mapload)
|
||||
@@ -576,6 +603,7 @@
|
||||
item_flags = DROPDEL
|
||||
armor_type = /datum/armor/helmet_changeling
|
||||
flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT
|
||||
resistance_flags = FLAMMABLE
|
||||
|
||||
/datum/armor/helmet_changeling
|
||||
melee = 40
|
||||
@@ -584,7 +612,7 @@
|
||||
energy = 50
|
||||
bomb = 10
|
||||
bio = 10
|
||||
fire = 90
|
||||
fire = -90
|
||||
acid = 90
|
||||
|
||||
/obj/item/clothing/head/helmet/changeling/Initialize(mapload)
|
||||
@@ -614,6 +642,7 @@
|
||||
armor_type = /datum/armor/changeling_hivehead
|
||||
flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT
|
||||
actions_types = list(/datum/action/cooldown/hivehead_spawn_minions)
|
||||
resistance_flags = FLAMMABLE
|
||||
///Does this hive head hold reagents?
|
||||
var/holds_reagents = TRUE
|
||||
|
||||
@@ -628,6 +657,7 @@
|
||||
laser = 10
|
||||
energy = 10
|
||||
bio = 50
|
||||
fire = -100
|
||||
|
||||
/obj/item/clothing/head/helmet/changeling_hivehead/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -796,6 +796,9 @@
|
||||
if(leg_clothes)
|
||||
burning_items |= leg_clothes
|
||||
|
||||
for(var/obj/item/burnable_item in held_items)
|
||||
burning_items |= burnable_item
|
||||
|
||||
for(var/obj/item/burning in burning_items)
|
||||
burning.fire_act((stacks * 25 * seconds_per_tick)) //damage taken is reduced to 2% of this value by fire_act()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user