FermiChem? More like, FermiFixes!

This commit is contained in:
Fermi
2019-05-21 20:08:46 +01:00
parent 71088eace9
commit be4f188589
11 changed files with 167 additions and 54 deletions

View File

@@ -29,6 +29,7 @@ GLOBAL_LIST_INIT(freqtospan, list(
send_speech(message, 7, src, , spans, message_language=language)
/atom/movable/proc/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
//message_admins("Pre: [message], [speaker], [message_language], [raw_message], [radio_freq], [spans], [message_mode]")
SEND_SIGNAL(src, COMSIG_MOVABLE_HEAR, message, speaker, message_language, raw_message, radio_freq, spans, message_mode)
/atom/movable/proc/can_speak()
@@ -97,7 +98,7 @@ GLOBAL_LIST_INIT(freqtospan, list(
var/spanned = attach_spans(input, spans)
return "[say_mod(input, message_mode)][spanned ? ", \"[spanned]\"" : ""]"
// Citadel edit [spanned ? ", \"[spanned]\"" : ""]"
/atom/movable/proc/lang_treat(atom/movable/speaker, datum/language/language, raw_message, list/spans, message_mode)
if(has_language(language))
var/atom/movable/AM = speaker.GetSource()

View File

@@ -6,7 +6,7 @@
var/obj/item/organ/vocal_cords/Vc = getorganslot(ORGAN_SLOT_VOICE)
if(Vc)
if(Vc.name == "velvet chords" )
..()
//..()
velvetspeech(message, src)
var/obj/item/organ/tongue/T = getorganslot(ORGAN_SLOT_TONGUE)

View File

@@ -56,3 +56,39 @@ Where what the reactions do, the code that sets what they do.
~\ss13\Citadel-Station-13\tgui\src\interfaces~
This contains the 4 scripts for generation of the UI for operation of the various chemical equipments.
//Mixables
var/static/regex/enthral_words = regex("relax|obey|love|serve|docile|so easy|ara ara") //enthral_words works
var/static/regex/reward_words = regex("good boy|good girl|good pet") //reward_words works
var/static/regex/punish_words = regex("bad boy|bad girl|bad pet") ////punish_words works
//phase 0
var/static/regex/saymyname_words = regex("say my name|who am i|whoami") //works I think
var/static/regex/wakeup_words = regex("revert|awaken|snap") //works
//phase1
var/static/regex/silence_words = regex("shut up|silence|be silent|ssh|quiet|hush") //works
var/static/regex/antiresist_words = regex("unable to resist|give in")//useful if you think your target is resisting a lot
var/static/regex/resist_words = regex("resist|snap out of it|fight")//useful if two enthrallers are fighting
var/static/regex/forget_words = regex("forget|muddled|awake and forget")
var/static/regex/attract_words = regex("come here|come to me|get over here|attract")
//phase 2
var/static/regex/orgasm_words = regex("cum|orgasm|climax|squirt|heyo") //wah, lewd
var/static/regex/awoo_words = regex("howl|awoo|bark")
var/static/regex/nya_words = regex("nya|meow|mewl")
var/static/regex/sleep_words = regex("sleep|slumber|rest")
var/static/regex/strip_words = regex("strip|derobe|nude")
var/static/regex/walk_words = regex("slow down")
var/static/regex/run_words = regex("run")
var/static/regex/knockdown_words = regex("drop|fall|trip|knockdown|kneel")
//phase 3
var/static/regex/statecustom_words = regex("state triggers|state your triggers")
var/static/regex/custom_words = regex("new trigger|listen to me")
var/static/regex/custom_words_words = regex("speak|echo|shock|cum|kneel|strip|trance")//What a descriptive name!
var/static/regex/objective_words = regex("new objective|obey this command|unable to resist|compulsed")
var/static/regex/heal_words = regex("live|heal|survive|mend|life|pets never die")
var/static/regex/stun_words = regex("stop|wait|stand still|hold on|halt")
var/static/regex/hallucinate_words = regex("trip balls|hallucinate")
var/static/regex/hot_words = regex("heat|hot|hell")
var/static/regex/cold_words = regex("cold|cool down|chill|freeze")
var/static/regex/getup_words = regex("get up")
var/static/regex/pacify_words = regex("more and more docile|complaisant|friendly|pacifist")
var/static/regex/charge_words = regex("charge|oorah|attack")

View File

@@ -459,7 +459,7 @@ im
var/datum/chemical_reaction/C = selected_reaction
if (C.FermiChem == TRUE && !continue_reacting)
//message_admins("FermiChem Proc'd")
message_admins("FermiChem Proc'd")
for(var/P in selected_reaction.results)
targetVol = cached_results[P]*multiplier
@@ -555,6 +555,8 @@ im
//var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
C.FermiFinish(src, my_atom, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] [selected_reaction.mix_message]</span>")
return
for(var/P in cached_results)
targetVol = cached_results[P]*multiplier
@@ -580,6 +582,8 @@ im
//var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
C.FermiFinish(src, my_atom, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] [selected_reaction.mix_message]</span>")
return
else
STOP_PROCESSING(SSprocessing, src)
@@ -592,6 +596,8 @@ im
//var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
C.FermiFinish(src, my_atom, multiplier)
//C.on_reaction(src, multiplier, special_react_result)
for(var/mob/M in seen)
to_chat(M, "<span class='notice'>[iconhtml] [selected_reaction.mix_message]</span>")
return
//handle_reactions()
@@ -901,6 +907,8 @@ im
if(data)
R.data = data
R.on_new(data)
if(R.addProc == TRUE)
R.on_new()
if(istype(D, /datum/reagent/fermi))//Is this a fermichem?
var/datum/reagent/fermi/Ferm = D //It's Fermi time!
Ferm.FermiNew(my_atom) //Seriously what is "data" ????

View File

@@ -35,6 +35,7 @@
var/self_consuming = FALSE
//Fermichem vars:
var/purity = 1
var/addProc = FALSE //When this reagent is added to a new beaker, it does something.
//var/ImpureChem = "toxin"
var/loc = null //Should be the creation location!
var/pH = 7

View File

@@ -23,6 +23,7 @@
color = "#792300" // rgb: 121, 35, 0
toxpwr = 2.5
taste_description = "mushroom"
pH = 13
/datum/reagent/toxin/mutagen
name = "Unstable mutagen"
@@ -32,6 +33,7 @@
toxpwr = 0
taste_description = "slime"
taste_mult = 0.9
pH = 2
/datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume)
if(!..())
@@ -61,6 +63,7 @@
taste_mult = 1.5
color = "#8228A0"
toxpwr = 3
pH = 4
/datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C)
if(holder.has_reagent("epinephrine"))
@@ -93,6 +96,7 @@
color = "#7DC3A0"
toxpwr = 0
taste_description = "acid"
pH = 1.2
/datum/reagent/toxin/lexorin/on_mob_life(mob/living/carbon/C)
. = TRUE
@@ -115,6 +119,7 @@
toxpwr = 0
taste_description = "slime"
taste_mult = 1.3
pH = 10
/datum/reagent/toxin/slimejelly/on_mob_life(mob/living/carbon/M)
if(prob(10))
@@ -133,6 +138,7 @@
color = "#CF3600" // rgb: 207, 54, 0
toxpwr = 0
taste_description = "mint"
pH = 8
/datum/reagent/toxin/minttoxin/on_mob_life(mob/living/carbon/M)
if(M.has_trait(TRAIT_FAT))
@@ -146,6 +152,7 @@
color = "#003333" // rgb: 0, 51, 51
toxpwr = 2
taste_description = "fish"
pH = 12
/datum/reagent/toxin/zombiepowder
name = "Zombie Powder"
@@ -155,6 +162,7 @@
color = "#669900" // rgb: 102, 153, 0
toxpwr = 0.5
taste_description = "death"
pH = 13
/datum/reagent/toxin/zombiepowder/on_mob_add(mob/living/L)
..()
@@ -177,6 +185,7 @@
color = "#664700" // rgb: 102, 71, 0
toxpwr = 0.8
taste_description = "death"
pH = 14.5
/datum/reagent/toxin/ghoulpowder/on_mob_add(mob/living/L)
..()
@@ -198,6 +207,7 @@
color = "#B31008" // rgb: 139, 166, 233
toxpwr = 0
taste_description = "sourness"
pH = 11
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M)
M.hallucination += 5
@@ -210,6 +220,7 @@
color = "#49002E" // rgb: 73, 0, 46
toxpwr = 1
taste_mult = 1
pH = 2
/datum/reagent/toxin/plantbgone/reaction_obj(obj/O, reac_volume)
if(istype(O, /obj/structure/alien/weeds))
@@ -234,6 +245,7 @@
id = "weedkiller"
description = "A harmful toxic mixture to kill weeds. Do not ingest!"
color = "#4B004B" // rgb: 75, 0, 75
pH = 3
/datum/reagent/toxin/pestkiller
name = "Pest Killer"
@@ -241,6 +253,7 @@
description = "A harmful toxic mixture to kill pests. Do not ingest!"
color = "#4B004B" // rgb: 75, 0, 75
toxpwr = 1
pH = 3.2
/datum/reagent/toxin/pestkiller/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
..()
@@ -254,6 +267,7 @@
description = "A natural toxin produced by blob spores that inhibits vision when ingested."
color = "#9ACD32"
toxpwr = 1
pH = 11
/datum/reagent/toxin/spore/on_mob_life(mob/living/carbon/C)
C.damageoverlaytemp = 60
@@ -268,6 +282,7 @@
color = "#9ACD32"
toxpwr = 0.5
taste_description = "burning"
pH = 13
/datum/reagent/toxin/spore_burning/on_mob_life(mob/living/carbon/M)
M.adjust_fire_stacks(2)
@@ -282,6 +297,7 @@
color = "#000067" // rgb: 0, 0, 103
toxpwr = 0
metabolization_rate = 1.5 * REAGENTS_METABOLISM
pH = 11
/datum/reagent/toxin/chloralhydrate/on_mob_life(mob/living/carbon/M)
switch(current_cycle)
@@ -325,6 +341,7 @@
glass_icon_state = "beerglass"
glass_name = "glass of beer"
glass_desc = "A freezing pint of beer."
pH = 2
/datum/reagent/toxin/fakebeer/on_mob_life(mob/living/carbon/M)
switch(current_cycle)
@@ -342,6 +359,7 @@
reagent_state = SOLID
color = "#5B2E0D" // rgb: 91, 46, 13
toxpwr = 0.5
pH = 4.2
/datum/reagent/toxin/teapowder
name = "Ground Tea Leaves"
@@ -350,6 +368,7 @@
reagent_state = SOLID
color = "#7F8400" // rgb: 127, 132, 0
toxpwr = 0.5
pH = 4.9
/datum/reagent/toxin/mutetoxin //the new zombie powder.
name = "Mute Toxin"
@@ -358,6 +377,7 @@
color = "#F0F8FF" // rgb: 240, 248, 255
toxpwr = 0
taste_description = "silence"
pH = 12.2
/datum/reagent/toxin/mutetoxin/on_mob_life(mob/living/carbon/M)
M.silent = max(M.silent, 3)

