This commit is contained in:
Fermi
2019-06-13 06:35:12 +01:00
parent 378af882d3
commit aa7805eaa4
6 changed files with 48 additions and 47 deletions
+4 -7
View File
@@ -786,7 +786,7 @@
var/S = specific_heat()
chem_temp = CLAMP(chem_temp + (J / (S * total_volume)), min_temp, max_temp)
/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, other_purity = 1, other_pH, no_react = 0)//EDIT HERE TOO ~FERMICHEM~
/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300, other_purity = 1, other_pH, no_react = 0)
if(!isnum(amount) || !amount)
return FALSE
@@ -803,7 +803,7 @@
if (pH <= 2)
var/datum/effect_system/smoke_spread/chem/s = new
var/turf/T = get_turf(my_atom)
var/datum/reagents/R = new/datum/reagents(3000)//I don't want to hold it back..!
var/datum/reagents/R = new/datum/reagents(3000)
R.add_reagent("fermiAcid", amount)
for (var/datum/reagent/reagentgas in reagent_list)
R.add_reagent(reagentgas, amount/5)
@@ -836,7 +836,6 @@
specific_heat += D.specific_heat * (amount / new_total)
thermal_energy += D.specific_heat * amount * reagtemp
chem_temp = thermal_energy / (specific_heat * new_total)
////
//cacluate reagent based pH shift.
pH = ((cached_pH * cached_total)+(D.pH * amount))/(cached_total + amount)//should be right
@@ -858,10 +857,8 @@
if(my_atom)
my_atom.on_reagent_change(ADD_REAGENT)
R.on_merge(data, amount, my_atom, other_purity)
if(istype(D, /datum/reagent/fermi))//Is this a fermichem?
var/datum/reagent/fermi/Ferm = D //It is a fermichem!
if(Ferm.OnMobMergeCheck == TRUE) //Does this fermichem split?
R.on_mob_add(my_atom, amount) //On mob add processes fermichems, splitting them into their impure and pure products. This allows them to split when merging fermichems in a mob.
if(R.OnMobMergeCheck == TRUE)//Forces on_mob_add proc when a chem is merged
R.on_mob_add(my_atom, amount)
if(!no_react)
handle_reactions()
@@ -38,6 +38,7 @@
var/addProc = FALSE //If the chemical should force an on_new() call
var/turf/loc = null //Should be the creation location!
var/pH = 7 //pH of the specific reagent, used for calculating the sum pH of a holder.
var/OnMobMergeCheck = FALSE
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
+9 -5
View File
@@ -1,3 +1,8 @@
#define FLAG_STATUS_NONE (1<<0)
#define FLAG_STATUS_PH_IMMUNE (1<<1)
#define FLAG_STATUS_TEMP_IMMUNE (1<<2)
/obj/item/reagent_containers
name = "Container"
desc = "..."
@@ -11,8 +16,7 @@
var/spawned_disease = null
var/disease_amount = 20
var/spillable = FALSE
var/pH_immune = TRUE//true for now, just so things that shouldn't melt don't.
var/temp_immune = TRUE
var/beaker_resistances |= 1<<3
/obj/item/reagent_containers/Initialize(mapload, vol)
. = ..()
@@ -127,7 +131,7 @@
//melts plastic beakers
/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/M)
reagents.expose_temperature(1000)
if(!temp_immune)
if(!beaker_resistances = FLAG_STATUS_TEMP_IMMUNE)
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
for(var/mob/H in seen)
@@ -139,7 +143,7 @@
//melts plastic beakers
/obj/item/reagent_containers/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
reagents.expose_temperature(exposed_temperature)
if(!temp_immune)
if(!beaker_resistances = FLAG_STATUS_TEMP_IMMUNE)
if(reagents.chem_temp > 444)//assuming polypropylene
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
@@ -150,7 +154,7 @@
//melts glass beakers
/obj/item/reagent_containers/proc/pH_check()
if(!pH_immune)
if(!beaker_resistances = FLAG_STATUS_PH_IMMUNE)
if((reagents.pH < 0.5) || (reagents.pH > 13.5))
var/list/seen = viewers(5, get_turf(src))
var/iconhtml = icon2html(src, seen)
+1 -2
View File
@@ -1229,8 +1229,7 @@
return
if(message_admins)
message_admins("[ADMIN_LOOKUPFLW(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
log_game("[key_name(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
investigate_log("[key_name(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: [key_name(user)] has said '[log_message]' with a Velvet Voice, affecting [english_list(listeners)], with a power multiplier of [power_multiplier].")
//SSblackbox.record_feedback("tally", "Velvet_voice", 1, log_message) If this is on, it fills the thing up and OOFs the server
return
@@ -1,10 +1,13 @@
#define DICK_MOVEMENT_SPEED "hugedick"
#define BREAST_MOVEMENT_SPEED "megamilk"
/datum/status_effect/chem/SGDF
id = "SGDF"
var/mob/living/fermi_Clone
alert_type = null
/datum/status_effect/chem/SGDF/on_apply()
investigate_log("SGDF status appied on [owner], ID: [owner.key]", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: SGDF status appied on [owner], ID: [owner.key]")
var/typepath = owner.type
fermi_Clone = new typepath(owner.loc)
var/mob/living/carbon/M = owner
@@ -20,7 +23,7 @@
if(owner.stat == DEAD)
if((fermi_Clone && fermi_Clone.stat != DEAD) || (fermi_Clone == null))
if(owner.mind)
investigate_log("SGDF mind shift applied. [owner] is now playing as their clone and should not have memories after their clone split (look up SGDF status applied). ID: [owner.key]", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: SGDF mind shift applied. [owner] is now playing as their clone and should not have memories after their clone split (look up SGDF status applied). ID: [owner.key]")
owner.mind.transfer_to(fermi_Clone)
to_chat(owner, "<span class='warning'>Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.</span>")
to_chat(fermi_Clone, "<span class='warning'>Lucidity shoots to your previously blank mind as your mind suddenly finishes the cloning process. You marvel for a moment at yourself, as your mind subconciously recollects all your memories up until the point when you cloned yourself. curiously, you find that you memories are blank after you ingested the sythetic serum, leaving you to wonder where the other you is.</span>")
@@ -37,7 +40,7 @@
var/cachedmoveCalc = 1
/datum/status_effect/chem/breast_enlarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now.
investigate_log("[owner]'s breasts has reached comical sizes. ID: [owner.key]", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: [owner]'s breasts has reached comical sizes. ID: [owner.key]")
var/mob/living/carbon/human/o = owner
var/items = o.get_contents()
for(var/obj/item/W in items)
@@ -55,7 +58,7 @@
var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts")
moveCalc = 1+((round(B.cached_size) - 9)/3) //Afffects how fast you move, and how often you can click.
if(!B)
o.remove_movespeed_modifier("megamilk")
o.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED)
sizeMoveMod(1)
owner.remove_status_effect(src)
var/items = o.get_contents()
@@ -70,14 +73,14 @@
var/target = o.get_bodypart(BODY_ZONE_CHEST)
o.apply_damage(0.1, BRUTE, target)
if(!B.cached_size == B.breast_values[B.prev_size])
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
sizeMoveMod(moveCalc)
return ..()
else if (B.breast_values[B.size] > B.breast_values[B.prev_size])
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
sizeMoveMod(moveCalc)
else if (B.breast_values[B.size] < B.breast_values[B.prev_size])
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.add_movespeed_modifier(BREAST_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
sizeMoveMod(moveCalc)
if((B.cached_size) < 16)
switch(round(B.cached_size))
@@ -92,8 +95,8 @@
..()
/datum/status_effect/chem/breast_enlarger/on_remove(mob/living/carbon/M)
investigate_log("[owner]'s breasts has reduced to an acceptable size. ID: [owner.key]", INVESTIGATE_FERMICHEM)
owner.remove_movespeed_modifier("megamilk")
log_game("FERMICHEM: [owner]'s breasts has reduced to an acceptable size. ID: [owner.key]")
owner.remove_movespeed_modifier(BREAST_MOVEMENT_SPEED)
sizeMoveMod(1)
/datum/status_effect/chem/breast_enlarger/proc/sizeMoveMod(var/value)
@@ -112,7 +115,7 @@
var/moveCalc
/datum/status_effect/chem/penis_enlarger/on_apply(mob/living/carbon/human/H)//Removes clothes, they're too small to contain you. You belong to space now.
investigate_log("[owner]'s dick has reached comical sizes. ID: [owner.key]", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: [owner]'s dick has reached comical sizes. ID: [owner.key]")
var/mob/living/carbon/human/o = owner
var/items = o.get_contents()
if(o.w_uniform || o.wear_suit)
@@ -133,7 +136,7 @@
moveCalc = 1+((round(P.length) - 21)/3) //effects how fast you can move
bloodCalc = 1+((round(P.length) - 21)/10) //effects how much blood you need (I didn' bother adding an arousal check because I'm spending too much time on this organ already.)
if(!P)
o.remove_movespeed_modifier("hugedick")
o.remove_movespeed_modifier(DICK_MOVEMENT_SPEED)
o.ResetBloodVol()
owner.remove_status_effect(src)
var/items = o.get_contents()
@@ -145,18 +148,18 @@
switch(round(P.cached_length))
if(21)
to_chat(o, "<span class='notice'>Your rascally willy has become a more managable size, liberating your movements.</b></span>")
o.remove_movespeed_modifier("hugedick")
o.remove_movespeed_modifier(DICK_MOVEMENT_SPEED)
o.AdjustBloodVol(bloodCalc)
if(22 to INFINITY)
if(prob(2))
to_chat(o, "<span class='warning'>Your indulgent johnson is so substantial, it's taking all your blood and affecting your movements!</b></span>")
o.add_movespeed_modifier("hugedick", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.add_movespeed_modifier(DICK_MOVEMENT_SPEED, TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.AdjustBloodVol(bloodCalc)
..()
/datum/status_effect/chem/penis_enlarger/on_remove(mob/living/carbon/human/o)
investigate_log("[owner]'s dick has reduced to an acceptable size. ID: [owner.key]", INVESTIGATE_FERMICHEM)
owner.remove_movespeed_modifier("hugedick")
log_game("FERMICHEM: [owner]'s dick has reduced to an acceptable size. ID: [owner.key]")
owner.remove_movespeed_modifier(DICK_MOVEMENT_SPEED)
owner.ResetBloodVol()
@@ -231,7 +234,7 @@
var/message = "[(owner.lewd?"I am a good pet for [enthrallGender].":"[master] is a really inspirational person!")]"
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "enthrall", /datum/mood_event/enthrall, message)
to_chat(owner, "<span class='[(owner.lewd?"big love":"big warning")]'><b>You feel inexplicably drawn towards [master], their words having a demonstrable effect on you. It seems the closer you are to them, the stronger the effect is. However you aren't fully swayed yet and can resist their effects by repeatedly resisting as much as you can!</b></span>")
investigate_log("MKULTRA: Status applied on [owner] ckey: [owner.key] with a master of [master] ckey: [enthrallID].", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: MKULTRA: Status applied on [owner] ckey: [owner.key] with a master of [master] ckey: [enthrallID].")
return ..()
/datum/status_effect/chem/enthrall/tick()
@@ -265,7 +268,7 @@
if(-1)//fully removed
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "enthrall")
owner.remove_status_effect(src)
investigate_log("MKULTRA: Status REMOVED from [owner] ckey: [owner.key] with a master of [master] ckey: [enthrallID].", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: MKULTRA: Status REMOVED from [owner] ckey: [owner.key] with a master of [master] ckey: [enthrallID].")
if(0)// sleeper agent
if (cooldown > 0)
cooldown -= 1
@@ -301,7 +304,7 @@
else
to_chat(owner, "<span class='big nicegreen'><i>You are unable to put up a resistance any longer, and now are under the control of [master]. However you find that in your intoxicated state you are unable to resort to violence. Equally you are unable to commit suicide, even if ordered to, as you cannot serve your [master] in death. </i></span>")
owner.add_trait(TRAIT_PACIFISM, "MKUltra") //IMPORTANT
investigate_log("MKULTRA: Status on [owner] ckey: [owner.key] has been fully entrhalled (state 3) with a master of [master] ckey: [enthrallID].", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: MKULTRA: Status on [owner] ckey: [owner.key] has been fully entrhalled (state 3) with a master of [master] ckey: [enthrallID].")
else if (resistanceTally > 200)
enthrallTally *= 0.5
phase -= 1
@@ -540,7 +543,7 @@
var/cached_trigger = lowertext(trigger)
if (findtext(raw_message, cached_trigger))//if trigger1 is the message
cTriggered = TRUE
investigate_log("MKULTRA: [owner] ckey: [owner.key] has been triggered with [cached_trigger] from [speaker] saying: \"[message]\". (their master being [master] ckey: [enthrallID].)", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been triggered with [cached_trigger] from [speaker] saying: \"[message]\". (their master being [master] ckey: [enthrallID].)")
//Speak (Forces player to talk) works
if (lowertext(customTriggers[trigger][1]) == "speak")//trigger2
@@ -549,7 +552,7 @@
saytext += " You find yourself fully believing in the validity of what you just said and don't think to question it."
to_chat(C, "<span class='notice'><i>[saytext]</i></span>")
(C.say(customTriggers[trigger][2]))//trigger3
investigate_log("MKULTRA: [owner] ckey: [owner.key] has been forced to say: \"[customTriggers[trigger][2]]\" from previous trigger.", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been forced to say: \"[customTriggers[trigger][2]]\" from previous trigger.")
//Echo (repeats message!)
@@ -595,7 +598,7 @@
var/mob/living/carbon/human/o = owner
o.apply_status_effect(/datum/status_effect/trance, 200, TRUE)
tranceTime = 50
investigate_log("MKULTRA: [owner] ckey: [owner.key] has been tranced from previous trigger.", INVESTIGATE_FERMICHEM)
log_game("FERMICHEM: MKULTRA: [owner] ckey: [owner.key] has been tranced from previous trigger.")
cTriggered = FALSE
@@ -9,11 +9,8 @@
var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
var/InverseChem = "fermiTox" // What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/DoNotSplit = FALSE // If impurity is handled within the main chem itself
var/OnMobMergeCheck = FALSE
//var/addProc = FALSE //When this reagent is added to a new beaker, it does something. Implemented but unused.
//This should process fermichems to find out how pure they are and what effect to do.
//TODO: add this to the main on_mob_add proc, and check if Fermichem = TRUE
/datum/reagent/fermi/on_mob_add(mob/living/carbon/M, amount)
. = ..()
if(!M)
@@ -1251,18 +1248,19 @@ Creating a chem with a low purity will make you permanently fall in love with so
qdel(W)
else
M.dropItemToGround(W, TRUE)
hat = new /obj/item/clothing/head/hattip()
var/hat = new /obj/item/clothing/head/hattip()
M.equip_to_slot(hat, SLOT_HEAD, 1, 1)
/datum/reagent/fermi/hatmium/on_mob_life(mob/living/carbon/human/M)
M.head
if(!M.head == /obj/item/clothing/head/hattip)
return ..()
var/hatArmor = (1+(current_cycle/30))*purity
for(var/datum/armor in )
if(!overdosed)
hat.armor = list("melee" = hatArmor, "bullet" = hatArmor, "laser" = hatArmor, "energy" = hatArmor, "bomb" = hatArmor, "bio" = hatArmor, "rad" = hatArmor, "fire" = hatArmor)
else
hat.armor = list("melee" = -hatArmor, "bullet" = -hatArmor, "laser" = -hatArmor, "energy" = -hatArmor, "bomb" = -hatArmor, "bio" = -hatArmor, "rad" = -hatArmor, "fire" = -hatArmor)
for(var/datum/armor/i in M.head)
if(!overdosed)
i = hatArmor
else
i = -hatArmor
..()
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1546,8 +1544,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
/datum/reagent/fermi/secretcatchem/on_mob_add(mob/living/carbon/human/H)
. = ..()
var/current_species = H.dna.species.type
if((mutation != current_species) && (purity >= 0.8))//ONLY if purity is high, and given the stuff is random. It's very unlikely to get this to 1. It already requires felind too, so no new functionality there.
if(purity >= 0.8)//ONLY if purity is high, and given the stuff is random. It's very unlikely to get this to 1. It already requires felind too, so no new functionality there.
//exception(al) handler:
H.dna.features["ears"] = "Cat"
H.dna.features["mam_ears"] = "Cat"