mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 09:54:52 +00:00
Could this be the final commit?!
This commit is contained in:
@@ -53,24 +53,24 @@
|
||||
|
||||
//Effects of bloodloss
|
||||
var/word = pick("dizzy","woozy","faint")
|
||||
switch(blood_volume)
|
||||
if((BLOOD_VOLUME_OKAY * blood_ratio) to (BLOOD_VOLUME_SAFE * blood_ratio))
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='warning'>You feel [word].</span>")
|
||||
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.01, 1))
|
||||
if((BLOOD_VOLUME_BAD * blood_ratio) to (BLOOD_VOLUME_OKAY*blood_ratio))
|
||||
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.02, 1))
|
||||
if(prob(5))
|
||||
blur_eyes(6)
|
||||
to_chat(src, "<span class='warning'>You feel very [word].</span>")
|
||||
if((BLOOD_VOLUME_SURVIVE * blood_ratio) to (BLOOD_VOLUME_BAD * blood_ratio))
|
||||
adjustOxyLoss(5)
|
||||
if(prob(15))
|
||||
Unconscious(rand(20,60))
|
||||
to_chat(src, "<span class='warning'>You feel extremely [word].</span>")
|
||||
if(-INFINITY to (BLOOD_VOLUME_SURVIVE * blood_ratio))
|
||||
if(!has_trait(TRAIT_NODEATH))
|
||||
death()
|
||||
//switch(blood_volume) Used to be a switch statement; now it uses ifs (so blood ratio can work.) Check my logic please.
|
||||
if(((BLOOD_VOLUME_OKAY * blood_ratio) < blood_volume) && (blood_volume <= (BLOOD_VOLUME_SAFE * blood_ratio)))
|
||||
if(prob(5))
|
||||
to_chat(src, "<span class='warning'>You feel [word].</span>")
|
||||
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.01, 1))
|
||||
else if(((BLOOD_VOLUME_BAD * blood_ratio) < blood_volume) && (blood_volume <=(BLOOD_VOLUME_OKAY*blood_ratio)))
|
||||
adjustOxyLoss(round(((BLOOD_VOLUME_NORMAL * blood_ratio) - blood_volume) * 0.02, 1))
|
||||
if(prob(5))
|
||||
blur_eyes(6)
|
||||
to_chat(src, "<span class='warning'>You feel very [word].</span>")
|
||||
else if( ((BLOOD_VOLUME_SURVIVE * blood_ratio) < blood_volume) && (blood_volume <= (BLOOD_VOLUME_BAD * blood_ratio)))
|
||||
adjustOxyLoss(5)
|
||||
if(prob(15))
|
||||
Unconscious(rand(20,60))
|
||||
to_chat(src, "<span class='warning'>You feel extremely [word].</span>")
|
||||
else if((-INFINITY < blood_volume) && (blood_volume <= (BLOOD_VOLUME_SURVIVE * blood_ratio)))
|
||||
if(!has_trait(TRAIT_NODEATH))
|
||||
death()
|
||||
|
||||
var/temp_bleed = 0
|
||||
//Bleeding out
|
||||
@@ -309,12 +309,23 @@
|
||||
/mob/living/proc/DecreaseBloodVol(var/value)
|
||||
blood_ratio -= value
|
||||
|
||||
//This is a terrible way of handling it.
|
||||
/mob/living/proc/ResetBloodVol()
|
||||
if(ishuman(src) && src.has_trait(TRAIT_HIGH_BLOOD))
|
||||
blood_ratio = 1.2
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
if (src.has_trait(TRAIT_HIGH_BLOOD))
|
||||
blood_ratio = 1.2
|
||||
H.handle_blood()
|
||||
return
|
||||
blood_ratio = 1
|
||||
H.handle_blood()
|
||||
return
|
||||
blood_ratio = 1
|
||||
|
||||
/mob/living/proc/AdjustBloodVol(var/value)
|
||||
if(blood_ratio == value)
|
||||
return
|
||||
blood_ratio = value
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.handle_blood()
|
||||
|
||||
@@ -353,7 +353,8 @@ im
|
||||
var/iconhtml = icon2html(A, seen)
|
||||
for(var/mob/M in seen)
|
||||
to_chat(M, "<span class='notice'>[iconhtml] \The [my_atom]'s melts from the temperature!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/bubbles.ogg', 80, 1)
|
||||
playsound(get_turf(A), 'sound/FermiChem/heatmelt.ogg', 80, 1)
|
||||
|
||||
qdel(A)
|
||||
return
|
||||
else if(istype(A, /obj/item/reagent_containers/glass) && ((pH < 0.5) || (pH > 13.5)))//maybe make it higher? Though..Hmm!
|
||||
@@ -361,7 +362,7 @@ im
|
||||
var/iconhtml = icon2html(A, seen)
|
||||
for(var/mob/M in seen)
|
||||
to_chat(M, "<span class='notice'>[iconhtml] \The [my_atom]'s melts from the extreme pH!</span>")
|
||||
playsound(get_turf(A), 'sound/effects/bubbles.ogg', 80, 1)
|
||||
playsound(get_turf(A), 'sound/FermiChem/acidmelt.ogg', 80, 1)
|
||||
qdel(A)
|
||||
return
|
||||
|
||||
|
||||
@@ -167,12 +167,12 @@
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/plastic
|
||||
name = "x-large beaker"
|
||||
desc = "An extra-large beaker. Can hold up to 150 units."
|
||||
desc = "An extra-large beaker. Can hold up to 150 units. Is able to resist acid and alkaline solutions, but melts at 444K"
|
||||
icon_state = "beakerwhite"
|
||||
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000)
|
||||
volume = 150
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,150)
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,150)
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/plastic/update_icon()
|
||||
icon_state = "beakerlarge" // hack to lets us reuse the large beaker reagent fill states
|
||||
@@ -186,7 +186,7 @@
|
||||
materials = list(MAT_GLASS=2500, MAT_PLASTIC=3000, MAT_GOLD=1000, MAT_TITANIUM=1000)
|
||||
volume = 200
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,60,120,150,200)
|
||||
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,200)
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/noreact
|
||||
name = "cryostasis beaker"
|
||||
|
||||
@@ -121,15 +121,15 @@
|
||||
message_admins("PElarge started!")
|
||||
var/mob/living/carbon/human/o = owner
|
||||
var/items = o.get_contents()
|
||||
for(var/obj/item/W in items)
|
||||
if(W == o.w_uniform || W == o.wear_suit)
|
||||
o.dropItemToGround(W, TRUE)
|
||||
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
if(o.w_uniform || o.wear_suit)
|
||||
to_chat(o, "<span class='warning'>Your clothes give, ripping into peices under the strain of your swelling pecker! Unless you manage to reduce the size of your emancipated trouser snake, there's no way you're going to be able to put anything on over this girth..!</b></span>")
|
||||
owner.visible_message("<span class='boldnotice'>[o]'s schlong suddenly bursts forth, ripping their clothes off!'</span>")
|
||||
else
|
||||
to_chat(o, "<span class='notice'>Your emancipated trouser snake is so ripe with girth, you seriously doubt you'll be able to fit any clothes over it.</b></span>")
|
||||
for(var/obj/item/W in items)
|
||||
if(W == o.w_uniform || W == o.wear_suit)
|
||||
o.dropItemToGround(W, TRUE)
|
||||
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -286,11 +286,8 @@
|
||||
else
|
||||
|
||||
else if (resistanceTally > 150)
|
||||
enthrallTally *= 0.5
|
||||
phase = -1
|
||||
resistanceTally = 0
|
||||
to_chat(owner, "<span class='warning'><i>You break free of the influence in your mind, your thoughts suddenly turning lucid!</i></span>")
|
||||
to_chat(owner, "<span class='big redtext'><i>You're now free of [master]'s influence, and fully independant oncemore.'</i></span>")
|
||||
owner.remove_status_effect(src) //If resisted in phase 1, effect is removed.
|
||||
if(prob(10))
|
||||
if(owner.lewd)
|
||||
@@ -311,6 +308,7 @@
|
||||
enthrallTally *= 0.5
|
||||
phase -= 1
|
||||
resistanceTally = 0
|
||||
resistGrowth = 0
|
||||
to_chat(owner, "<span class='notice'><i>You manage to shake some of the effects from your addled mind, however you can still feel yourself drawn towards [master].</i></span>")
|
||||
//owner.remove_status_effect(src) //If resisted in phase 1, effect is removed. Not at the moment,
|
||||
if(prob(10))
|
||||
@@ -321,6 +319,7 @@
|
||||
enthrallTally = 0
|
||||
phase -= 1
|
||||
resistanceTally = 0
|
||||
resistGrowth = 0
|
||||
to_chat(owner, "<span class='notice'><i>The separation from [(owner.lewd?"your [enthrallGender]":"[master]")] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.</i></span>")
|
||||
owner.remove_trait(TRAIT_PACIFISM, "MKUltra")
|
||||
if(prob(2))
|
||||
@@ -334,6 +333,7 @@
|
||||
to_chat(owner, "<span class='notice'><i>Your mind starts to heal, fixing the damage caused by the massive ammounts of chem injected into your system earlier, .</i></span>")
|
||||
M.slurring = 0
|
||||
M.confused = 0
|
||||
resistGrowth = 0
|
||||
else
|
||||
return//If you break the mind of someone, you can't use status effects on them.
|
||||
|
||||
@@ -521,6 +521,7 @@
|
||||
redirect_component = null
|
||||
UnregisterSignal(owner, COMSIG_MOVABLE_HEAR)
|
||||
owner.remove_trait(TRAIT_PACIFISM, "MKUltra")
|
||||
to_chat(owner, "<span class='big redtext'><i>You're now free of [master]'s influence, and fully independant oncemore!'</i></span>")
|
||||
//UnregisterSignal(owner, COMSIG_GLOB_LIVING_SAY_SPECIAL) //Should still make custom commands work after freedom, need to check.
|
||||
|
||||
/*
|
||||
@@ -643,7 +644,7 @@
|
||||
return
|
||||
else
|
||||
deltaResist = 2 + resistGrowth
|
||||
resistGrowth += 0.1
|
||||
resistGrowth += 0.05
|
||||
|
||||
//distance modifer
|
||||
switch(DistApart)
|
||||
|
||||
@@ -284,8 +284,13 @@
|
||||
if(istype(O, /obj/item/organ/genital))
|
||||
organCheck = TRUE
|
||||
if (organCheck == FALSE)
|
||||
dna.features["genitals_use_skintone"] = TRUE
|
||||
dna.species.use_skintones = TRUE
|
||||
if(ishuman(src))
|
||||
dna.features["genitals_use_skintone"] = TRUE
|
||||
dna.species.use_skintones = TRUE
|
||||
return
|
||||
//So people who haven't set stuff up don't get rainbow surprises.
|
||||
dna.features["cock_color"] = "#[dna.features["mcolor"]]"
|
||||
dna.features["breasts_color"] = "#[dna.features["mcolor"]]"
|
||||
return
|
||||
|
||||
/datum/species/proc/handle_genitals(mob/living/carbon/human/H)
|
||||
|
||||
@@ -630,6 +630,20 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
|
||||
/datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(!ishuman(M)) //The monkey clause
|
||||
if(volume >= 10)
|
||||
var/turf/T = get_turf(M)
|
||||
var/obj/item/organ/genital/breasts/B = new /obj/item/organ/genital/breasts(T)
|
||||
var/list/seen = viewers(8, T)
|
||||
for(var/mob/S in seen)
|
||||
to_chat(S, "<span class='warning'>A pair of breasts suddenly fly out of the [M]!</b></span>")
|
||||
//var/turf/T2 = pick(turf in view(5, M))
|
||||
var/T2 = get_random_station_turf()
|
||||
M.adjustBruteLoss(5)
|
||||
M.Knockdown(50)
|
||||
B.throw_at(T2, 8, 1)
|
||||
M.reagents.remove_reagent(src.id, 1000)
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.genital_override = TRUE
|
||||
var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts")
|
||||
@@ -637,13 +651,14 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
H.emergent_genital_call()
|
||||
message_admins("No breasts found on init!")
|
||||
return
|
||||
|
||||
var/sizeConv = list("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5)
|
||||
B.prev_size = B.size
|
||||
B.cached_size = sizeConv[B.size]
|
||||
message_admins("init B size: [B.size], prev: [B.prev_size], cache = [B.cached_size], raw: [sizeConv[B.size]]") //if this runtimes it's cause someone's breasts are too big!
|
||||
|
||||
/datum/reagent/fermi/BElarger/on_mob_life(mob/living/carbon/M) //Increases breast size
|
||||
if(!ishuman(M))//Just in case
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/genital/breasts/B = M.getorganslot("breasts")
|
||||
if(!B) //If they don't have breasts, give them breasts.
|
||||
@@ -742,6 +757,19 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
|
||||
/datum/reagent/fermi/PElarger/on_mob_add(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(!ishuman(M)) //Just monkeying around.
|
||||
if(volume >= 10)
|
||||
var/turf/T = get_turf(M)
|
||||
var/obj/item/organ/genital/penis/P = new /obj/item/organ/genital/penis(T)
|
||||
var/list/seen = viewers(8, T)
|
||||
for(var/mob/S in seen)
|
||||
to_chat(S, "<span class='warning'>A penis suddenly flies out of the [M]!</b></span>")
|
||||
var/T2 = get_random_station_turf()
|
||||
M.adjustBruteLoss(5)
|
||||
M.Knockdown(50)
|
||||
P.throw_at(T2, 8, 1)
|
||||
M.reagents.remove_reagent(src.id, 1000)
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.genital_override = TRUE
|
||||
var/obj/item/organ/genital/penis/P = M.getorganslot("penis")
|
||||
@@ -754,6 +782,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
message_admins("init P len chem: [P.length], prev: [P.prev_size], cache = [P.cached_length]")
|
||||
|
||||
/datum/reagent/fermi/PElarger/on_mob_life(mob/living/carbon/M) //Increases penis size, 5u = +1 inch.
|
||||
if(!ishuman(M))
|
||||
return
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/genital/penis/P = M.getorganslot("penis")
|
||||
if(!P)
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
CurveSharppH = 2 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = 5 //Temperature change per 1u produced
|
||||
HIonRelease = -0.1 //pH change per 1u reaction
|
||||
RateUpLim = 5.5 //Optimal/max rate possible if all conditions are perfect
|
||||
RateUpLim = 55 //Optimal/max rate possible if all conditions are perfect (NEEDS TO BE A MULTIPLE OF 10 IF RESULTS IS DOWN BY A FACTOR OF 10)
|
||||
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
|
||||
FermiExplode = FALSE //If the chemical explodes in a special way
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = -5 // Temperature change per 1u produced
|
||||
HIonRelease = 0.05 // pH change per 1u reaction
|
||||
RateUpLim = 5 // Optimal/max rate possible if all conditions are perfect
|
||||
RateUpLim = 20 // Optimal/max rate possible if all conditions are perfect
|
||||
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
|
||||
FermiExplode = TRUE // If the chemical explodes in a special way
|
||||
PurityMin = 0.25
|
||||
@@ -151,7 +151,7 @@
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = 0.5
|
||||
RateUpLim = 5
|
||||
RateUpLim = 50
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.1
|
||||
@@ -183,7 +183,7 @@
|
||||
CurveSharppH = 2
|
||||
ThermicConstant = 1
|
||||
HIonRelease = -0.5
|
||||
RateUpLim = 5
|
||||
RateUpLim = 50
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.1
|
||||
@@ -215,7 +215,7 @@
|
||||
CurveSharppH = 1
|
||||
ThermicConstant = 20
|
||||
HIonRelease = -0.5
|
||||
RateUpLim = 10
|
||||
RateUpLim = 20
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.25 // explode purity!
|
||||
@@ -297,7 +297,7 @@
|
||||
CurveSharppH = 0.5
|
||||
ThermicConstant = -2
|
||||
HIonRelease = -0.05
|
||||
RateUpLim = 5
|
||||
RateUpLim = 50
|
||||
FermiChem = TRUE
|
||||
FermiExplode = TRUE
|
||||
PurityMin = 0.5
|
||||
@@ -328,7 +328,7 @@
|
||||
CurveSharppH = 0.5
|
||||
ThermicConstant = -10
|
||||
HIonRelease = -0.1
|
||||
RateUpLim = 10
|
||||
RateUpLim = 20
|
||||
FermiChem = TRUE
|
||||
PurityMin = 0.30
|
||||
|
||||
@@ -352,7 +352,7 @@
|
||||
CurveSharppH = 1
|
||||
ThermicConstant = 5
|
||||
HIonRelease = 0.01
|
||||
RateUpLim = 100
|
||||
RateUpLim = 200
|
||||
FermiChem = TRUE
|
||||
PurityMin = 0.15
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
CurveSharppH = 0
|
||||
ThermicConstant = 0
|
||||
HIonRelease = -0.01
|
||||
RateUpLim = 20
|
||||
RateUpLim = 200
|
||||
FermiChem = TRUE
|
||||
|
||||
/datum/chemical_reaction/fermi/fermiABuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this
|
||||
@@ -398,7 +398,7 @@
|
||||
CurveSharppH = 0
|
||||
ThermicConstant = 0
|
||||
HIonRelease = 0.01
|
||||
RateUpLim = 20
|
||||
RateUpLim = 200
|
||||
FermiChem = TRUE
|
||||
|
||||
/datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this
|
||||
|
||||
9
sound/FermiChem/SoundSources.txt
Normal file
9
sound/FermiChem/SoundSources.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
heatmelt.ogg - from https://freesound.org/people/toiletrolltube/sounds/181483/
|
||||
from https://freesound.org/people/MrVasLuk/sounds/304619/
|
||||
from https://freesound.org/people/Benboncan/sounds/74899/
|
||||
from bubbles2.ogg
|
||||
heatacid.ogg - from https://freesound.org/people/klankbeeld/sounds/233697/
|
||||
from bubbles2.ogg
|
||||
from fuse.ogg
|
||||
|
||||
Work is licensed under the Creative Commons and Attribution License.
|
||||
BIN
sound/FermiChem/acidmelt.ogg
Normal file
BIN
sound/FermiChem/acidmelt.ogg
Normal file
Binary file not shown.
BIN
sound/FermiChem/heatmelt.ogg
Normal file
BIN
sound/FermiChem/heatmelt.ogg
Normal file
Binary file not shown.
Reference in New Issue
Block a user