mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-20 22:54:46 +00:00
## About The Pull Request Adds the Fundamentally Evil quirk. The quirk does nothing in of itself. If an Empath examines you, they will be shaken up by the fact that you are totally evil. Mindreaders can literally see that you're evil. If they're ALSO evil, it gives a gives a unique message. Honorbound chaplains can freely attack you without first declaring you evil. You are already evil. There is no outward tells for this fact, but if the chaplain pays attention to the medical records, you might have a problem on your hands. You are significantly harmed by holy water and holy explosions. So don't drink holy water if you can help it. ## Why It's Good For The Game I just think it'd be funny to have some crew, for whatever reason, be fully committed to being evil for no reason other than it is funny to bother empaths. I want a chaplain to come to the realization that I'm evil and see what happens. ## Changelog 🆑 add: Fundamentally Evil quirk. You might act normal, but you know deep down that you totally don't give a shit about anyone but yourself. Empaths better watch out. /🆑 --------- Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com> Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com> # Conflicts: # code/controllers/subsystem/processing/quirks.dm
127 lines
4.9 KiB
Plaintext
127 lines
4.9 KiB
Plaintext
/datum/mutation/human/antenna
|
|
name = "Antenna"
|
|
desc = "The affected person sprouts an antenna. This is known to allow them to access common radio channels passively."
|
|
quality = POSITIVE
|
|
text_gain_indication = span_notice("You feel an antenna sprout from your forehead.")
|
|
text_lose_indication = span_notice("Your antenna shrinks back down.")
|
|
instability = POSITIVE_INSTABILITY_MINOR
|
|
difficulty = 8
|
|
var/datum/weakref/radio_weakref
|
|
|
|
/obj/item/implant/radio/antenna
|
|
name = "internal antenna organ"
|
|
desc = "The internal organ part of the antenna. Science has not yet given it a good name."
|
|
icon = 'icons/obj/devices/voice.dmi'//maybe make a unique sprite later. not important
|
|
icon_state = "walkietalkie"
|
|
|
|
/obj/item/implant/radio/antenna/Initialize(mapload)
|
|
. = ..()
|
|
radio.name = "internal antenna"
|
|
|
|
/datum/mutation/human/antenna/on_acquiring(mob/living/carbon/human/owner)
|
|
if(..())
|
|
return
|
|
var/obj/item/implant/radio/antenna/linked_radio = new(owner)
|
|
linked_radio.implant(owner, null, TRUE, TRUE)
|
|
radio_weakref = WEAKREF(linked_radio)
|
|
|
|
/datum/mutation/human/antenna/on_losing(mob/living/carbon/human/owner)
|
|
if(..())
|
|
return
|
|
var/obj/item/implant/radio/antenna/linked_radio = radio_weakref.resolve()
|
|
if(linked_radio)
|
|
QDEL_NULL(linked_radio)
|
|
|
|
/datum/mutation/human/antenna/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
|
..()
|
|
if(!(type in visual_indicators))
|
|
visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1))//-MUTATIONS_LAYER+1
|
|
|
|
/datum/mutation/human/antenna/get_visual_indicator()
|
|
return visual_indicators[type][1]
|
|
|
|
/datum/mutation/human/mindreader
|
|
name = "Mind Reader"
|
|
desc = "The affected person can look into the recent memories of others."
|
|
quality = POSITIVE
|
|
text_gain_indication = span_notice("You hear distant voices at the corners of your mind.")
|
|
text_lose_indication = span_notice("The distant voices fade.")
|
|
power_path = /datum/action/cooldown/spell/pointed/mindread
|
|
instability = POSITIVE_INSTABILITY_MINOR
|
|
difficulty = 8
|
|
locked = TRUE
|
|
|
|
/datum/action/cooldown/spell/pointed/mindread
|
|
name = "Mindread"
|
|
desc = "Read the target's mind."
|
|
button_icon_state = "mindread"
|
|
school = SCHOOL_PSYCHIC
|
|
cooldown_time = 5 SECONDS
|
|
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
|
|
antimagic_flags = MAGIC_RESISTANCE_MIND
|
|
|
|
ranged_mousepointer = 'icons/effects/mouse_pointers/mindswap_target.dmi'
|
|
|
|
/datum/action/cooldown/spell/pointed/mindread/Grant(mob/grant_to)
|
|
. = ..()
|
|
if (!owner)
|
|
return
|
|
ADD_TRAIT(grant_to, TRAIT_MIND_READER, GENETIC_MUTATION)
|
|
|
|
/datum/action/cooldown/spell/pointed/mindread/Remove(mob/remove_from)
|
|
. = ..()
|
|
REMOVE_TRAIT(remove_from, TRAIT_MIND_READER, GENETIC_MUTATION)
|
|
|
|
/datum/action/cooldown/spell/pointed/mindread/is_valid_target(atom/cast_on)
|
|
if(!isliving(cast_on))
|
|
return FALSE
|
|
var/mob/living/living_cast_on = cast_on
|
|
if(!living_cast_on.mind)
|
|
to_chat(owner, span_warning("[cast_on] has no mind to read!"))
|
|
return FALSE
|
|
if(living_cast_on.stat == DEAD)
|
|
to_chat(owner, span_warning("[cast_on] is dead!"))
|
|
return FALSE
|
|
|
|
return TRUE
|
|
|
|
/datum/action/cooldown/spell/pointed/mindread/cast(mob/living/cast_on)
|
|
. = ..()
|
|
if(cast_on.can_block_magic(MAGIC_RESISTANCE_MIND, charge_cost = 0))
|
|
to_chat(owner, span_warning("As you reach into [cast_on]'s mind, \
|
|
you are stopped by a mental blockage. It seems you've been foiled."))
|
|
return
|
|
|
|
if(cast_on == owner)
|
|
to_chat(owner, span_warning("You plunge into your mind... Yep, it's your mind."))
|
|
return
|
|
|
|
if(HAS_TRAIT(cast_on, TRAIT_EVIL))
|
|
to_chat(owner, span_warning("As you reach into [cast_on]'s mind, \
|
|
you feel the overwhelming emptiness within. A truly evil being. \
|
|
[HAS_TRAIT(owner, TRAIT_EVIL) ? "It's nice to find someone who is like-minded." : "What is wrong with this person?"]"))
|
|
|
|
to_chat(owner, span_boldnotice("You plunge into [cast_on]'s mind..."))
|
|
if(prob(20))
|
|
// chance to alert the read-ee
|
|
to_chat(cast_on, span_danger("You feel something foreign enter your mind."))
|
|
|
|
var/list/recent_speech = cast_on.copy_recent_speech(copy_amount = 3, line_chance = 50)
|
|
if(length(recent_speech))
|
|
to_chat(owner, span_boldnotice("You catch some drifting memories of their past conversations..."))
|
|
for(var/spoken_memory in recent_speech)
|
|
to_chat(owner, span_notice("[spoken_memory]"))
|
|
|
|
if(iscarbon(cast_on))
|
|
var/mob/living/carbon/carbon_cast_on = cast_on
|
|
to_chat(owner, span_boldnotice("You find that their intent is to [carbon_cast_on.combat_mode ? "harm" : "help"]..."))
|
|
to_chat(owner, span_boldnotice("You uncover that [carbon_cast_on.p_their()] true identity is [carbon_cast_on.mind.name]."))
|
|
|
|
/datum/mutation/human/mindreader/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
|
..()
|
|
if(!(type in visual_indicators))
|
|
visual_indicators[type] = list(mutable_appearance('icons/mob/effects/genetics.dmi', "antenna", -FRONT_MUTATIONS_LAYER+1))
|
|
|
|
/datum/mutation/human/mindreader/get_visual_indicator()
|
|
return visual_indicators[type][1]
|