View File

@@ -827,7 +827,7 @@
//CALLBACKS ARE USED FOR MESSAGES BECAUSE SAY IS HANDLED AFTER THE PROCESSING.
//Tier 1
//ENTHRAL mixable
//ENTHRAL mixable (works I think)
if(findtext(message, enthral_words))
for(var/V in listeners)
var/mob/living/L = V
@@ -838,9 +838,11 @@
E.enthrallTally += (power_multiplier*(((length(message))/200) + 1)) //encourage players to say more than one word.
else
E.enthrallTally += power_multiplier*1.25
if(L.canbearoused)
addtimer(CALLBACK(L, .proc/to_chat, "<span class='nicegreen'>[E.master] is so nice to listen to.</b></span>"), 5)
E.cooldown += 1
//REWARD mixable
//REWARD mixable works
if(findtext(message, reward_words))
for(var/V in listeners)
var/mob/living/L = V
@@ -850,12 +852,14 @@
if (L.canbearoused)
//E.resistanceTally -= 1
L.adjustArousalLoss(1*power_multiplier)
addtimer(CALLBACK(L, .proc/to_chat, "<span class='nicegreen'>[E.enthrallGender] has praised me!!</b></span>"), 5)
else
E.resistanceTally /= 2*power_multiplier
addtimer(CALLBACK(L, .proc/to_chat, "<span class='nicegreen'>I've been praised for doing a good job!</b></span>"), 5)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallpraise", /datum/mood_event/enthrallpraise)
E.cooldown += 1
//PUNISH mixable
//PUNISH mixable works
else if(findtext(message, punish_words))
for(var/V in listeners)
var/mob/living/L = V
@@ -865,19 +869,24 @@
if (L.canbearoused)
E.resistanceTally /= 1*power_multiplier
L.adjustArousalLoss(-2*power_multiplier)
addtimer(CALLBACK(L, .proc/to_chat, "<span class='warning'>I've let [E.enthrallGender] down...</b></span>"), 5)
else
E.resistanceTally /= 3*power_multiplier //asexuals are masochists apparently (not seriously)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallscold", /datum/mood_event/enthrallscold)
addtimer(CALLBACK(L, .proc/to_chat, "<span class='warning'>I've failed [E.master]...</b></span>"), 5)
SEND_SIGNAL(L, COMSIG_ADD_MOOD_tEVENT, "enthrallscold", /datum/mood_event/enthrallscold)
E.cooldown += 1
//teir 0
//SAY MY NAME
//SAY MY NAME works
if((findtext(message, saymyname_words)))
for(var/V in listeners)
var/mob/living/carbon/C = V
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
C.remove_trait(TRAIT_MUTE, "enthrall")
addtimer(CALLBACK(C, /atom/movable/proc/say, "Master"), 5)//When I figure out how to do genedered names put them here
if(C.canbearoused)
addtimer(CALLBACK(C, /atom/movable/proc/say, "[E.enthrallGender]"), 5)
else
addtimer(CALLBACK(C, /atom/movable/proc/say, "My director."), 5)
//WAKE UP
else if((findtext(message, wakeup_words)))
for(var/V in listeners)
@@ -888,8 +897,11 @@
if(0)
E.phase = 3
E.status = null
addtimer(CALLBACK(L, /proc/to_chat, "<span class='warning'>The snapping of your Master's fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>"), 5)
//to_chat(L, )
if(C.canbearoused)
addtimer(CALLBACK(L, .proc/to_chat, "<span class='big warning'>The snapping of your [E.enthrallGender]'s fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>"), 5)
else
addtimer(CALLBACK(L, .proc/to_chat, "<span class='big warning'>The snapping of [E.master]'s fingers brings you back to being under their command.</b></span>"), 5)
//to_chat(L, )
//tier 1
@@ -941,6 +953,10 @@
if(3)
E.phase = 0
E.cooldown = 0
if(C.canbearoused)
addtimer(CALLBACK(L, .proc/to_chat, "<span class='big warning'>You revert to yourself before being enthralled by your [E.enthrallGender], with no memory of what happened.</b></span>"), 5)
else
addtimer(CALLBACK(L, .proc/to_chat, "<span class='big warning'>You revert to who you were before, with no memory of what happened with [E.master].</b></span>"), 5)
//ATTRACT
else if((findtext(message, attract_words)))
@@ -1052,7 +1068,7 @@
//tier3
//STATE TRIGGERS
else if((findtext(message, statecustom_words)))
else if((findtext(message, statecustom_words)))//doesn't work
for(var/V in listeners)
var/speaktrigger = ""
var/mob/living/L = V

