mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
Mindflayers v0.9, Playable Edition! (#26596)
* adds antaghud icon * TGUI bundle build dont push changes i didnt stage challenge 2025 (IMPOSSIBLE) * Adds organ repair passive * Description fix * Runs prettier * Fixes desc 2 * Fix revert * Remove vamp text * Fix some CI + Partial refactor * Fixes CI * Fixes gamemodes I messed with * Moves these procs over * Description fix again * Add back limit requiring drainees to have ckeys * Adds terminator icon * Update code/datums/status_effects/buffs.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/modules/surgery/organs/augments_internal.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/powers/flayer_stealth_powers.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * More lewv review * Clamps the EMP severity * Fixes "surveilance" typos * The TODO is gone and can't hurt me anymore * Update code/modules/antagonists/mind_flayer/flayer_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/game/objects/items/weapons/pneumaticCannon.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/game/objects/items/weapons/stunbaton.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * More lewc reviews * Update code/modules/antagonists/_common/antag_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/_common/antag_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/flayer_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/flayer_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/flayer_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/flayer_datum.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/flayer_power.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Fixes some camera bug issues + lewc reviews * Update code/modules/antagonists/mind_flayer/powers/flayer_passives.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/flayer_power.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Updates a comment and fixes whitespace * Autodocs flayerprod * Update code/modules/antagonists/mind_flayer/powers/flayer_mobility_powers.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * qdel things we dont need anymore + typing an argument of add_abillity * Remove debug log * Update code/modules/antagonists/mind_flayer/flayer_power.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * Slightly buffs, and fixes GC issues of tether * I no longer feel i am a mindflayer * Fixes formatting of greeting * Better greeting * Worlds shittiest sprite * Don't need this TODO anymore * Fixes double description * Changes the wording on the borg laws * and bundle too * The cannon uses shrapnel now * Initial style changes * Ratios for brain damage * Adds a chemical to test for flayerism * Fixes the brain damage ratios * Abilities are purchasable again * Updates TGUI properly * im sorry linter * Steam smoke * Hi bundle * Re-abstracts this proc post syndi orgs * Fixes gamemode logic post cling round removal * I WONT FORGET IT THIS TIME * Fix name of steam ability * I'm a fool * Fixes processed passives + removes debug message * Fixes updating abilities inside UI * Better description for quicksilver form * First part lewc review * Remove debug thingy * Apply suggestions from code review Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Fixes defines + GCs weapon spells * We don't need this * Eyes GC properly * Update code/modules/antagonists/mind_flayer/powers/flayer_mobility_powers.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * adds better logging to the assimilate * Adds parenthesis Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> * TGUI Bundle Rebuild * Fixes and Reworks TGUI * Cleaner JS and Fixes * adds anti-snitching clause to borg laws * changes the span for the borg messages * No holoparasites * Puts baton silence in line with glare * Fixes total_swarms_gathered * Nuke old trait * Gun no longer not stuck * Rejuv clears delayed knockdown * Some weapon ability fixes * Makes radio enable timers not counterintuitive * Fixes beepsky runtimes * Makes naming more consistent * Adds one-click-antag * Adds the mind flayer toggle (doesn't technically work) * Adds flayers to check_antagonist * Gives IDs to the status effects * Also this one * Makes retracting work again if it's in your offhand * Fixes pacification tech levels * Grapple is a weapon ability now, nullifcation retracts implants * Fixed descriptions * Adds some pizzaz to torque enhancer * This actually needs to be like this * Moves a helper proc over to a helper proc file * Extra admin visibility * Nukes the wacky flayer mob * Makes silicon administrative access more sane * Terminator form better description * Makes rejuv set stamina to 0 * Various price increases * AAAAAAAAAAAAA * Better feedback + logging on cyborg subversion * Swarm purchase display (temp fix) * Makes mindflayer sounds more silent * UI improvements * Various mindflayer fixes * Typo * More fixes * Fixes innates from being stupid * Forgot to add this check earlier * Oh this is how you add things to the protolathe * Changes some description and upgrade messages * Allows you to drain people beyond your limit * Fixes some weapon upgrade issues * Fix CI * Fixes some draining issues * More UI Tweaks and QoL * Fixes most of the issues * text * Fixes * Adds a radio jamming option to intruder * Gives obfusciation to jammer ability * Small passive cleanup * Fixes Search and Adds Ability Stages to UI * Adds freebie abilities * Restructuring chain and adding blackbox * Tgui polish * Small fix for traceroute * Fixes one click antag * Increases EMP resistance cost * Changes the pneumatic cannon into a shotgun * Slightly lower static * Fixed innate building rendering in upgrades * Fixes icon and description * Consistency * Punctuation fix. * Quick reboot + terminator form synergy * Adds safety deleting * Fix level for torque * Fixes a bad bug * Update code/game/gamemodes/objective.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Aaaaaaaaaaa * Makes torque a martial art and some martial arts safeties * Replaces vortex arm with barrier * Fix paths * Adds torque knockdown * Part 1 lewc review * HIIIII SQUIDWARD I'M IN YOUR BRANCH NOW * Removes flak cannon * Flayer respects mindshielding now on vamp+cling * Fixes EMP resist * More fixes * DGL review * Contra review * Clean up weapon powers * Various tweaks * Borg hand slight improvements * Parent call needs to be after this * Fixes stuff * Adds a new proc that is called when a spell is purchased * NEW SPRITES WOOOO * Traceroute update * Slightly lower traceroute cost * Formatting * Oops * Wow this could've been bad * Overclock small buff * Reduces cost of 1st level EMP immunity * Lewc review * TGUI Bundle Rebuild * Fix barricades * Lewc review * Okay FINE qwerty I'll change this * Traceroute thingy * I am an idiot * First part * Lewc review * Forgor this one * Last bits * Update code/game/objects/items/control_wand.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/modules/antagonists/mind_flayer/powers/flayer_mobility_powers.dm Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Null * Static-ness * Update code/game/gamemodes/changeling/traitor_chan.dm Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Update code/__DEFINES/mindflayer_defines.dm Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> * Last bits --------- Signed-off-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: BiancaWilkson <42818125+BiancaWilkson@users.noreply.github.com> Co-authored-by: DGamerL <daan.lyklema@gmail.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: Qwertytoforty <52090703+Qwertytoforty@users.noreply.github.com>
This commit is contained in:
co-authored by
Luc
DGamerL
DGamerL
Burzah
Qwertytoforty
parent
c4521dc955
commit
036b8e0182
@@ -944,6 +944,10 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
|
||||
|
||||
/mob/living/carbon/emp_act(severity)
|
||||
..()
|
||||
if(HAS_TRAIT(src, TRAIT_EMP_IMMUNE))
|
||||
return
|
||||
if(HAS_TRAIT(src, TRAIT_EMP_RESIST))
|
||||
severity = clamp(severity, EMP_LIGHT, EMP_WEAKENED)
|
||||
for(var/X in internal_organs)
|
||||
var/obj/item/organ/internal/O = X
|
||||
O.emp_act(severity)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/mob/living/carbon/update_stat(reason = "none given")
|
||||
if(status_flags & GODMODE)
|
||||
return
|
||||
if(stat != DEAD)
|
||||
|
||||
if(stat != DEAD && !(status_flags & TERMINATOR_FORM))
|
||||
if(health <= HEALTH_THRESHOLD_DEAD && check_death_method())
|
||||
death()
|
||||
create_debug_log("died of damage, trigger reason: [reason]")
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
if(dna.species && amount > 0)
|
||||
if(use_brain_mod)
|
||||
amount *= dna.species.brain_mod
|
||||
sponge.damage = clamp(sponge.damage + amount, 0, 120)
|
||||
if(sponge.damage >= 120)
|
||||
sponge.damage = clamp(sponge.damage + amount, 0, sponge.max_damage)
|
||||
if(sponge.damage >= sponge.max_damage)
|
||||
death()
|
||||
if(updating)
|
||||
update_stat("adjustBrainLoss")
|
||||
@@ -44,7 +44,7 @@
|
||||
if(use_brain_mod)
|
||||
amount *= dna.species.brain_mod
|
||||
sponge.damage = clamp(amount, 0, 120)
|
||||
if(sponge.damage >= 120)
|
||||
if(sponge.damage >= sponge.max_damage)
|
||||
death()
|
||||
if(updating)
|
||||
update_stat("setBrainLoss")
|
||||
|
||||
@@ -287,6 +287,10 @@ emp_act
|
||||
|
||||
/mob/living/carbon/human/emp_act(severity)
|
||||
..()
|
||||
if(HAS_TRAIT(src, TRAIT_EMP_IMMUNE))
|
||||
return
|
||||
if(HAS_TRAIT(src, TRAIT_EMP_RESIST))
|
||||
severity = clamp(severity, EMP_LIGHT, EMP_WEAKENED)
|
||||
for(var/X in bodyparts)
|
||||
var/obj/item/organ/external/L = X
|
||||
L.emp_act(severity)
|
||||
|
||||
@@ -42,6 +42,12 @@
|
||||
if(life_tick == 1)
|
||||
regenerate_icons() // Make sure the inventory updates
|
||||
|
||||
var/datum/antagonist/mindflayer/F = mind?.has_antag_datum(/datum/antagonist/mindflayer)
|
||||
if(F)
|
||||
F.handle_mindflayer()
|
||||
if(life_tick == 1)
|
||||
regenerate_icons()
|
||||
|
||||
if(player_ghosted > 0 && stat == CONSCIOUS && job && !restrained())
|
||||
handle_ghosted()
|
||||
if(player_logged > 0 && stat != DEAD && job)
|
||||
@@ -605,17 +611,22 @@
|
||||
if(status_flags & GODMODE)
|
||||
return 0
|
||||
|
||||
if(status_flags & TERMINATOR_FORM)
|
||||
return FALSE
|
||||
|
||||
var/guaranteed_death_threshold = health + (getOxyLoss() * 0.5) - (getFireLoss() * 0.67) - (getBruteLoss() * 0.67)
|
||||
|
||||
if(getBrainLoss() >= 120 || (guaranteed_death_threshold) <= -500)
|
||||
var/obj/item/organ/internal/brain = get_int_organ(/obj/item/organ/internal/brain)
|
||||
if(brain?.damage >= brain.max_damage || (guaranteed_death_threshold) <= -500)
|
||||
death()
|
||||
return
|
||||
|
||||
if(getBrainLoss() >= 100) // braindeath
|
||||
if(check_brain_threshold(BRAIN_DAMAGE_RATIO_CRITICAL)) // braindeath
|
||||
dna.species.handle_brain_death(src)
|
||||
|
||||
if(!check_death_method())
|
||||
if(health <= HEALTH_THRESHOLD_DEAD)
|
||||
// No need to get the fraction of the max brain damage here, because for it to matter, they'd probably be dead already
|
||||
var/deathchance = min(99, ((getBrainLoss() / 5) + (health + (getOxyLoss() / -2))) * -0.1)
|
||||
if(prob(deathchance))
|
||||
death()
|
||||
|
||||
@@ -2053,3 +2053,10 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
|
||||
. = ALPHA_VISIBLE
|
||||
for(var/source in alpha_sources)
|
||||
. = min(., alpha_sources[source])
|
||||
|
||||
/*
|
||||
* Returns wether or not the brain is below the threshold
|
||||
*/
|
||||
/mob/living/carbon/human/proc/check_brain_threshold(threshold_level)
|
||||
var/obj/item/organ/internal/brain/brain_organ = get_int_organ(/obj/item/organ/internal/brain)
|
||||
return brain_organ.damage >= (brain_organ.max_damage * threshold_level)
|
||||
|
||||
@@ -53,9 +53,9 @@
|
||||
return has_changer
|
||||
|
||||
if(mind)
|
||||
var/datum/antagonist/changeling/cling = mind.has_antag_datum(/datum/antagonist/changeling)
|
||||
if(cling?.mimicing)
|
||||
return cling.mimicing
|
||||
var/datum/antagonist/antagonist_status = mind.has_antag_datum(/datum/antagonist)
|
||||
if(antagonist_status?.mimicking)
|
||||
return antagonist_status.mimicking
|
||||
|
||||
if(GetSpecialVoice())
|
||||
return GetSpecialVoice()
|
||||
|
||||
@@ -516,6 +516,14 @@
|
||||
return FALSE
|
||||
if(target != user && handle_harm_antag(user, target))
|
||||
return FALSE
|
||||
//Mind Flayer code
|
||||
var/datum/antagonist/mindflayer/MF = user?.mind?.has_antag_datum(/datum/antagonist/mindflayer)
|
||||
var/obj/item/organ/internal/brain/victims_brain = target.get_int_organ(/obj/item/organ/internal/brain) //In case someone's brain isn't in their head
|
||||
if(MF && !MF.harvesting && user.zone_selected == victims_brain.parent_organ && target != user)
|
||||
MF.handle_harvest(target)
|
||||
add_attack_logs(user, target, "flayerdrain")
|
||||
return
|
||||
//End Mind Flayer Code
|
||||
if(target.check_block())
|
||||
target.visible_message("<span class='warning'>[target] blocks [user]'s attack!</span>")
|
||||
return FALSE
|
||||
@@ -720,6 +728,23 @@
|
||||
attack_sound = 'sound/weapons/bite.ogg'
|
||||
sharp = TRUE
|
||||
animation_type = ATTACK_EFFECT_BITE
|
||||
/*
|
||||
* Returns a copy of the datum that called this. I know this is pretty dumb
|
||||
*/
|
||||
/datum/unarmed_attack/proc/copy_attack()
|
||||
var/datum/unarmed_attack/copy = new /datum/unarmed_attack
|
||||
copy.attack_verb = attack_verb
|
||||
copy.damage = damage
|
||||
copy.attack_sound = attack_sound
|
||||
copy.miss_sound = miss_sound
|
||||
copy.sharp = sharp
|
||||
copy.animation_type = animation_type
|
||||
return copy
|
||||
|
||||
/datum/unarmed_attack/claws/copy_attack()
|
||||
var/datum/unarmed_attack/claws/copy = ..()
|
||||
copy.has_been_sharpened = has_been_sharpened
|
||||
return copy
|
||||
|
||||
/datum/species/proc/can_equip(obj/item/I, slot, disable_warning = FALSE, mob/living/carbon/human/H)
|
||||
if(slot in no_equip)
|
||||
|
||||
@@ -115,3 +115,8 @@
|
||||
var/last_taste_time
|
||||
/// Stores a var of the last tast message we got. used so we don't spam people messages while they eat
|
||||
var/last_taste_text
|
||||
///If a creature gets to be super special and have extra range on their chat messages
|
||||
var/extra_message_range = 0
|
||||
|
||||
/// A timer that, when going off, will enable all the mob's radios again
|
||||
var/radio_enable_timer
|
||||
|
||||
@@ -237,6 +237,8 @@ GLOBAL_LIST_EMPTY(channel_to_radio_key)
|
||||
var/list/listening = list()
|
||||
var/list/listening_obj = list()
|
||||
|
||||
message_range += extra_message_range
|
||||
|
||||
if(T)
|
||||
//make sure the air can transmit speech - speaker's side
|
||||
var/datum/gas_mixture/environment = T.get_readonly_air()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
return FALSE
|
||||
|
||||
/mob/proc/death(gibbed)
|
||||
SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed)
|
||||
SEND_SIGNAL(src, COMSIG_MOB_DEATH, gibbed, src)
|
||||
return FALSE
|
||||
|
||||
/mob/proc/dust_animation()
|
||||
|
||||
Reference in New Issue
Block a user