100 down, 66 to go.
This commit is contained in:
@@ -172,7 +172,6 @@
|
||||
var/status = null //status effects
|
||||
var/statusStrength = 0 //strength of status effect
|
||||
var/enthrallID //Enchanter's name/ID
|
||||
var/obj/item/organ/brain/B = getorganslot(ORGAN_SLOT_BRAIN) //It's their brain!
|
||||
var/mental_capacity //Higher it is, lower the cooldown on commands, capacity reduces with resistance.
|
||||
var/mental_cost //Current cost of custom triggers
|
||||
var/mindbroken = FALSE //Not sure I use this, replaced with phase 4
|
||||
@@ -182,6 +181,7 @@
|
||||
var/withdrawal = FALSE //withdrawl
|
||||
var/withdrawalTick = 0 //counts how long withdrawl is going on for
|
||||
var/list/customTriggers = list() //the list of custom triggers (maybe have to split into two)
|
||||
var/cooldown = 0
|
||||
|
||||
/datum/status_effect/chem/enthrall/on_apply(mob/living/carbon/M)
|
||||
if(M.ID == enthrallID)
|
||||
@@ -189,6 +189,7 @@
|
||||
redirect_component1 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_RESIST = CALLBACK(src, .proc/owner_resist)))) //Do resistance calc if resist is pressed#
|
||||
redirect_component2 = WEAKREF(owner.AddComponent(/datum/component/redirect, list(COMSIG_LIVING_SAY = CALLBACK(src, .proc/owner_say)))) //Do resistance calc if resist is pressed
|
||||
//Might need to add redirect component for listening too.
|
||||
var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN) //It's their brain!
|
||||
mental_capacity = 500 - B.get_brain_damage()
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "enthrall", /datum/mood_event/enthrall)
|
||||
|
||||
@@ -243,7 +244,7 @@
|
||||
resistanceTally = 0
|
||||
to_chat(owner, "<span class='notice'><i>The separation from you master sparks a small flame of resistance in yourself, as your mind slowly starts to return to normal.</i></span>")
|
||||
else if (4) //mindbroken
|
||||
if (mental_capacity >= 499 || owner.getBrainLoss() >=20 || !user.has_reagent("MKUltra"))
|
||||
if (mental_capacity >= 499 || owner.getBrainLoss() >=20 || !M.has_reagent("MKUltra"))
|
||||
phase = 2
|
||||
mental_capacity = 500
|
||||
E.customTriggers = list()
|
||||
@@ -268,17 +269,17 @@
|
||||
var/withdrawal = TRUE
|
||||
|
||||
//chem calculations
|
||||
if (user.has_reagent("MKUltra"))
|
||||
if (M.has_reagent("MKUltra"))
|
||||
if (phase >= 2)
|
||||
enthrallTally += phase
|
||||
else
|
||||
if (phase < 3)
|
||||
resistance += 10//If you've no chem, then you break out quickly
|
||||
deltaResist += 10//If you've no chem, then you break out quickly
|
||||
to_chat(owner, "<span class='notice'><i>You're starting to miss your Master/Mistress.</i></span>")
|
||||
if (mental_capacity <= 500 || phase == 4)
|
||||
if (user.has_reagent("mannitol"))
|
||||
if (owner.has_reagent("mannitol"))
|
||||
mental_capacity += 1
|
||||
if (user.has_reagent("neurine"))
|
||||
if (owner.has_reagent("neurine"))
|
||||
mental_capacity += 2
|
||||
|
||||
//Withdrawal subproc:
|
||||
@@ -306,8 +307,8 @@
|
||||
owner.jitteriness += 20
|
||||
if(67 to 90) //anger
|
||||
if(prob(30))
|
||||
addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_HARM), i * 2)
|
||||
addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2)
|
||||
addtimer(CALLBACK(M, /mob/verb/a_intent_change, INTENT_HARM), 2)
|
||||
addtimer(CALLBACK(M, /mob/proc/click_random_mob), 2)
|
||||
to_chat(owner, "You suddenly lash out at the station in anger for it keeping you away from your Master.")
|
||||
if(90)
|
||||
SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "EnthMissing2") //Why does this not work?
|
||||
@@ -391,10 +392,10 @@
|
||||
//M.adjustStaminaLoss(-5*REM)
|
||||
|
||||
//final tidying
|
||||
resistance += deltaResist
|
||||
resistanceTally += deltaResist
|
||||
deltaResist = 0
|
||||
if (cooldown > 0)
|
||||
cooldown -= 1
|
||||
cooldown -= (1 + (mental_capacity/1000 ))
|
||||
else
|
||||
to_chat(enthrallID, "<span class='notice'><i>Your pet [owner.name] appears to have finished internalising your last command.</i></span>")
|
||||
|
||||
@@ -418,18 +419,18 @@
|
||||
|
||||
/datum/status_effect/chem/enthrall/proc/on_hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
var/mob/living/carbon/C = owner
|
||||
for (trigger in customTriggers)
|
||||
if (trigger == message)//if trigger1 is the message
|
||||
for (var/trigger in customTriggers)
|
||||
if (trigger == message)//if trigger1 is the message
|
||||
|
||||
//Speak (Forces player to talk)
|
||||
if (customTriggers[trigger][1] == "speak")//trigger2
|
||||
if (customTriggers[trigger][1] == "speak")//trigger2
|
||||
C.visible_message("<span class='notice'>Your mouth moves on it's own, before you can even catch it. Though you find yourself fully believing in the validity of what you just said and don't think to question it.</span>")
|
||||
(C.say([customTriggers[trigger][2]]))//trigger3
|
||||
(C.say(customTriggers[trigger][2]))//trigger3
|
||||
|
||||
|
||||
//Echo (repeats message!)
|
||||
else if (customTriggers[trigger][1] == "echo")//trigger2
|
||||
(to_chat(owner, customTriggers[trigger][2]))//trigger3
|
||||
(to_chat(owner, customTriggers[trigger][2]))//trigger3
|
||||
|
||||
//Shocking truth!
|
||||
else if (customTriggers[trigger] == "shock")
|
||||
@@ -501,25 +502,25 @@
|
||||
else
|
||||
deltaResist *= 0.2
|
||||
//chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist.
|
||||
if (user.has_reagent("mannitol"))
|
||||
if (M.has_reagent("mannitol"))
|
||||
deltaResist *= 1.25
|
||||
if (user.has_reagent("neurine"))
|
||||
if (M.has_reagent("neurine"))
|
||||
deltaResist *= 1.5
|
||||
if (!H.has_trait(TRAIT_CROCRIN_IMMUNE) && M.canbearoused)
|
||||
if (user.has_reagent("anaphro"))
|
||||
if (!owner.has_trait(TRAIT_CROCRIN_IMMUNE) && M.canbearoused)
|
||||
if (owner.has_reagent("anaphro"))
|
||||
deltaResist *= 1.5
|
||||
if (user.has_reagent("anaphro+"))
|
||||
if (owner.has_reagent("anaphro+"))
|
||||
deltaResist *= 2
|
||||
if (user.has_reagent("aphro"))
|
||||
if (owner.has_reagent("aphro"))
|
||||
deltaResist *= 0.75
|
||||
if (user.has_reagent("aphro+"))
|
||||
if (owner.has_reagent("aphro+"))
|
||||
deltaResist *= 0.5
|
||||
|
||||
//Antag resistance
|
||||
//cultists are already brainwashed by their god
|
||||
if(iscultist(owner))
|
||||
deltaResist *= 2
|
||||
else if (is_servant_of_ratvar(user))
|
||||
else if (is_servant_of_ratvar(owner))
|
||||
deltaResist *= 2
|
||||
//antags should be able to resist, so they can do their other objectives. This chem does frustrate them, but they've all the tools to break free when an oportunity presents itself.
|
||||
else if (owner.mind.assigned_role in GLOB.antagonists)
|
||||
@@ -551,14 +552,14 @@
|
||||
deltaResist *= 0.5
|
||||
|
||||
if(owner.has_trait(TRAIT_CROCRIN_IMMUNE) || !owner.canbearoused)
|
||||
power_multiplier *= 0.75//Immune/asexual players are immune to the arousal based multiplier, this is to offset that so they can still be affected. Their unfamiliarty with desire makes it more on them.
|
||||
deltaResist *= 0.75//Immune/asexual players are immune to the arousal based multiplier, this is to offset that so they can still be affected. Their unfamiliarty with desire makes it more on them.
|
||||
|
||||
if (deltaResist>0)//just in case
|
||||
deltaResist /= phase//later phases require more resistance
|
||||
|
||||
/datum/status_effect/chem/enthrall/proc/owner_say(mob/living/carbon/M) //I can only hope this works
|
||||
/datum/status_effect/chem/enthrall/proc/owner_say(message) //I can only hope this works
|
||||
var/static/regex/owner_words = regex("[enthrallID.real_name]|[enthrallID.first_name()]")
|
||||
if(findtext(message, enthral_words))
|
||||
if(findtext(message, owner_words))
|
||||
if(enthrallID.gender == FEMALE)
|
||||
message = replacetext(lowertext(message), lowertext(enthrallID.real_name), "Mistress")
|
||||
message = replacetext(lowertext(message), lowertext(enthrallID.first_name), "Mistress")
|
||||
|
||||
@@ -308,10 +308,10 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
//Give the new clone an idea of their character
|
||||
//SHOULD print last 5 messages said by the original to the clones chatbox
|
||||
var/list/say_log = M.logging[LOG_SAY]
|
||||
if(LAZYLEN(say_log) > 5)
|
||||
recent_speech = say_log.Copy(say_log.len+5,0) //0 so len-LING_ARS+1 to end of list
|
||||
else
|
||||
for(var/spoken_memory in recent_speech)
|
||||
if(LAZYLEN(say_log) > 5)
|
||||
var/recent_speech = say_log.Copy(say_log.len+5,0) //0 so len-LING_ARS+1 to end of list
|
||||
else
|
||||
for(var/spoken_memory in recent_speech)
|
||||
to_chat(SM, spoken_memory)
|
||||
|
||||
|
||||
@@ -749,6 +749,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
//addiction_threshold = 30
|
||||
//addiction_stage1_end = 9999//Should never end.
|
||||
var/creatorID //add here
|
||||
var/creatorGender
|
||||
var/creatorName
|
||||
|
||||
/datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M)
|
||||
..()
|
||||
@@ -760,22 +762,25 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
Vc.Remove(M)
|
||||
nVc.Insert(M)
|
||||
qdel(Vc)
|
||||
to_chat(owner, "<span class='notice'><i>You feel your vocal chords tingle as your voice becomes more sultry.</span>")
|
||||
to_chat(M, "<span class='notice'><i>You feel your vocal chords tingle as your voice becomes more sultry.</span>")
|
||||
else
|
||||
M.apply_status_effect(/datum/status_effect/chem/enthrall)
|
||||
var/datum/status_effect/chem/enthral/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
E.enthrallID = creatorID
|
||||
|
||||
/datum/reagent/fermi/enthrall/on_mob_life(mob/living/carbon/M)
|
||||
var/datum/status_effect/chem/enthral/E = M.has_status_effect(/datum/status_effect/chem/enthral)
|
||||
var/datum/status_effect/chem/enthral/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
E.enthrallTally += 1
|
||||
M.adjustBrainLoss(0.1)
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)
|
||||
owner.add_trait(TRAIT_PACIFISM, "MKUltra")
|
||||
if (!M.has_status_effect(/datum/status_effect/chem/enthral))
|
||||
M.add_trait(TRAIT_PACIFISM, "MKUltra")
|
||||
if (!M.has_status_effect(/datum/status_effect/chem/enthrall))
|
||||
M.apply_status_effect(/datum/status_effect/chem/enthrall)
|
||||
var/datum/status_effect/chem/enthral/E = M.has_status_effect(/datum/status_effect/chem/enthral)
|
||||
to_chat(owner, "<span class='warning'><i>Your mind shatters under the volume of the mild altering chem inside of you, breaking all will and thought completely. Instead the only force driving you now is the instinctual desire to obey and follow [enthrallID.name].</i></span>")
|
||||
var/datum/status_effect/chem/enthral/E = M.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
E.enthrallID = creatorID
|
||||
to_chat(M, "<span class='warning'><i>Your mind shatters under the volume of the mild altering chem inside of you, breaking all will and thought completely. Instead the only force driving you now is the instinctual desire to obey and follow [enthrallID.name].</i></span>")
|
||||
M.slurring = 100
|
||||
M.confused = 100
|
||||
E.phase = 4
|
||||
@@ -817,7 +822,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
if(prob(20))
|
||||
var/list/seen = viewers(5, get_turf(M))//Sound and sight checkers
|
||||
//for(var/victim in seen)
|
||||
to_chat(M, "You notice [pick([seen])]'s bulge [pick("OwO!", "uwu!")]")
|
||||
to_chat(M, "You notice [pick(seen)]'s bulge [pick("OwO!", "uwu!")]")
|
||||
if(21)
|
||||
var/obj/item/organ/tongue/T = M.getorganslot(ORGAN_SLOT_TONGUE)
|
||||
var/obj/item/organ/tongue/nT = new /obj/item/organ/tongue/OwO
|
||||
@@ -834,7 +839,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
if(prob(20))
|
||||
var/list/seen = viewers(5, get_turf(M))//Sound and sight checkers
|
||||
//for(var/victim in seen)
|
||||
to_chat(M, "You notice [pick([seen])]'s bulge [pick("OwO!", "uwu!")]")
|
||||
to_chat(M, "You notice [pick(seen)]'s bulge [pick("OwO!", "uwu!")]")
|
||||
..()
|
||||
|
||||
/*
|
||||
|
||||
@@ -126,6 +126,8 @@
|
||||
|
||||
/datum/chemical_reaction/enthral/on_reaction(datum/reagents/holder)
|
||||
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list
|
||||
var/enthrallID = B.get_blood_id()
|
||||
var/datum/reagent/fermi/enthral/E = locate(/datum/reagent/fermi/enthral) in holder.reagent_list
|
||||
E.enthrallID = enthrallID
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in holder.reagent_list
|
||||
E.creatorGender = B.["gender"]
|
||||
E.creatorName = B.["real_name"]
|
||||
var/enthrallID = B.get_blood_data()
|
||||
E.creatorID = enthrallID
|
||||
Reference in New Issue
Block a user