View File

@@ -31,7 +31,7 @@
//message_admins("SDGF ticking")
if(owner.stat == DEAD)
//message_admins("SGDF status swapping")
if(fermi_Clone && fermi_Clone.stat != DEAD)
if((fermi_Clone && fermi_Clone.stat != DEAD) || (fermi_Clone == null))
if(owner.mind)
owner.mind.transfer_to(fermi_Clone)
owner.visible_message("<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>")
@@ -44,6 +44,8 @@
/datum/status_effect/chem/BElarger
id = "BElarger"
alert_type = null
var/moveCalc = 1
var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0)
//var/list/items = list()
//var/items = o.get_contents()
@@ -68,7 +70,7 @@
var/obj/item/organ/genital/breasts/B = o.getorganslot("breasts")
if(!B)
o.remove_movespeed_modifier("megamilk")
o.next_move_modifier = 1
o.next_move_modifier /= moveCalc
owner.remove_status_effect(src)
var/items = o.get_contents()
for(var/obj/item/W in items)
@@ -76,24 +78,28 @@
o.dropItemToGround(W, TRUE)
playsound(o.loc, 'sound/items/poster_ripped.ogg', 50, 1)
to_chat(owner, "<span class='warning'>Your enormous breasts are way too large to fit anything over them!</b></span>")
switch(round(B.cached_size))
if(9)
if (!(B.breast_sizes[B.prev_size] == B.size))
to_chat(o, "<span class='notice'>Your expansive chest has become a more managable size, liberating your movements.</b></span>")
o.remove_movespeed_modifier("megamilk")
o.next_move_modifier = 1
if(10 to INFINITY)
if (!(B.breast_sizes[B.prev_size] == B.size))
to_chat(H, "<span class='warning'>Your indulgent busom is so substantial, it's affecting your movements!</b></span>")
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = ((round(B.cached_size) - 8))/3)
o.next_move_modifier = (round(B.cached_size) - 8)/3
if(prob(5))
to_chat(H, "<span class='notice'>Your back is feeling a little sore.</b></span>")
..()
moveCalc = ((round(B.cached_size) - 9))/5)
if (breast_values[size] > breast_values[prev_size])
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.next_move_modifier *= moveCalc
else if (breast_values[size] < breast_values[prev_size])
o.add_movespeed_modifier("megamilk", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = moveCalc)
o.next_move_modifier /= moveCalc
if(round(B.cached_size) < 16)
switch(round(B.cached_size))
if(9)
if (!(B.breast_sizes[B.prev_size] == B.size))
to_chat(o, "<span class='notice'>Your expansive chest has become a more managable size, liberating your movements.</b></span>")
if(10 to INFINITY)
if (!(B.breast_sizes[B.prev_size] == B.size))
to_chat(H, "<span class='warning'>Your indulgent busom is so substantial, it's affecting your movements!</b></span>")
if(prob(5))
to_chat(H, "<span class='notice'>Your back is feeling a little sore.</b></span>")
..()
/datum/status_effect/chem/BElarger/on_remove(mob/living/carbon/M)
owner.remove_movespeed_modifier("megamilk")
owner.next_move_modifier = 1
owner.next_move_modifier /= moveCalc
/datum/status_effect/chem/PElarger
@@ -214,8 +220,8 @@
enthrallTally += phase
else
if (phase < 3 && phase != 0)
deltaResist += 2//If you've no chem, then you break out quickly
if(prob(20))
deltaResist += 3//If you've no chem, then you break out quickly
if(prob(10))
to_chat(owner, "<span class='notice'><i>Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.</i></span>")
if (mental_capacity <= 500 || phase == 4)
if (owner.reagents.has_reagent("mannitol"))
@@ -228,6 +234,8 @@
resistanceTally += 5
if(prob(10))
to_chat(owner, "<span class='notice'><i>You feel lucidity returning to your mind as the mindshield buzzes, attempting to return your brain to normal function.</i></span>")
if(phase == 4)
mental_capacity += 5
//phase specific events
switch(phase)
@@ -251,7 +259,8 @@
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))
to_chat(owner, "<span class='small hypnophrase'><i>[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].</i></span>")
if(owner.canbearoused)
to_chat(owner, "<span class='small hypnophrase'><i>[pick("It feels so good to listen to [master].", "You can't keep your eyes off [master].", "[master]'s voice is making you feel so sleepy.", "You feel so comfortable with [master]", "[master] is so dominant, it feels right to obey them.")].</i></span>")
if (2) //partially enthralled
if (enthrallTally > 150)
phase += 1
@@ -267,15 +276,17 @@
to_chat(owner, "<span class='notice'><i>You manage to shake some of the entrancement 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))
to_chat(owner, "<span class='hypnophrase'><i>[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if(owner.canbearoused)
to_chat(owner, "<span class='hypnophrase'><i>[pick("It feels so good to listen to [enthrallGender].", "You can't keep your eyes off [enthrallGender].", "[enthrallGender]'s voice is making you feel so sleepy.", "You feel so comfortable with [enthrallGender]", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if (3)//fully entranced
if (resistanceTally >= 200 && withdrawalTick >= 150)
enthrallTally = 0
phase -= 1
resistanceTally = 0
to_chat(owner, "<span class='notice'><i>The separation from you [enthrallGender] sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.</i></span>")
if(prob(3))
to_chat(owner, "<span class='hypnophrase'><i>[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if(prob(2))
if(owner.canbearoused)
to_chat(owner, "<span class='notice'><i>[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].</i></span>")
if (4) //mindbroken
if (mental_capacity >= 499 || owner.getBrainLoss() >=20 || !owner.reagents.has_reagent("MKUltra"))
phase = 2
@@ -454,9 +465,11 @@
*/
//Doesn't work
/datum/status_effect/chem/enthrall/proc/owner_hear(message = message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
/datum/status_effect/chem/enthrall/proc/owner_hear(var/hearer, message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
//message_admins("post: hear:[hearer], msg:[message], spk:[speaker], lng:[message_language], raw:[raw_message], freq:[radio_freq], spen:[spans], mod:[message_mode]")
var/mob/living/carbon/C = owner
//message_admins("[C] heard something!")
raw_message = lowertext(raw_message)
for (var/trigger in customTriggers)
//cached_trigger = lowertext(trigger)
message_admins("[C] heard something: [message] vs [trigger] vs [raw_message]")
@@ -497,7 +510,7 @@
C.Knockdown(20)
//strip (some) clothes
else if (customTriggers[trigger] == "strip")//This wasn't meant to just be a lewd thing oops
else if (lowertext(customTriggers[trigger]) == "strip")//This wasn't meant to just be a lewd thing oops
var/mob/living/carbon/human/o = owner
var/items = o.get_contents()
for(var/obj/item/W in items)
@@ -506,7 +519,7 @@
C.visible_message("<span class='notice'><i>You feel compelled to strip your clothes.</i></span>")
//trance
else if (customTriggers[trigger] == "trance")
else if (lowertext(customTriggers[trigger]) == "trance")
var/mob/living/carbon/human/o = owner
o.apply_status_effect(/datum/status_effect/trance, 200, TRUE)

View File

@@ -6,9 +6,9 @@
zone = "chest"
slot = "breasts"
w_class = 3
size = BREASTS_SIZE_DEF
var/cached_size = null//for enlargement
var/prev_size //For flavour texts
size = BREASTS_SIZE_DEF //SHOULD BE A LETTER
var/cached_size = null//for enlargement SHOULD BE A NUMBER
var/prev_size //For flavour texts SHOULD BE A LETTER
var/breast_sizes = list ("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "huge", "flat")
var/breast_values = list ("a" = 1, "b" = 2, "c" = 3, "d" = 4, "e" = 5, "f" = 6, "g" = 7, "h" = 8, "i" = 9, "j" = 10, "k" = 11, "l" = 12, "m" = 13, "n" = 14, "o" = 15, "huge" = 16, "flat" = 0)
var/statuscheck = FALSE

View File

@@ -614,7 +614,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
overdose_threshold = 12
metabolization_rate = 0.5
ImpureChem = "BEsmaller" //If you make an inpure chem, it stalls growth
InverseChemVal = 0.25
InverseChemVal = 0.3
InverseChem = "BEsmaller" //At really impure vols, it just becomes 100% inverse
/datum/reagent/fermi/BElarger/on_mob_add(mob/living/carbon/M)
@@ -622,6 +622,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
var/mob/living/carbon/human/H = M
var/obj/item/organ/genital/breasts/B = H.getorganslot("breasts")
if(!B)
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
@@ -721,7 +722,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
overdose_threshold = 12 //ODing makes you male and removes female genitals
metabolization_rate = 0.5
ImpureChem = "PEsmaller" //If you make an inpure chem, it stalls growth
InverseChemVal = 0.25
InverseChemVal = 0.3
InverseChem = "PEsmaller" //At really impure vols, it just becomes 100% inverse
//var/mob/living/carbon/human/H
@@ -1104,7 +1105,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
. = ..()
if(!creatorID)
CRASH("Something went wrong in enthral creation")
message_admins("Something went wrong in enthral creation THIS SHOULD NOT APPEAR")
return
message_admins("key: [M.ckey] vs [creatorID], ")
if(purity < 0.5)//Impure chems don't function as you expect
return
@@ -1128,8 +1130,6 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
if (M.ckey == creatorID && creatorName == M.real_name)
return
if(purity < 0.5)//Placeholder for now. I'd like to get this done.
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks it, they fall in love randomly. If someone else drinks it, the creator falls in love with them.
if(M.has_status_effect(STATUS_EFFECT_INLOVE))
@@ -1151,17 +1151,34 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
M.reagents.remove_reagent(src.id, src.volume)
FallInLove(C, M)
return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it does nothing.
return
var/datum/status_effect/chem/enthrall/E = M.has_status_effect(/datum/status_effect/chem/enthrall)//If purity is over 5, works as intended
if(!E)
M.reagents.remove_reagent(src.id, 10)
M.apply_status_effect(/datum/status_effect/chem/enthrall)
CRASH("No enthrall status found in [M]!")
message_admins("No enthrall status found in [M]!")
E.enthrallTally += 1
M.adjustBrainLoss(0.1)
if(prob(50))
M.adjustBrainLoss(0.1)//Honestly this could be removed, in testing it made everyone brain damaged, but on the other hand, we were chugging tons of it.
..()
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I have no idea what happens if you OD yourself honestly.
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//I have no idea what happens if you OD yourself honestly. I made it so the creator is set to gain the status for someone random.
. = ..()
if (M.ckey == creatorID && creatorName == M.real_name)//If the creator drinks 150u, then you get the status for someone random (They don't have the vocal chords though, so it's limited.)
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
for(var/victim in seen)
if((victim != mob/living/carbon/M) || (victim == M))//as much as I want you to fall for beepsky, he doesn't have a ckey
if(!victim.ckey)
seen = seen - victim
var/chosen = pick(seen)
creatorID = chosen.ckey
if (chosen.gender == "female")
creatorGender = "Mistress"
else
creatorGender = "Master"
creatorName = chosen.real_name
creator = get_mob_by_key(creatorID)
M.add_trait(TRAIT_PACIFISM, "MKUltra")
var/datum/status_effect/chem/enthrall/E
if (!M.has_status_effect(/datum/status_effect/chem/enthrall))
@@ -1180,7 +1197,7 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
E.customTriggers = list()
/datum/reagent/fermi/enthrall/overdose_process(mob/living/carbon/M)
M.adjustBrainLoss(0.2)
M.adjustBrainLoss(0.1)//should be 15 in total
..()
//Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system.
@@ -1447,7 +1464,8 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
name = "Fermis Test Reagent"
id = "fermiTest"
description = "You should be really careful with this...! Also, how did you get this?"
data = list("Big bang" = 1, "please work" = 2)
//data = list("Big bang" = 1, "please work" = 2)
addProc = TRUE
/datum/reagent/fermi/fermiTest/on_new()
..()

View File

@@ -194,7 +194,7 @@
name = "Astrogen"
id = "astral"
results = list("astral" = 3)
required_reagents = list("eigenstasium" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5)
required_reagents = list("eigenstate" = 1, "plasma" = 1, "synaptizine" = 1, "aluminium" = 5)
//FermiChem vars:
OptimalTempMin = 200
OptimalTempMax = 800