Made MKUltra's OD on self turn the player into a narcissist.
This commit is contained in:
@@ -481,7 +481,7 @@
|
||||
display_name = "Cybernetic Organs"
|
||||
description = "We have the technology to rebuild him."
|
||||
prereq_ids = list("adv_biotech")
|
||||
design_ids = list("cybernetic_heart", "cybernetic_liver", "cybernetic_liver_u", "cybernetic_lungs", "cybernetic_lungs_u, cybernetic_tongue")
|
||||
design_ids = list("cybernetic_heart", "cybernetic_liver", "cybernetic_liver_u", "cybernetic_lungs", "cybernetic_lungs_u", "cybernetic_tongue")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
@@ -258,8 +258,8 @@
|
||||
name = "cybernetic tongue"
|
||||
desc = "A state of the art robotic tongue that can detect the pH of anything drank."
|
||||
icon_state = "tonguecybernetic"
|
||||
taste_sensitivity = 10 // extra sensitive and inquisitive uwu
|
||||
maxHealth = 70 //It's robotic!
|
||||
taste_sensitivity = 10
|
||||
maxHealth = 60 //It's robotic!
|
||||
|
||||
/obj/item/organ/tongue/cybernetic/get_spans()
|
||||
return ..() | SPAN_ROBOT
|
||||
|
||||
@@ -677,26 +677,15 @@
|
||||
return 0 //no cooldown
|
||||
|
||||
var/log_message = message
|
||||
/*
|
||||
if(!span_list || !span_list.len) //Not too sure what this does, I think it changes your output message depending if you're a cultist or not? I.e. font
|
||||
if(iscultist(user))
|
||||
span_list = list("narsiesmall")
|
||||
else if (is_servant_of_ratvar(user))
|
||||
span_list = list("ratvar")
|
||||
else
|
||||
span_list = list()
|
||||
*/
|
||||
//user.say(message, sanitize = TRUE)//Removed spans = span_list, It should just augment normal speech//DO NOT ENABLE, RECURSION HELL
|
||||
|
||||
//FIND THRALLS
|
||||
|
||||
message = lowertext(message)
|
||||
var/mob/living/list/listeners = list()
|
||||
for(var/mob/living/L in get_hearers_in_view(8, user))
|
||||
if(L.can_hear() && !L.anti_magic_check(FALSE, TRUE) && L.stat != DEAD)
|
||||
if(L.has_status_effect(/datum/status_effect/chem/enthrall))//Check to see if they have the status
|
||||
if(L == user && !include_speaker)
|
||||
continue
|
||||
//if(L == user && !include_speaker) //Remove this if I decide to make OD apply to self.
|
||||
// continue
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
|
||||
@@ -854,12 +843,10 @@
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='love'>[E.enthrallGender] has praised me!!</b></span>"), 5)
|
||||
if(L.has_trait(TRAIT_NYMPHO))
|
||||
L.adjustArousalLoss(2*power_multiplier)
|
||||
/*enable when maso is added
|
||||
if(L.has_trait(TRAIT_MASO))
|
||||
E.enthrallTally -= power_multiplier
|
||||
E.resistanceTally += power_multiplier
|
||||
E.cooldown += 1
|
||||
*/
|
||||
else
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='nicegreen'><b><i>I've been praised for doing a good job!</b></i></span>"), 5)
|
||||
E.resistanceTally -= power_multiplier
|
||||
@@ -877,16 +864,14 @@
|
||||
//power_multiplier += (get_dist(V, user)**-2)*2 //2, 2, 0.5, 0.2, 0.125, 0.05, 0.04, 0.03, alternatively make a list and use the return as index values
|
||||
var/descmessage = "[(L.lewd?"I've failed [E.enthrallGender]... What a bad, bad pet!":"I did a bad job...")]"
|
||||
if (L.lewd)
|
||||
//TODO: ADD THIS IN WHEN MASO IS MERGED
|
||||
/*
|
||||
if(L.has_trait(TRAIT_MASO))
|
||||
L.adjustArousalLoss(3*power_multiplier)
|
||||
descmessage += "And yet, it feels so good..!</span>" //I don't really understand masco, is this the right sort of thing they like?
|
||||
E.enthrallTally += power_multiplier
|
||||
E.resistanceTally -= power_multiplier
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='love'>I've let [E.enthrallGender] down...!</b></span>"), 5)
|
||||
else*/
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='warning'>I've let [E.enthrallGender] down...</b></span>"), 5)
|
||||
else
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='warning'>I've let [E.enthrallGender] down...</b></span>"), 5)
|
||||
else
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='warning'>I've failed [E.master]...</b></span>"), 5)
|
||||
E.resistanceTally += power_multiplier
|
||||
@@ -1115,7 +1100,7 @@
|
||||
if (E.phase > 2)
|
||||
for (var/trigger in E.customTriggers)
|
||||
speaktrigger += "[trigger], "
|
||||
C.add_trait(TRAIT_DEAF, "Triggers") //So you don't trigger yourself!
|
||||
C.add_trait(TRAIT_DEAF, "Triggers") //So you don't trigger yourself! Actually this will trigger yourself oops.
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, C, /atom/movable/proc/say, "[speaktrigger]"), 5)
|
||||
C.remove_trait(TRAIT_DEAF, "Triggers")
|
||||
|
||||
@@ -1207,12 +1192,12 @@
|
||||
var/mob/living/L = V
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
switch(E.phase)
|
||||
if(3 to INFINITY)//Tier 3 only
|
||||
if(3)//Tier 3 only
|
||||
E.status = "heal"
|
||||
E.statusStrength = (5 * power_multiplier)
|
||||
E.cooldown += 5
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, L, "<span class='notice'>You begin to lick your wounds.</b></span>"), 5)
|
||||
L.Stun(5 * power_multiplier)
|
||||
L.Stun(15 * power_multiplier)
|
||||
|
||||
//STUN
|
||||
else if(findtext(message, stun_words))
|
||||
@@ -1276,7 +1261,7 @@
|
||||
var/mob/living/L = V
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
switch(E.phase)
|
||||
if(3 to INFINITY)//Tier 3 only
|
||||
if(3)//Tier 3 only
|
||||
E.status = "pacify"
|
||||
E.cooldown += 10
|
||||
|
||||
@@ -1286,7 +1271,7 @@
|
||||
var/mob/living/L = V
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
switch(E.phase)
|
||||
if(3 to INFINITY)//Tier 3 only
|
||||
if(3)//Tier 3 only
|
||||
E.statusStrength = 2* power_multiplier
|
||||
E.status = "charge"
|
||||
E.cooldown += 10
|
||||
|
||||
@@ -213,8 +213,8 @@
|
||||
enthrallID = E.creatorID
|
||||
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, also it's not worth the overhead of giving someone themselves; they can't proc themselves as velvet removes them from the list.
|
||||
//if(M.ckey == enthrallID)
|
||||
// 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!
|
||||
@@ -321,6 +321,15 @@
|
||||
M.confused = 0
|
||||
resistGrowth = 0
|
||||
else
|
||||
if (cooldown > 0)
|
||||
cooldown -= (0.8 + (mental_capacity/500))
|
||||
cooldownMsg = FALSE
|
||||
else if (cooldownMsg == FALSE)
|
||||
if(DistApart < 10)
|
||||
if(master.lewd)
|
||||
to_chat(master, "<span class='notice'><i>Your pet [owner] appears to have finished internalising your last command.</i></span>")
|
||||
else
|
||||
to_chat(master, "<span class='notice'><i>Your thrall [owner] appears to have finished internalising your last command.</i></span>")
|
||||
return//If you break the mind of someone, you can't use status effects on them.
|
||||
|
||||
|
||||
@@ -515,13 +524,10 @@
|
||||
if (cTriggered == TRUE)
|
||||
return
|
||||
var/mob/living/carbon/C = owner
|
||||
//message_admins("[C] heard something!")
|
||||
raw_message = lowertext(raw_message)
|
||||
for (var/trigger in customTriggers)
|
||||
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]!")
|
||||
cTriggered = TRUE
|
||||
|
||||
//Speak (Forces player to talk) works
|
||||
@@ -551,7 +557,7 @@
|
||||
if (C.has_trait(TRAIT_NYMPHO))
|
||||
if (C.getArousalLoss() > 80)
|
||||
C.mob_climax(forced_climax=TRUE)
|
||||
C.SetStun(20)//We got your stun effects in somewhere, Kev.
|
||||
C.SetStun(10)//We got your stun effects in somewhere, Kev.
|
||||
else
|
||||
C.adjustArousalLoss(10)
|
||||
else
|
||||
@@ -637,7 +643,7 @@
|
||||
to_chat(owner, "You attempt to shake the mental cobwebs from your mind!")
|
||||
//nymphomania
|
||||
if (M.canbearoused && M.has_trait(TRAIT_NYMPHO))//I'm okay with this being removed.
|
||||
deltaResist*= ((100 - M.arousalloss/100)/100)//more aroused you are, the weaker resistance you can give
|
||||
deltaResist*= 0.5-(((2/200)*M.arousalloss)/1)//more aroused you are, the weaker resistance you can give, the less you are, the more you gain. (+/- 0.5)
|
||||
|
||||
//chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist.
|
||||
if (owner.reagents.has_reagent("mannitol"))
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
do_teleport(M, get_turf(M), 10, asoundin = 'sound/effects/phasein.ogg')
|
||||
do_sparks(5,FALSE,src)
|
||||
M.reagents.remove_reagent(src.id, 0.5)//So you're not stuck for 10 minutes teleporting
|
||||
..() //loop function
|
||||
..()
|
||||
|
||||
//Addiction
|
||||
/datum/reagent/fermi/eigenstate/addiction_act_stage1(mob/living/M) //Welcome to Fermis' wild ride.
|
||||
@@ -191,7 +191,7 @@
|
||||
src.addictCyc3++
|
||||
do_teleport(M, get_turf(M), 2, no_effects=TRUE) //Teleports player randomly
|
||||
do_sparks(5,FALSE,M)
|
||||
..() //loop function
|
||||
..()
|
||||
|
||||
/datum/reagent/fermi/eigenstate/addiction_act_stage4(mob/living/M) //Thanks for riding Fermis' wild ride. Mild jitter and player buggery.
|
||||
switch(src.addictCyc4)
|
||||
@@ -323,7 +323,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
SM.setBrainLoss(40)
|
||||
SM.nutrition = startHunger/2
|
||||
|
||||
//Really hacky way to deal with this stupid problem I have, and heal the clone. I think around 30u will make a healthy clone.
|
||||
//Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger.
|
||||
SM.reagents.add_reagent("SDGFheal", volume)
|
||||
M.reagents.remove_reagent(src.id, src.volume)
|
||||
return
|
||||
@@ -1083,6 +1083,8 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
/datum/reagent/fermi/enthrall/overdose_start(mob/living/carbon/M)//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 100u, then you get the status for someone random (They don't have the vocal chords though, so it's limited.)
|
||||
to_chat(M, "<span class='love'><i>You are unable to resist your own charms anymore, and become a full blown narcissist.</i></span>")
|
||||
/*Old way of handling, left in as an option B
|
||||
var/list/seen = viewers(7, get_turf(M))//Sound and sight checkers
|
||||
for(var/mob/living/carbon/victim in seen)
|
||||
if(victim == M)//as much as I want you to fall for beepsky, he doesn't have a ckey
|
||||
@@ -1097,6 +1099,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
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))
|
||||
@@ -1107,7 +1110,7 @@ Creating a chem with a low purity will make you permanently fall in love with so
|
||||
E.master = creator
|
||||
else
|
||||
E = M.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
to_chat(M, "<span class='love'><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 [creatorName]. Your highest priority is now to stay by their side at all costs.</i></span>")
|
||||
to_chat(M, "<span class='big love'><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 [creatorName]. Your highest priority is now to stay by their side at all costs.</i></span>")
|
||||
M.slurring = 100
|
||||
M.confused = 100
|
||||
E.phase = 4
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
required_catalysts = list("slimejelly" = 1)
|
||||
|
||||
/datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom)
|
||||
var/datum/reagent/toxin/slimejelly/B = locate(/datum/reagent/toxin/slimejelly) in my_atom.reagents.reagent_list
|
||||
var/datum/reagent/toxin/slimejelly/B = locate(/datum/reagent/toxin/slimejelly) in my_atom.reagents.reagent_list//The one line change.
|
||||
var/datum/reagent/fermi/enthrall/E = locate(/datum/reagent/fermi/enthrall) in my_atom.reagents.reagent_list
|
||||
if(!B.data)
|
||||
var/list/seen = viewers(5, get_turf(my_atom))
|
||||
|
||||
Reference in New Issue
Block a user