mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-01-04 14:33:10 +00:00
This reverts commit 27c40bdaf6.
This commit is contained in:
@@ -23,9 +23,12 @@
|
||||
/mob/living/carbon/proc/breathe(var/volume_needed = BREATH_VOLUME)
|
||||
if(species && (species.flags & NO_BREATHE))
|
||||
return
|
||||
if(HAS_TRAIT(src, TRAIT_PRESSURE_IMMUNITY))
|
||||
var/datum/changeling/changeling = get_antag_datum(MODE_CHANGELING)
|
||||
if(changeling?.space_adapted)
|
||||
return
|
||||
|
||||
if(changeling?.no_breathing)
|
||||
return
|
||||
|
||||
volume_needed *= (species?.breath_vol_mul || 1)
|
||||
|
||||
var/datum/gas_mixture/breath = null
|
||||
|
||||
@@ -1485,9 +1485,6 @@
|
||||
|
||||
species.set_default_tail(src)
|
||||
|
||||
if(species.psi_deaf || HAS_FLAG(species.flags, IS_MECHANICAL) || HAS_FLAG(species.flags, NO_SCAN))
|
||||
ADD_TRAIT(src, TRAIT_PSIONICALLY_DEAF, INNATE_TRAIT)
|
||||
|
||||
if(client)
|
||||
client.init_verbs()
|
||||
|
||||
|
||||
@@ -185,7 +185,7 @@
|
||||
|
||||
return O
|
||||
|
||||
/mob/living/carbon/human/proc/awaken_psi_basic(var/source)
|
||||
/mob/living/carbon/human/proc/awaken_psi_basic(var/source, var/allow_latency = TRUE)
|
||||
var/static/list/psi_operancy_messages = list(
|
||||
"There's something in your skull!",
|
||||
"Something is eating your thoughts!",
|
||||
@@ -197,10 +197,13 @@
|
||||
)
|
||||
to_chat(src, SPAN_DANGER("An indescribable, brain-tearing sound hisses from [source], and you collapse in a seizure!"))
|
||||
seizure()
|
||||
custom_pain(SPAN_DANGER(FONT_LARGE("[pick(psi_operancy_messages)]")), 25)
|
||||
set_psi_rank(PSI_RANK_HARMONIOUS)
|
||||
sleep(30)
|
||||
addtimer(CALLBACK(psi, TYPE_PROC_REF(/datum/psi_complexus, check_psionic_trigger), 100, source, TRUE), 4.5 SECONDS)
|
||||
var/new_latencies = rand(2,4)
|
||||
var/list/faculties = list(PSI_COERCION, PSI_REDACTION, PSI_ENERGISTICS, PSI_PSYCHOKINESIS)
|
||||
for(var/i = 1 to new_latencies)
|
||||
custom_pain(SPAN_DANGER("<font size = 3>[pick(psi_operancy_messages)]</font>"), 25)
|
||||
set_psi_rank(pick_n_take(faculties), allow_latency ? PSI_RANK_LATENT : PSI_RANK_OPERANT) // if set to latent, it spikes anywhere from OPERANT to PARAMOUNT
|
||||
sleep(30)
|
||||
addtimer(CALLBACK(psi, TYPE_PROC_REF(/datum/psi_complexus, check_latency_trigger), 100, source, TRUE), 4.5 SECONDS)
|
||||
|
||||
/mob/living/carbon/human/get_resist_power()
|
||||
return species.resist_mod
|
||||
@@ -346,7 +349,8 @@
|
||||
/mob/living/carbon/human/proc/pressure_resistant()
|
||||
if(HAS_FLAG(mutations, COLD_RESISTANCE))
|
||||
return TRUE
|
||||
if(HAS_TRAIT(src, TRAIT_PRESSURE_IMMUNITY))
|
||||
var/datum/changeling/changeling = get_antag_datum(MODE_CHANGELING)
|
||||
if(changeling?.space_adapted)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -414,7 +418,7 @@
|
||||
|
||||
/mob/living/carbon/human/proc/get_tail_accessory()
|
||||
var/obj/item/organ/external/groin/G = organs_by_name[BP_GROIN]
|
||||
if(!istype(G))
|
||||
if(!G)
|
||||
return
|
||||
if(!G.tail_storage)
|
||||
return
|
||||
|
||||
@@ -239,16 +239,14 @@
|
||||
|
||||
|
||||
// Simple mobs cannot use Skrellepathy
|
||||
/mob/proc/has_psionics()
|
||||
/mob/proc/can_commune()
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/human/has_psionics()
|
||||
if(HAS_TRAIT(src, TRAIT_PSIONICALLY_DEAF))
|
||||
return FALSE
|
||||
/mob/living/carbon/human/can_commune()
|
||||
if(psi)
|
||||
return TRUE
|
||||
else
|
||||
return species ? species.has_psionics() : FALSE
|
||||
return species ? species.can_commune() : FALSE
|
||||
|
||||
/mob/living/carbon/human/proc/commune()
|
||||
set category = "Abilities"
|
||||
@@ -324,14 +322,14 @@
|
||||
to_chat(M,"<span class='notice'>[src] telepathically says to [target]:</span> [text]")
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if (target.has_psionics())
|
||||
if (target.can_commune())
|
||||
to_chat(H,"<span class='psychic'>You instinctively sense [src] sending their thoughts into your mind, hearing:</span> [text]")
|
||||
else if(prob(25) && (target.mind && target.mind.assigned_role=="Chaplain"))
|
||||
to_chat(H,"<span class='changeling'>You sense [src]'s thoughts enter your mind, whispering quietly:</span> [text]")
|
||||
else
|
||||
to_chat(H,"<span class='alium'>You feel pressure behind your eyes as alien thoughts enter your mind:</span> [text]")
|
||||
if(istype(H))
|
||||
if (target.has_psionics())
|
||||
if (target.can_commune())
|
||||
return
|
||||
if(prob(10) && !(H.species.flags & NO_BLOOD))
|
||||
to_chat(H,"<span class='warning'>Your nose begins to bleed...</span>")
|
||||
|
||||
@@ -295,13 +295,6 @@
|
||||
|
||||
var/use_alt_hair_layer = FALSE
|
||||
|
||||
/// Species psionics. FALSE for no psionics. Otherwise, set to the PSI_RANK define you want.
|
||||
var/has_psionics = FALSE
|
||||
/// Number of psi points in character creation.
|
||||
var/character_creation_psi_points = 0
|
||||
/// Is this species psionically deaf?
|
||||
var/psi_deaf = FALSE
|
||||
|
||||
/datum/species/proc/get_eyes(var/mob/living/carbon/human/H)
|
||||
return
|
||||
|
||||
@@ -477,8 +470,6 @@
|
||||
if(!H.client || !H.client.prefs || !H.client.prefs.gender)
|
||||
H.gender = pick(default_genders)
|
||||
H.pronouns = H.gender
|
||||
if(has_psionics)
|
||||
H.set_psi_rank(has_psionics)
|
||||
|
||||
/datum/species/proc/handle_death(var/mob/living/carbon/human/H, var/gibbed = 0) //Handles any species-specific death events (such as dionaea nymph spawns).
|
||||
return
|
||||
@@ -748,8 +739,11 @@
|
||||
/datum/species/proc/get_digestion_product()
|
||||
return /singleton/reagent/nutriment
|
||||
|
||||
/datum/species/proc/has_psionics()
|
||||
return has_psionics
|
||||
/datum/species/proc/can_commune()
|
||||
return FALSE
|
||||
|
||||
/datum/species/proc/has_psi_potential()
|
||||
return TRUE
|
||||
|
||||
/datum/species/proc/handle_despawn()
|
||||
return
|
||||
|
||||
@@ -129,7 +129,6 @@
|
||||
)
|
||||
|
||||
alterable_internal_organs = list()
|
||||
psi_deaf = TRUE
|
||||
|
||||
/datum/species/diona/can_understand(var/mob/other)
|
||||
var/mob/living/carbon/alien/diona/D = other
|
||||
@@ -185,6 +184,9 @@
|
||||
if(SB)
|
||||
SB.handle_item_insertion(new /obj/item/device/flashlight/survival(get_turf(H)), TRUE)
|
||||
|
||||
/datum/species/diona/has_psi_potential()
|
||||
return FALSE
|
||||
|
||||
/datum/species/diona/is_naturally_insulated()
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -98,8 +98,6 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
|
||||
|
||||
hud_type = /datum/hud_data/construct
|
||||
|
||||
psi_deaf = TRUE
|
||||
|
||||
var/turn_into_materials = TRUE //the golem will turn into materials upon its death
|
||||
var/golem_designation = "Coal" //used in the creation of the name
|
||||
|
||||
@@ -126,6 +124,9 @@ var/global/list/golem_types = list(SPECIES_GOLEM_COAL,
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/species/golem/has_psi_potential()
|
||||
return FALSE
|
||||
|
||||
/datum/species/golem/iron
|
||||
name = SPECIES_GOLEM_IRON
|
||||
name_plural = "iron golems"
|
||||
|
||||
@@ -143,7 +143,6 @@
|
||||
var/move_charge_factor = 1
|
||||
|
||||
use_alt_hair_layer = TRUE
|
||||
psi_deaf = TRUE
|
||||
|
||||
/datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
@@ -374,6 +373,9 @@
|
||||
. = ..()
|
||||
check_tag(H, H.client)
|
||||
|
||||
/datum/species/machine/has_psi_potential()
|
||||
return FALSE
|
||||
|
||||
/datum/species/machine/handle_death_check(var/mob/living/carbon/human/H)
|
||||
if(H.get_total_health() <= config.health_threshold_dead)
|
||||
return TRUE
|
||||
|
||||
@@ -107,9 +107,6 @@
|
||||
|
||||
alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_LIVER, BP_KIDNEYS, BP_STOMACH)
|
||||
|
||||
has_psionics = PSI_RANK_SENSITIVE
|
||||
character_creation_psi_points = 4
|
||||
|
||||
/datum/species/skrell/handle_trail(var/mob/living/carbon/human/H, var/turf/T)
|
||||
var/list/trail_info = ..()
|
||||
if(!length(trail_info) && !H.shoes)
|
||||
@@ -120,6 +117,10 @@
|
||||
|
||||
return trail_info
|
||||
|
||||
/datum/species/skrell/handle_post_spawn(mob/living/carbon/human/H)
|
||||
..()
|
||||
H.set_psi_rank(PSI_COERCION, PSI_RANK_OPERANT)
|
||||
|
||||
/datum/species/skrell/handle_strip(var/mob/user, var/mob/living/carbon/human/H, var/action)
|
||||
switch(action)
|
||||
if("headtail")
|
||||
@@ -141,3 +142,6 @@
|
||||
|
||||
/datum/species/skrell/can_breathe_water()
|
||||
return TRUE
|
||||
|
||||
/datum/species/skrell/can_commune()
|
||||
return TRUE
|
||||
|
||||
@@ -141,7 +141,6 @@
|
||||
|
||||
|
||||
alterable_internal_organs = list(BP_HEART, BP_EYES, BP_LUNGS, BP_STOMACH, BP_APPENDIX)
|
||||
psi_deaf = TRUE
|
||||
|
||||
/datum/species/bug/before_equip(var/mob/living/carbon/human/H)
|
||||
. = ..()
|
||||
@@ -159,6 +158,9 @@
|
||||
H.gender = NEUTER
|
||||
return ..()
|
||||
|
||||
/datum/species/bug/has_psi_potential()
|
||||
return FALSE
|
||||
|
||||
/datum/species/bug/is_naturally_insulated()
|
||||
return TRUE
|
||||
|
||||
@@ -166,4 +168,3 @@
|
||||
if(I.w_class <= ITEMSIZE_SMALL)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -18,10 +18,6 @@
|
||||
var/natural_armor = GetComponent(/datum/component/armor)
|
||||
if(natural_armor)
|
||||
. += natural_armor
|
||||
if(psi)
|
||||
var/armor = psi.GetComponent(/datum/component/armor/psionic)
|
||||
if(armor)
|
||||
. += armor
|
||||
|
||||
/mob/living/bullet_act(var/obj/item/projectile/P, var/def_zone, var/used_weapon = null)
|
||||
|
||||
@@ -251,7 +247,7 @@
|
||||
|
||||
// End BS12 momentum-transfer code.
|
||||
|
||||
/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message, var/armor_penetration, var/attack_flags, var/damage_type = DAMAGE_BRUTE)
|
||||
/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message, var/armor_penetration, var/attack_flags)
|
||||
if(!damage)
|
||||
return
|
||||
|
||||
@@ -261,7 +257,7 @@
|
||||
src.visible_message("<span class='danger'>[user] has [attack_message] [src]!</span>")
|
||||
user.do_attack_animation(src)
|
||||
|
||||
apply_damage(damage, damage_type, user.zone_sel?.selecting, armor_pen = armor_penetration, damage_flags = attack_flags)
|
||||
apply_damage(damage, DAMAGE_BRUTE, user.zone_sel?.selecting, armor_pen = armor_penetration, damage_flags = attack_flags)
|
||||
updatehealth()
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -453,8 +453,8 @@
|
||||
if(chemicals < 150)
|
||||
to_chat(src, SPAN_WARNING("You don't have enough chemicals!"))
|
||||
return
|
||||
if(host.species.psi_deaf)
|
||||
to_chat(src, SPAN_WARNING("\The [host] lacks a zona bovinae to psionically enlighten! How disturbing..."))
|
||||
if(!host.species.has_psi_potential())
|
||||
to_chat(src, SPAN_WARNING("\The [host] lacks a zona bovinidae to psionically enlighten! How disturbing..."))
|
||||
if(host.psi)
|
||||
to_chat(src, SPAN_WARNING("Your host is already psionically active!"))
|
||||
return
|
||||
@@ -481,14 +481,13 @@
|
||||
return
|
||||
|
||||
to_chat(src, SPAN_NOTICE("You succeed in interfacing with the host's zona bovinae, this will be a painful process for them."))
|
||||
host.awaken_psi_basic("something in your head")
|
||||
host.psi.psi_points = 3 /// You don't get a lot at the start.
|
||||
host.awaken_psi_basic("something in your head", FALSE)
|
||||
host.add_language(LANGUAGE_TCB) // if we don't have TCB, give them TCB | this allows monkey borers to RP
|
||||
|
||||
/mob/living/simple_animal/borer/verb/advance_psionics()
|
||||
/mob/living/simple_animal/borer/verb/advance_faculty()
|
||||
set category = "Abilities"
|
||||
set name = "Advance Psionics (75)"
|
||||
set desc = "Advance your host's psionic capability by one step."
|
||||
set name = "Advance Psionic Faculty (75)"
|
||||
set desc = "Advance one of your host's psionic faculties by one step."
|
||||
|
||||
if(!host)
|
||||
to_chat(src, SPAN_NOTICE("You are not inside a host body."))
|
||||
@@ -508,8 +507,18 @@
|
||||
to_chat(src, SPAN_WARNING("\The [host]'s mind is shielded against your powers."))
|
||||
return
|
||||
|
||||
var/upgrade_time = 10 SECONDS
|
||||
if(!start_ability(host, upgrade_time))
|
||||
var/list/faculties = list(capitalize(PSI_COERCION), capitalize(PSI_REDACTION), capitalize(PSI_ENERGISTICS), capitalize(PSI_PSYCHOKINESIS))
|
||||
var/selected_faculty = input(src, "Choose a faculty to upgrade.") as null|anything in faculties
|
||||
if(!selected_faculty)
|
||||
return
|
||||
selected_faculty = lowertext(selected_faculty)
|
||||
var/max_rank = islesserform(host) ? PSI_RANK_OPERANT : PSI_RANK_MASTER
|
||||
if(host.psi.get_rank(selected_faculty) >= max_rank)
|
||||
to_chat(src, SPAN_NOTICE("This faculty has already been pushed to the max potential you can achieve!"))
|
||||
return
|
||||
|
||||
var/faculty_time = 10 SECONDS
|
||||
if(!start_ability(host, faculty_time))
|
||||
to_chat(src, SPAN_WARNING("You're busy doing something else, complete that task first."))
|
||||
return
|
||||
|
||||
@@ -517,16 +526,19 @@
|
||||
to_chat(src, SPAN_NOTICE("You probe your tendrils deep within your host's zona bovinae, seeking to upgrade their abilities."))
|
||||
to_chat(host, SPAN_WARNING("You feel a burning, tingling sensation at the back of your head..."))
|
||||
|
||||
addtimer(CALLBACK(src, PROC_REF(upgrade_rank)), upgrade_time)
|
||||
addtimer(CALLBACK(src, PROC_REF(faculty_upgrade), selected_faculty), faculty_time)
|
||||
|
||||
/mob/living/simple_animal/borer/proc/upgrade_rank()
|
||||
/mob/living/simple_animal/borer/proc/faculty_upgrade(var/selected_faculty)
|
||||
if(!host)
|
||||
return
|
||||
|
||||
host.psi.psi_points++
|
||||
to_chat(src, SPAN_NOTICE("You successfully manage to expand your living host's control over their Zona Bovinae. They know have an extra psionic point to spend."))
|
||||
var/host_psi_rank = host.psi.get_rank(selected_faculty)
|
||||
var/next_rank = host_psi_rank > PSI_RANK_BLUNT ? host_psi_rank + 1 : PSI_RANK_OPERANT
|
||||
host.psi.set_rank(selected_faculty, next_rank)
|
||||
host.psi.update(TRUE)
|
||||
to_chat(src, SPAN_NOTICE("You successfully manage to upgrade your host to [psychic_ranks_to_strings[host.psi.ranks[selected_faculty]]] [selected_faculty]."))
|
||||
to_chat(host, SPAN_GOOD("A breeze of fresh air washes over your mind, you feel powerful!"))
|
||||
to_chat(host, SPAN_NOTICE("Your control over the Nlom has expanded. You now have an extra psionic point to spend in the Point Shop."))
|
||||
to_chat(host, SPAN_NOTICE("You have been psionically enlightened. You are now a [psychic_ranks_to_strings[host.psi.ranks[selected_faculty]]] in the [selected_faculty] faculty."))
|
||||
|
||||
/mob/living/simple_animal/borer/verb/host_health_scan()
|
||||
set category = "Abilities"
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
var/atom/target
|
||||
if(isliving(target_mob))
|
||||
var/mob/living/L = target_mob
|
||||
on_attack_mob(L, L.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext, armor_penetration, attack_flags, damage_type))
|
||||
on_attack_mob(L, L.attack_generic(src, rand(melee_damage_lower, melee_damage_upper), attacktext, armor_penetration, attack_flags))
|
||||
target = L
|
||||
else if(istype(target_mob, /obj/machinery/bot))
|
||||
var/obj/machinery/bot/B = target_mob
|
||||
|
||||
@@ -14,9 +14,6 @@
|
||||
mob_swap_flags = MONKEY|SLIME|SIMPLE_ANIMAL
|
||||
mob_push_flags = MONKEY|SLIME|SIMPLE_ANIMAL
|
||||
|
||||
/// The type of damage this mob deals.
|
||||
var/damage_type = DAMAGE_BRUTE
|
||||
|
||||
var/show_stat_health = 1 //does the percentage health show in the stat panel for the mob
|
||||
|
||||
var/icon_living = ""
|
||||
@@ -541,7 +538,7 @@
|
||||
simple_harm_attack(user)
|
||||
|
||||
/mob/living/simple_animal/proc/simple_harm_attack(var/mob/living/user)
|
||||
apply_damage(harm_intent_damage, damage_type, used_weapon = "Attack by [user.name]")
|
||||
apply_damage(harm_intent_damage, DAMAGE_BRUTE, used_weapon = "Attack by [user.name]")
|
||||
user.visible_message(SPAN_WARNING("<b>\The [user]</b> [response_harm] \the [src]!"), SPAN_WARNING("You [response_harm] \the [src]!"))
|
||||
user.do_attack_animation(src, FIST_ATTACK_ANIMATION)
|
||||
poke(TRUE)
|
||||
|
||||
@@ -348,6 +348,11 @@
|
||||
if(!affecting)
|
||||
return
|
||||
|
||||
if(ishuman(user) && affecting == M)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.check_psi_grab(src))
|
||||
return
|
||||
|
||||
if(world.time < (last_action + 20))
|
||||
return
|
||||
|
||||
|
||||
Reference in New Issue
Block a user