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

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