More fixed upon the last!
This commit is contained in:
@@ -902,7 +902,7 @@ im
|
||||
my_atom.on_reagent_change(ADD_REAGENT)
|
||||
//if(R.FermiChem == TRUE)
|
||||
// R.on_mob_add(my_atom)
|
||||
R.on_merge(data, amount)
|
||||
R.on_merge(data, amount, my_atom, other_purity)
|
||||
if(!no_react)
|
||||
handle_reactions()
|
||||
|
||||
@@ -920,7 +920,7 @@ im
|
||||
R.data = data
|
||||
R.on_new(data)
|
||||
if(R.addProc == TRUE)
|
||||
R.on_new()
|
||||
R.on_new(my_atom)
|
||||
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" ????
|
||||
|
||||
@@ -805,11 +805,13 @@
|
||||
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/liedown_words = regex("lie down") //TO ADD
|
||||
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/recognise_words = regex("recognise me|i'm back|did you miss me?")
|
||||
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")
|
||||
@@ -839,7 +841,7 @@
|
||||
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)
|
||||
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 works
|
||||
@@ -852,10 +854,10 @@
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
||||
@@ -869,10 +871,10 @@
|
||||
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)
|
||||
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)
|
||||
addtimer(CALLBACK(L, .proc/to_chat, "<span class='warning'>I've failed [E.master]...</b></span>"), 5)
|
||||
addtimer(CALLBACK(L, .proc.to_chat, "<span class='warning'>I've failed [E.master]...</b></span>"), 5)
|
||||
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "enthrallscold", /datum/mood_event/enthrallscold)
|
||||
E.cooldown += 1
|
||||
|
||||
@@ -898,9 +900,9 @@
|
||||
E.phase = 3
|
||||
E.status = null
|
||||
if(L.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)
|
||||
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)
|
||||
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, )
|
||||
|
||||
|
||||
@@ -954,9 +956,9 @@
|
||||
E.phase = 0
|
||||
E.cooldown = 0
|
||||
if(C.canbearoused)
|
||||
addtimer(CALLBACK(C, .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)
|
||||
addtimer(CALLBACK(C, .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(C, .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)
|
||||
addtimer(CALLBACK(C, .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)))
|
||||
@@ -1071,12 +1073,15 @@
|
||||
else if((findtext(message, statecustom_words)))//doesn't work
|
||||
for(var/V in listeners)
|
||||
var/speaktrigger = ""
|
||||
var/mob/living/L = V
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)//i.e. if it's not empty
|
||||
var/mob/living/carbon/C = V
|
||||
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)//i.e. if it's not empty
|
||||
for (var/trigger in E.customTriggers)
|
||||
speaktrigger = "[trigger]\n"
|
||||
speaktrigger += "[trigger], "
|
||||
if(!speaktrigger == "")
|
||||
L.say(speaktrigger)
|
||||
C.add_trait(TRAIT_DEAF, "Triggers") //So you don't trigger yourself!
|
||||
addtimer(CALLBACK(C, /atom/movable/proc/say, "[speaktrigger]"), 5)
|
||||
C.remove_trait(TRAIT_DEAF, "Triggers")
|
||||
|
||||
|
||||
//CUSTOM TRIGGERS
|
||||
else if((findtext(message, custom_words)))
|
||||
@@ -1132,6 +1137,19 @@
|
||||
to_chat(user, "<span class='warning'>Your pet looks at you with a vacant blasé expression, you don't think you can program anything else into them</b></span>")
|
||||
|
||||
|
||||
//RECOGNISE
|
||||
else if((findtext(message, recognise_words)))
|
||||
for(var/V in listeners)
|
||||
var/mob/living/carbon/human/H = V
|
||||
var/datum/status_effect/chem/enthrall/E = H.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
if(E.phase > 1)
|
||||
if(user.ckey == E.enthrallID && user.real_name == E.master.real_name)
|
||||
E.master = user
|
||||
if(H.canbearoused)
|
||||
addtimer(CALLBACK(H, .proc.to_chat, "<span class='nicegreen'>You hear the words of your [E.enthrallID] again!! They're back!!</b></span>"), 5)
|
||||
else
|
||||
addtimer(CALLBACK(H, .proc.to_chat, "<span class='nicegreen'>You recognise the words of [user], and comply with their orders oncemore.</b></span>"), 5)//It's a bit like a job, It's a living.
|
||||
|
||||
//I dunno how to do state objectives without them revealing they're an antag
|
||||
|
||||
//HEAL (maybe make this nap instead?)
|
||||
@@ -1146,7 +1164,7 @@
|
||||
E.cooldown += 5
|
||||
|
||||
//STUN
|
||||
if(findtext(message, stun_words))
|
||||
else if(findtext(message, stun_words))
|
||||
for(var/V in listeners)
|
||||
var/mob/living/L = V
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
|
||||
@@ -463,7 +463,7 @@
|
||||
else
|
||||
. = ..()
|
||||
*/
|
||||
//Doesn't work
|
||||
//WORKS!! AAAAA
|
||||
|
||||
/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]")
|
||||
@@ -471,22 +471,22 @@
|
||||
//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]")
|
||||
if ("[trigger]" == raw_message)//if trigger1 is the message
|
||||
var/cached_trigger = lowertext(trigger)
|
||||
//message_admins("[C] heard something: [message] vs [trigger] vs [raw_message]")
|
||||
if (findtext(raw_message, cached_trigger))//if trigger1 is the message
|
||||
message_admins("[C] has been triggered with [trigger]!")
|
||||
|
||||
//Speak (Forces player to talk)
|
||||
//Speak (Forces player to talk) works
|
||||
if (lowertext(customTriggers[trigger][1]) == "speak")//trigger2
|
||||
to_chat(C, "<span class='notice'><i>Your mouth moves on it's own, before you can even catch it. You find yourself fully believing in the validity of what you just said and don't think to question it.</i></span>")
|
||||
to_chat(C, "<span class='notice'><i>Your body moves on it's own before you can even catch it. You find yourself fully believing in the validity of what you just said and don't think to question it.</i></span>")
|
||||
(C.say(customTriggers[trigger][2]))//trigger3
|
||||
|
||||
|
||||
//Echo (repeats message!)
|
||||
//Echo (repeats message!) works
|
||||
else if (lowertext(customTriggers[trigger][1]) == "echo")//trigger2
|
||||
(to_chat(owner, "<span class='hypnophrase'><i>[customTriggers[trigger][2]]</i></span>"))//trigger3
|
||||
|
||||
//Shocking truth!
|
||||
//Shocking truth! works
|
||||
else if (lowertext(customTriggers[trigger]) == "shock")
|
||||
if (C.canbearoused)
|
||||
C.electrocute_act(10, src, 1, FALSE, FALSE, FALSE, TRUE)//I've no idea how strong this is
|
||||
@@ -495,7 +495,7 @@
|
||||
else
|
||||
C.electrocute_act(15, src, 1, FALSE, FALSE, FALSE, TRUE)//To make up for the lack of effect
|
||||
|
||||
//wah intensifies
|
||||
//wah intensifies wah-rks
|
||||
else if (lowertext(customTriggers[trigger]) == "cum")//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
if (C.canbearoused)
|
||||
if (C.getArousalLoss() > 80)
|
||||
@@ -507,7 +507,8 @@
|
||||
|
||||
//kneel (knockdown)
|
||||
else if (lowertext(customTriggers[trigger]) == "kneel")//as close to kneeling as you can get, I suppose.
|
||||
C.Knockdown(20)
|
||||
C.resting = 1
|
||||
C.lying = 1
|
||||
|
||||
//strip (some) clothes
|
||||
else if (lowertext(customTriggers[trigger]) == "strip")//This wasn't meant to just be a lewd thing oops
|
||||
@@ -516,7 +517,7 @@
|
||||
for(var/obj/item/W in items)
|
||||
if(W == o.w_uniform || W == o.wear_suit)
|
||||
o.dropItemToGround(W, TRUE)
|
||||
C.visible_message("<span class='notice'><i>You feel compelled to strip your clothes.</i></span>")
|
||||
to_chat(owner,"<span class='notice'><i>You feel compelled to strip your clothes.</i></span>")
|
||||
|
||||
//trance
|
||||
else if (lowertext(customTriggers[trigger]) == "trance")
|
||||
|
||||
@@ -56,23 +56,25 @@
|
||||
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
|
||||
return
|
||||
|
||||
/datum/reagent/fermi/on_merge(mob/living/carbon/M, amount, other_purity)
|
||||
//When merging two fermichems
|
||||
/datum/reagent/fermi/on_merge(data, amount, mob/living/carbon/M, purity)
|
||||
. = ..()
|
||||
message_admins("purity of chem is [purity]")
|
||||
if(!M)
|
||||
return
|
||||
message_admins("purity of chem is [purity]")
|
||||
if(other_purity < 0)
|
||||
if (purity < 0)
|
||||
CRASH("Purity below 0 for chem: [src.id], Please let Fermis Know!")
|
||||
if (other_purity == 1 || src.DoNotSplit == TRUE)
|
||||
if (purity == 1 || src.DoNotSplit == TRUE)
|
||||
return
|
||||
else if (src.InverseChemVal > other_purity)
|
||||
else if (src.InverseChemVal > purity)
|
||||
M.reagents.remove_reagent(src.id, amount, FALSE)
|
||||
M.reagents.add_reagent(src.InverseChem, amount, FALSE, other_purity = 1)
|
||||
message_admins("all convered to [src.InverseChem]")
|
||||
return
|
||||
else
|
||||
//var/pureVol =
|
||||
var/impureVol = amount * (1 - other_purity)
|
||||
var/impureVol = amount * (1 - purity)
|
||||
message_admins("splitting [src] [amount] into [src.ImpureChem] [impureVol]")
|
||||
M.reagents.remove_reagent(src.id, impureVol, FALSE)
|
||||
M.reagents.add_reagent(src.ImpureChem, impureVol, FALSE, other_purity = 1)
|
||||
@@ -334,9 +336,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
pollStarted = TRUE
|
||||
candies = pollGhostCandidates("Do you want to play as a clone and do you agree to respect their character and act in a similar manner to them? I swear to god if you diddle them I will be very disapointed in you.")
|
||||
if(20 to INFINITY)
|
||||
message_admins("Number of candidates [LAZYLEN(candies)]")
|
||||
//message_admins("Number of candidates [LAZYLEN(candies)]")
|
||||
if(LAZYLEN(candies) && src.playerClone == FALSE) //If there's candidates, clone the person and put them in there!
|
||||
message_admins("Candidate found!")
|
||||
message_admins("Candidate found! [candies] is becomeing a clone of [M]! Hee~!! Exciting!!")
|
||||
to_chat(M, "<span class='warning'>The cells reach a critical micelle concentration, nucleating rapidly within your body!</span>")
|
||||
//var/typepath = owner.type
|
||||
//clone = new typepath(owner.loc)
|
||||
@@ -420,6 +422,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
M.adjustBruteLoss(-1, 0)
|
||||
M.adjustFireLoss(-1, 0)
|
||||
M.heal_bodypart_damage(1,1)
|
||||
M.reagents.remove_reagent(src.id, 1)//faster rate of loss.
|
||||
else //If there's no ghosts, but they've made a large amount, then proceed to make flavourful clone, where you become fat and useless until you split.
|
||||
switch(current_cycle)
|
||||
if(21)
|
||||
@@ -448,7 +451,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
if(87 to INFINITY)
|
||||
M.reagents.remove_reagent(src.id, 1000)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing.
|
||||
message_admins("Purging SGDF [volume]")
|
||||
message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 77")
|
||||
//message_admins("Growth nucleation occuring (SDGF), step [current_cycle] of 77")
|
||||
|
||||
|
||||
..()
|
||||
@@ -1470,6 +1473,10 @@ And as stated earlier, this chem is hard to make, and is punishing on failure. Y
|
||||
|
||||
/datum/reagent/fermi/fermiTest/on_new()
|
||||
..()
|
||||
if(LAZYLEN(holder.reagent_list) == 1)
|
||||
return
|
||||
else
|
||||
holder.remove_reagent(src.id, 1000)//Avoiding recurrsion
|
||||
message_admins("FermiTest addition!")
|
||||
var/location = get_turf(holder.my_atom)
|
||||
if(purity < 0.34 || purity == 1)
|
||||
|
||||
Reference in New Issue
Block a user