Reworked Astral, doubled lung damage, fixed lung damage oopsie.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
/mob/living/simple_animal/astral
|
||||
name = "Astral projection"
|
||||
desc = "A soul of someone projecting their mind."
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "ghost"
|
||||
icon_living = "ghost"
|
||||
mob_biotypes = list(MOB_SPIRIT)
|
||||
attacktext = "raises the hairs on the neck of"
|
||||
response_harm = "disrupts the concentration of"
|
||||
response_disarm = "wafts"
|
||||
friendly = "touches"
|
||||
loot = null
|
||||
maxHealth = 5
|
||||
health = 5
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
obj_damage = 0
|
||||
deathmessage = "disappears as if it was never really there to begin with"
|
||||
incorporeal_move = 1
|
||||
alpha = 50
|
||||
attacktext = "touches the mind of"
|
||||
speak_emote = list("echos")
|
||||
movement_type = FLYING
|
||||
var/pseudo_death = FALSE
|
||||
|
||||
/mob/living/simple_animal/astral/death()
|
||||
icon_state = "shade_dead"
|
||||
Stun(1000)
|
||||
canmove = 0
|
||||
friendly = "deads at"
|
||||
pseudo_death = TRUE
|
||||
incorporeal_move = 0
|
||||
to_chat(src, "<span class='notice'>Your astral projection is interrupted and your mind is sent back to your body with a shock!</span>")
|
||||
|
||||
/mob/living/simple_animal/astral/ClickOn(var/atom/A, var/params)
|
||||
..()
|
||||
if(pseudo_death == FALSE)
|
||||
if(isliving(A))
|
||||
var/message = html_decode(stripped_input(src, "Enter a message to send to [A]", MAX_MESSAGE_LEN))
|
||||
to_chat(A, "<b>[src] speaks into your mind,</b><i> \"[message]\"</i>")
|
||||
log_game("FERMICHEM: [src] has astrally transmitted [message] into [A]")
|
||||
@@ -1929,7 +1929,7 @@
|
||||
/datum/reagent/moonsugar/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(20))
|
||||
to_chat(M, "You find yourself unable to supress the desire to meow!")
|
||||
M.emote("*nya")
|
||||
M.emote("nya")
|
||||
..()
|
||||
|
||||
//Kept for legacy, I think it will break everything if you enable it.
|
||||
|
||||
@@ -405,13 +405,13 @@
|
||||
var/cold_modifier = H.dna.species.coldmod
|
||||
if(breath_temperature < cold_level_3_threshold)
|
||||
H.apply_damage_type(cold_level_3_damage*cold_modifier, cold_damage_type)
|
||||
adjustLungLoss(cold_level_3_damage*cold_modifier, H)
|
||||
adjustLungLoss((cold_level_3_damage*cold_modifier*2), H)
|
||||
if(breath_temperature > cold_level_3_threshold && breath_temperature < cold_level_2_threshold)
|
||||
H.apply_damage_type(cold_level_2_damage*cold_modifier, cold_damage_type)
|
||||
adjustLungLoss(cold_level_2_damage*cold_modifier, H)
|
||||
adjustLungLoss((cold_level_2_damage*cold_modifier*2), H)
|
||||
if(breath_temperature > cold_level_2_threshold && breath_temperature < cold_level_1_threshold)
|
||||
H.apply_damage_type(cold_level_1_damage*cold_modifier, cold_damage_type)
|
||||
adjustLungLoss(cold_level_1_damage*cold_modifier, H)
|
||||
adjustLungLoss((cold_level_1_damage*cold_modifier*2), H)
|
||||
if(breath_temperature < cold_level_1_threshold)
|
||||
if(prob(20))
|
||||
to_chat(H, "<span class='warning'>You feel [cold_message] in your [name]!</span>")
|
||||
@@ -420,13 +420,13 @@
|
||||
var/heat_modifier = H.dna.species.heatmod
|
||||
if(breath_temperature > heat_level_1_threshold && breath_temperature < heat_level_2_threshold)
|
||||
H.apply_damage_type(heat_level_1_damage*heat_modifier, heat_damage_type)
|
||||
adjustLungLoss(cold_level_1_damage*heat_modifier, H)
|
||||
adjustLungLoss((heat_level_1_damage*heat_modifier*2), H)
|
||||
if(breath_temperature > heat_level_2_threshold && breath_temperature < heat_level_3_threshold)
|
||||
H.apply_damage_type(heat_level_2_damage*heat_modifier, heat_damage_type)
|
||||
adjustLungLoss(cold_level_1_damage*heat_modifier, H)
|
||||
adjustLungLoss((heat_level_2_damage*heat_modifier*2), H)
|
||||
if(breath_temperature > heat_level_3_threshold)
|
||||
H.apply_damage_type(heat_level_3_damage*heat_modifier, heat_damage_type)
|
||||
adjustLungLoss(cold_level_1_damage*heat_modifier, H)
|
||||
adjustLungLoss((heat_level_3_damage*heat_modifier*2), H)
|
||||
if(breath_temperature > heat_level_1_threshold)
|
||||
if(prob(20))
|
||||
to_chat(H, "<span class='warning'>You feel [hot_message] in your [name]!</span>")
|
||||
@@ -500,4 +500,3 @@
|
||||
if (breath.gases[/datum/gas/plasma])
|
||||
var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma])
|
||||
owner.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
|
||||
|
||||
|
||||
@@ -68,11 +68,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
startHunger = M.nutrition
|
||||
if(pollStarted == FALSE)
|
||||
pollStarted = TRUE
|
||||
candies = pollGhostCandidates("Do you want to play as a clone and do you agree to respect their character and act in a similar manner to them? I swear to god if you diddle them I will be very disapointed in you.")
|
||||
candies = pollGhostCandidates("Do you want to play as a clone of [M], and do you agree to respect their character and act in a similar manner to them? I swear to god if you diddle them I will be very disapointed in you and it will likely earn you a bwoink.")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has taken SDGF, and ghosts have been polled.")
|
||||
if(20 to INFINITY)
|
||||
if(LAZYLEN(candies) && playerClone == FALSE) //If there's candidates, clone the person and put them in there!
|
||||
message_admins("Ghost candidate found! [candies] is becoming a clone of [M]! Hee~!! Exciting!!")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] is creating a clone, controlled by [candies]")
|
||||
to_chat(M, "<span class='warning'>The cells reach a critical micelle concentration, nucleating rapidly within your body!</span>")
|
||||
var/typepath = M.type
|
||||
@@ -83,6 +82,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
M.dna.transfer_identity(SM)
|
||||
SM.updateappearance(mutcolor_update=1)
|
||||
var/mob/dead/observer/C = pick(candies)
|
||||
message_admins("Ghost candidate found! [C] is becoming a clone of [M] (They agreed to respect the character they're becoming. If they don't, then they agreed to a a bwoinking.) (Hee~!! Exciting!!)")
|
||||
SM.key = C.key
|
||||
SM.mind.enslave_mind_to_creator(M)
|
||||
|
||||
|
||||
@@ -18,13 +18,14 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
id = "astral"
|
||||
description = "An opalescent murky liquid that is said to distort your soul from your being."
|
||||
color = "#A080H4" // rgb: , 0, 255
|
||||
taste_description = "velvety brambles"
|
||||
taste_description = "your mind"
|
||||
metabolization_rate = 0//Removal is exponential, see code
|
||||
overdose_threshold = 20
|
||||
addiction_threshold = 24.5
|
||||
addiction_stage1_end = 9999//Should never end. There is no escape make your time
|
||||
var/mob/living/carbon/origin
|
||||
var/mob/living/simple_animal/hostile/retaliate/ghost/G = null
|
||||
var/mob/living/simple_animal/astral/G = null
|
||||
var/datum/mind/originalmind
|
||||
var/antiGenetics = 255
|
||||
var/sleepytime = 0
|
||||
InverseChemVal = 0.25
|
||||
@@ -41,39 +42,34 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
|
||||
/datum/reagent/fermi/astral/on_mob_life(mob/living/M) // Gives you the ability to astral project for a moment!
|
||||
M.alpha = 255
|
||||
originalmind = M.mind
|
||||
if(current_cycle == 0)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] became an astral ghost")
|
||||
origin = M
|
||||
if (G == null)
|
||||
G = new(get_turf(M.loc))
|
||||
G.attacktext = "raises the hairs on the neck of"
|
||||
G.response_harm = "disrupts the concentration of"
|
||||
G.response_disarm = "wafts"
|
||||
G.loot = null
|
||||
G.maxHealth = 5
|
||||
G.health = 5
|
||||
G.melee_damage_lower = 0
|
||||
G.melee_damage_upper = 0
|
||||
G.obj_damage = 0
|
||||
G.deathmessage = "disappears as if it was never really there to begin with"
|
||||
G.incorporeal_move = 1
|
||||
G.alpha = 35
|
||||
G.name = "[M]'s astral projection"
|
||||
var/datum/action/chem/astral/AS = new(G)
|
||||
AS.origin = M
|
||||
AS.ghost = G
|
||||
M.mind.transfer_to(G)
|
||||
sleepytime = 15*volume
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "Astral projections")
|
||||
if(overdosed)
|
||||
if(prob(50))
|
||||
to_chat(G, "<span class='warning'>The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!</b></span>")
|
||||
do_teleport(G, M.loc)
|
||||
M.reagents.remove_reagent(id, current_cycle/2, FALSE)//exponent
|
||||
sleepytime+=5
|
||||
if(G.stat == DEAD || !G || G.pseudo_death == TRUE)
|
||||
originalmind.transfer_to(M)
|
||||
M.Sleeping(10, 0)
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/astral/on_mob_delete(mob/living/carbon/M)
|
||||
G.mind.transfer_to(origin)
|
||||
if(!G)
|
||||
originalmind.transfer_to(M)
|
||||
else
|
||||
G.mind.transfer_to(origin)
|
||||
qdel(G)
|
||||
if(overdosed)
|
||||
to_chat(M, "<span class='warning'>The high volume of Astrogren you just took causes you to black out momentarily as your mind snaps back to your body.</b></span>")
|
||||
@@ -86,7 +82,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
if(addiction_stage < 2)
|
||||
antiGenetics = 255
|
||||
M.alpha = 255 //Antigenetics is to do with stopping geneticists from turning people invisible to kill them.
|
||||
if(prob(65))
|
||||
if(prob(70))
|
||||
M.alpha--
|
||||
antiGenetics--
|
||||
switch(antiGenetics)
|
||||
@@ -99,6 +95,11 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
to_chat(M, "<span class='notice'>Your addiction is only getting worse as your body disappears. Maybe you should get some more, and fast?</b></span>")
|
||||
M.alpha--
|
||||
antiGenetics--
|
||||
if(200)
|
||||
to_chat(M, "<span class='notice'>You feel a substantial part of your soul flake off into the ethereal world, rendering yourself unclonable.</b></span>")
|
||||
M.alpha--
|
||||
antiGenetics--
|
||||
ADD_TRAIT(M, TRAIT_NOCLONE, "astral") //So you can't scan yourself, then die, to metacomm. You can only use your memories if you come back as something else.
|
||||
if(180)
|
||||
to_chat(M, "<span class='notice'>You feel fear build up in yourself as more and more of your body and consciousness begins to fade.</b></span>")
|
||||
M.alpha--
|
||||
@@ -107,11 +108,6 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die
|
||||
to_chat(M, "<span class='notice'>As you lose more and more of yourself, you start to think that maybe shedding your mortality isn't too bad.</b></span>")
|
||||
M.alpha--
|
||||
antiGenetics--
|
||||
if(100)
|
||||
to_chat(M, "<span class='notice'>You feel a substantial part of your soul flake off into the ethereal world, rendering yourself unclonable.</b></span>")
|
||||
M.alpha--
|
||||
antiGenetics--
|
||||
ADD_TRAIT(M, TRAIT_NOCLONE, "astral") //So you can't scan yourself, then die, to metacomm. You can only use your memories if you come back as something else.
|
||||
if(80)
|
||||
to_chat(M, "<span class='notice'>You feel a thrill shoot through your body as what's left of your mind contemplates your forthcoming oblivion.</b></span>")
|
||||
M.alpha--
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
if(prob(20))
|
||||
to_chat(C, "<span class='warning'>You can feel your lungs burning!</b></span>")
|
||||
var/obj/item/organ/lungs/L = C.getorganslot(ORGAN_SLOT_LUNGS)
|
||||
L.adjustLungLoss(acidstr, C)
|
||||
L.adjustLungLoss(acidstr*2, C)
|
||||
C.apply_damage(acidstr/5, BURN, target)
|
||||
C.acid_act(acidstr, volume)
|
||||
..()
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
if(T)
|
||||
T.adjustTongueLoss(C, 1)
|
||||
if(L)
|
||||
L.adjustLungLoss(2.5, C)
|
||||
L.adjustLungLoss(4, C)
|
||||
C.adjustOxyLoss(2)
|
||||
else
|
||||
C.adjustOxyLoss(10)
|
||||
|
||||
@@ -2081,6 +2081,7 @@
|
||||
#include "code\modules\mob\living\silicon\robot\robot_movement.dm"
|
||||
#include "code\modules\mob\living\silicon\robot\say.dm"
|
||||
#include "code\modules\mob\living\simple_animal\animal_defense.dm"
|
||||
#include "code\modules\mob\living\simple_animal\astral.dm"
|
||||
#include "code\modules\mob\living\simple_animal\constructs.dm"
|
||||
#include "code\modules\mob\living\simple_animal\corpse.dm"
|
||||
#include "code\modules\mob\living\simple_animal\damage_procs.dm"
|
||||
|
||||
Reference in New Issue
Block a user