Could this be the final commit?!

This commit is contained in:
Fermi
2019-05-25 16:12:46 +01:00
parent 4b8cb81752
commit e3d3f30ea9
10 changed files with 103 additions and 46 deletions

View File

@@ -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()

View File

@@ -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

View File

@@ -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"

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View 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.

Binary file not shown.

Binary file not shown.