diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 47de0e605f..d8d72146b5 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -313,118 +313,3 @@ emote_hear = list("meows.", "mews.") emote_see = list("looks at you eagerly for pets!", "wiggles enthusiastically.") gold_core_spawnable = NO_SPAWN - -//secretcatchemcode, shh!! Of couse I hide it amongst cats. Also, yes, I expect you, Mr.Maintaner to read and review this, dispite it being hidden and not mentioned in the changelogs. -//I'm not trying to be sneaky, I'm trying to keep it a secret! -//I don't know how to do hidden chems like Aurora -//ChemReactionVars: -/datum/chemical_reaction/fermi/secretcatchem //DONE - name = "secretcatchem" - id = "secretcatchem" - results = list("secretcatchem" = 0.5) - required_reagents = list("stable_plasma" = 0.1, "sugar" = 0.1, "cream" = 0.1, "blood" = 0.1, "slimejelly" = 0.1) - required_catalysts = list("felinidmutationtoxin" = 1) - required_temp = 600 - mix_message = "the reaction gives off a meow!" - mix_sound = "modular_citadel/sound/voice/merowr.ogg" - //FermiChem vars: - OptimalTempMin = 650 - OptimalpHMin = 0 - ReactpHLim = 2 - CurveSharpT = 0 - CurveSharppH = 0 - ThermicConstant = 0 - HIonRelease = 0 - RateUpLim = 0.1 - FermiChem = TRUE - FermiExplode = FALSE - PurityMin = 0.2 - -/datum/chemical_reaction/fermi/secretcatchem/New() - //rand doesn't seem to work with n^-e - OptimalTempMin += rand(-100, 100) - OptimalTempMax = (OptimalTempMin+rand(0, 200)) - ExplodeTemp = (OptimalTempMax+rand(0, 200)) - OptimalpHMin += rand(1, 10) - OptimalpHMax = (OptimalpHMin + rand(1, 5)) - ReactpHLim += rand(-2, 2) - CurveSharpT += (rand(1, 500)/100) - CurveSharppH += (rand(1, 500)/100) - ThermicConstant += rand(-50, 50) - HIonRelease += (rand(-25, 25)/100) - RateUpLim += (rand(1, 1000)/100) - PurityMin += (rand(-1, 1)/10) - var/additions = list("aluminium", "silver", "gold", "plasma", "silicon", "bluespace", "uranium", "milk") - required_reagents[pick(additions)] = rand(1, 5)//weird - -/datum/chemical_reaction/fermi/secretcatchem/FermiFinish(datum/reagents/holder, var/atom/my_atom)//Strange how this doesn't work but the other does. - SSblackbox.record_feedback("catgirlium", "catgirlium made!")//log - -//ReagentVars -//Turns you into a cute catto while it's in your system. -//If you manage to gamble perfectly, makes you a catgirl after you transform back. But really, you shouldn't end up with that with how random it is. -/datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem? - name = "secretcatchem" //an attempt at hiding it - id = "secretcatchem" - description = "An illegal and hidden chem that turns people into cats. It's said that it's so rare and unstable that having it means you've been blessed." - taste_description = "hairballs and cream" - color = "#ffc224" - var/catshift = FALSE - var/mob/living/simple_animal/pet/cat/custom_cat/catto = null - -/datum/reagent/fermi/secretcatchem/New() - name = "Catgirli[pick("a","u","e","y")]m [pick("apex", "prime", "meow")]" - -/datum/reagent/fermi/secretcatchem/on_mob_add(mob/living/carbon/human/H) - . = ..() - var/current_species = H.dna.species.type - var/datum/species/mutation = /datum/species/human/felinid - if((mutation != current_species) && (purity >= 0.8))//ONLY if purity is high, and given the stuff is random. It's basically impossible to get this to 1. It already requires felind too, so no new functionality there. - H.set_species(mutation) - H.gender = FEMALE - //exception(al) handler: - H.dna.features["mam_tail"] = "Cat" - H.dna.features["tail_human"] = "Cat" - H.dna.features["ears"] = "Cat" - H.dna.features["mam_ears"] = "Cat" - H.dna.features["tail_lizard"] = "Cat" - H.dna.features["mam_tail"] = "Cat" - H.dna.features["mam_tail_animated"] = "Cat" - H.facial_hair_style = "Shaved" - H.verb_say = "mewls" - catshift = TRUE - playsound(get_turf(H), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) - to_chat(H, "You suddenly turn into a cat!") - catto = new(get_turf(H.loc)) - H.mind.transfer_to(catto) - catto.name = H.name - catto.desc = "A cute catto! They remind you of [H] somehow." - catto.color = "#[H.dna.features["mcolor"]]" - H.moveToNullspace() - -/datum/reagent/fermi/secretcatchem/on_mob_life(mob/living/carbon/H) - if(prob(5)) - playsound(get_turf(catto), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) - catto.say("lets out a meowrowr!*") - ..() - -/datum/reagent/fermi/secretcatchem/on_mob_delete(mob/living/carbon/H) - var/words = "Your body shifts back to normal." - H.forceMove(catto.loc) - catto.mind.transfer_to(H) - if(catshift == TRUE) - words += " ...But wait, are those ears and a tail?" - H.say("*wag")//force update sprites. - to_chat(H, "[words]") - qdel(catto) - -/datum/chemical_reaction/fermi/secretcatchem/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH) - var/mob/living/simple_animal/pet/cat/custom_cat/catto = new(get_turf(my_atom)) - var/list/seen = viewers(8, get_turf(my_atom)) - for(var/mob/M in seen) - to_chat(M, "The reaction suddenly gives out a meow, condensing into a chemcat!")//meow! - playsound(get_turf(my_atom), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) - catto.name = "FermiCat" - catto.desc = "A cute Fermichem cat, created by a lot of compicated and confusing chemistry!" - catto.color = "#770000" - my_atom.reagents.remove_any(10) diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index e4c8e1b3b2..06ca536eee 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -214,7 +214,7 @@ enthrallGender = E.creatorGender master = get_mob_by_key(enthrallID) if(M.ckey == enthrallID) - owner.remove_status_effect(src)//This shouldn't happen, but just in case + owner.remove_status_effect(src)//This shouldn't happen, but just in case, also it's not worth the overhead of giving someone themselves; they can't proc themselves as velvet removes them from the list. redirect_component = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed# RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/owner_hear) var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) //It's their brain! diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index 352f7f25ea..f748dd6a33 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -1381,8 +1381,10 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/fermiAcid/reaction_obj(obj/O, reac_volume) if(ismob(O.loc)) //handled in human acid_act() return + if((holder.pH > 5) || (volume < 0.1)) //Shouldn't happen, but just in case + return reac_volume = round(volume,0.1) - var/acidstr = (5-holder.pH) + var/acidstr = (5-holder.pH)*2 //(max is 10) O.acid_act(acidstr, volume) ..() @@ -1483,3 +1485,61 @@ Creating a chem with a low purity will make you permanently fall in love with so playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) holder.remove_reagent(src.id, src.volume) ..() + +//ReagentVars +//Turns you into a cute catto while it's in your system. +//If you manage to gamble perfectly, makes you a catgirl after you transform back. But really, you shouldn't end up with that with how random it is. +/datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem? + name = "secretcatchem" //an attempt at hiding it + id = "secretcatchem" + description = "An illegal and hidden chem that turns people into cats. It's said that it's so rare and unstable that having it means you've been blessed." + taste_description = "hairballs and cream" + color = "#ffc224" + var/catshift = FALSE + var/mob/living/simple_animal/pet/cat/custom_cat/catto = null + +/datum/reagent/fermi/secretcatchem/New() + name = "Catbalti[pick("a","u","e","y")]m [pick("apex", "prime", "meow")]" + +/datum/reagent/fermi/secretcatchem/on_mob_add(mob/living/carbon/human/H) + . = ..() + var/current_species = H.dna.species.type + var/datum/species/mutation = /datum/species/human/felinid + 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. + H.set_species(mutation) + H.gender = FEMALE + //exception(al) handler: + H.dna.features["mam_tail"] = "Cat" + H.dna.features["tail_human"] = "Cat" + H.dna.features["ears"] = "Cat" + H.dna.features["mam_ears"] = "Cat" + H.dna.features["tail_lizard"] = "Cat" + H.dna.features["mam_tail"] = "Cat" + H.dna.features["mam_tail_animated"] = "Cat" + H.facial_hair_style = "Shaved" + H.verb_say = "mewls" + catshift = TRUE + playsound(get_turf(H), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) + to_chat(H, "You suddenly turn into a cat!") + catto = new(get_turf(H.loc)) + H.mind.transfer_to(catto) + catto.name = H.name + catto.desc = "A cute catto! They remind you of [H] somehow." + catto.color = "#[H.dna.features["mcolor"]]" + H.moveToNullspace() + +/datum/reagent/fermi/secretcatchem/on_mob_life(mob/living/carbon/H) + if(prob(5)) + playsound(get_turf(catto), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) + catto.say("lets out a meowrowr!*") + ..() + +/datum/reagent/fermi/secretcatchem/on_mob_delete(mob/living/carbon/H) + var/words = "Your body shifts back to normal." + H.forceMove(catto.loc) + catto.mind.transfer_to(H) + if(catshift == TRUE) + words += " ...But wait, are those ears and a tail?" + H.say("*wag")//force update sprites. + to_chat(H, "[words]") + qdel(catto) diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index b3662e5703..b9383ea430 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -39,18 +39,19 @@ message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot].") var/datum/reagents/R = new/datum/reagents(3000)//Hey, just in case. var/datum/effect_system/smoke_spread/chem/s = new() + R.my_atom = my_atom //Give the gas a fingerprint - for (var/datum/reagent/reagent in my_atom.reagents.reagent_list) //make gas for reagents + for (var/datum/reagent/reagent in my_atom.reagents.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding R.add_reagent(reagent.id, reagent.volume/3) //Seems fine? I think I fixed the infinite explosion bug. if (reagent.purity < 0.6) ImpureTot = (ImpureTot + (1-reagent.purity)) / 2 if(pH < 4) //if acidic, make acid spray - R.add_reagent("fermiAcid", ((volume/3)/pH)) + R.add_reagent("fermiAcid", (volume/3)) if(R.reagent_list) message_admins("gas") - s.set_up(R, (volume/10), T) + s.set_up(R, (volume/10), my_atom) s.start() if (pH > 10) //if alkaline, small explosion. @@ -403,3 +404,60 @@ /datum/chemical_reaction/fermi/fermiBBuffer/FermiFinish(datum/reagents/holder, var/atom/my_atom) //might need this var/datum/reagent/fermi/fermiBBuffer/Fb = locate(/datum/reagent/fermi/fermiBBuffer) in my_atom.reagents.reagent_list Fb.data = 11 + +//secretcatchemcode, shh!! Of couse I hide it amongst cats. Also, yes, I expect you, Mr.Maintaner to read and review this, dispite it being hidden and not mentioned in the changelogs. +//I'm not trying to be sneaky, I'm trying to keep it a secret! +//I don't know how to do hidden chems like Aurora +//ChemReactionVars: +/datum/chemical_reaction/fermi/secretcatchem //DONE + name = "secretcatchem" + id = "secretcatchem" + results = list("secretcatchem" = 0.5) + required_reagents = list("stable_plasma" = 0.1, "sugar" = 0.1, "cream" = 0.1, "blood" = 0.1, "slimejelly" = 0.1)//Yes this will make a plushie if you don't lucky guess. It'll eat all your reagents too. + required_catalysts = list("felinidmutationtoxin" = 1) + required_temp = 600 + mix_message = "the reaction gives off a meow!" + mix_sound = "modular_citadel/sound/voice/merowr.ogg" + //FermiChem vars: + OptimalTempMin = 650 + OptimalpHMin = 0 + ReactpHLim = 2 + CurveSharpT = 0 + CurveSharppH = 0 + ThermicConstant = 0 + HIonRelease = 0 + RateUpLim = 0.1 + FermiChem = TRUE + FermiExplode = FALSE + PurityMin = 0.2 + +/datum/chemical_reaction/fermi/secretcatchem/New() + //rand doesn't seem to work with n^-e + OptimalTempMin += rand(-100, 100) + OptimalTempMax = (OptimalTempMin+rand(0, 200)) + ExplodeTemp = (OptimalTempMax+rand(0, 200)) + OptimalpHMin += rand(1, 10) + OptimalpHMax = (OptimalpHMin + rand(1, 5)) + ReactpHLim += rand(-2, 2) + CurveSharpT += (rand(1, 500)/100) + CurveSharppH += (rand(1, 500)/100) + ThermicConstant += rand(-50, 50) + HIonRelease += (rand(-25, 25)/100) + RateUpLim += (rand(1, 1000)/100) + PurityMin += (rand(-1, 1)/10) + var/additions = list("aluminium", "silver", "gold", "plasma", "silicon", "bluespace", "uranium", "milk") + required_reagents[pick(additions)] = rand(1, 5)//weird + +/datum/chemical_reaction/fermi/secretcatchem/FermiFinish(datum/reagents/holder, var/atom/my_atom)//Strange how this doesn't work but the other does. + SSblackbox.record_feedback("tally", "catgirlium")//log + +/datum/chemical_reaction/fermi/secretcatchem/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH) + var/mob/living/simple_animal/pet/cat/custom_cat/catto = new(get_turf(my_atom)) + var/list/seen = viewers(8, get_turf(my_atom)) + for(var/mob/M in seen) + to_chat(M, "The reaction suddenly gives out a meow, condensing into a chemcat!")//meow! + playsound(get_turf(my_atom), 'modular_citadel/sound/voice/merowr.ogg', 50, 1, -1) + catto.name = "FermiCat" + catto.desc = "A cute Fermichem cat, created by a lot of compicated and confusing chemistry!" + catto.color = "#770000" + my_atom.reagents.remove_any(10)