Progressional fixes
This commit is contained in:
@@ -2,6 +2,12 @@
|
||||
for(var/datum/brain_trauma/trauma in get_traumas())
|
||||
message = trauma.on_say(message)
|
||||
message = ..(message)
|
||||
|
||||
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)
|
||||
if(!T) //hoooooouaah!
|
||||
var/regex/tongueless_lower = new("\[gdntke]+", "g")
|
||||
@@ -45,4 +51,4 @@
|
||||
return
|
||||
for(var/T in get_traumas())
|
||||
var/datum/brain_trauma/trauma = T
|
||||
message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq)
|
||||
message = trauma.on_hear(message, speaker, message_language, raw_message, radio_freq)
|
||||
|
||||
@@ -494,6 +494,10 @@ im
|
||||
//else
|
||||
// fermiIsReacting = FALSE
|
||||
// STOP_PROCESSING(SSfastprocess, src)
|
||||
else if (chem_temp > C.ExplodeTemp)
|
||||
var/datum/chemical_reaction/fermi/Ferm = selected_reaction
|
||||
Ferm.FermiExplode(src, my_atom, total_volume, chem_temp, pH)
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
|
||||
@@ -543,7 +547,7 @@ im
|
||||
return 0//end!
|
||||
|
||||
/datum/reagents/process()
|
||||
var/datum/chemical_reaction/C = fermiReactID
|
||||
var/datum/chemical_reaction/fermi/C = fermiReactID
|
||||
|
||||
var/list/cached_required_reagents = C.required_reagents//update reagents list
|
||||
var/list/cached_results = C.results//resultant chemical list
|
||||
@@ -561,8 +565,8 @@ im
|
||||
targetVol = 0
|
||||
handle_reactions()
|
||||
update_total()
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
|
||||
Ferm.FermiFinish(src, multiplier)
|
||||
//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)
|
||||
return
|
||||
for(var/P in cached_results)
|
||||
@@ -586,8 +590,8 @@ im
|
||||
targetVol = 0
|
||||
handle_reactions()
|
||||
update_total()
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
|
||||
Ferm.FermiFinish(src, multiplier)
|
||||
//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)
|
||||
return
|
||||
else
|
||||
@@ -598,8 +602,8 @@ im
|
||||
targetVol = 0
|
||||
handle_reactions()
|
||||
update_total()
|
||||
var/datum/reagent/fermi/Ferm = GLOB.chemical_reagents_list[C.id]
|
||||
Ferm.FermiFinish(src, multiplier)
|
||||
//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)
|
||||
return
|
||||
|
||||
|
||||
@@ -616,35 +616,26 @@
|
||||
/obj/item/organ/vocal_cords/velvet
|
||||
name = "velvet chords"
|
||||
desc = "The voice spoken from these just make you want to drift off, sleep and obey."
|
||||
icon_state = "voice_of_god"
|
||||
actions_types = list(/datum/action/item_action/organ_action/colossus)
|
||||
icon_state = "in_love"
|
||||
//actions_types = list(/datum/action/item_action/organ_action/velvet)
|
||||
var/next_command = 0
|
||||
var/cooldown_mod = 1
|
||||
var/base_multiplier = 1
|
||||
spans = list("say","yell")
|
||||
|
||||
/*
|
||||
/datum/action/item_action/organ_action/colossus
|
||||
name = "Voice of God"
|
||||
var/obj/item/organ/vocal_cords/colossus/cords = null
|
||||
/datum/action/item_action/organ_action/velvet
|
||||
name = "Velvet voice"
|
||||
var/obj/item/organ/vocal_cords/velvet/cords = null
|
||||
|
||||
/datum/action/item_action/organ_action/colossus/New()
|
||||
/datum/action/item_action/organ_action/velvet/New()
|
||||
..()
|
||||
cords = target
|
||||
|
||||
/datum/action/item_action/organ_action/colossus/IsAvailable()
|
||||
if(world.time < cords.next_command)
|
||||
return FALSE
|
||||
if(!owner)
|
||||
return FALSE
|
||||
if(!owner.can_speak())
|
||||
return FALSE
|
||||
if(check_flags & AB_CHECK_CONSCIOUS)
|
||||
if(owner.stat)
|
||||
return FALSE
|
||||
/datum/action/item_action/organ_action/velvet/IsAvailable()
|
||||
return TRUE
|
||||
|
||||
/datum/action/item_action/organ_action/colossus/Trigger()
|
||||
/datum/action/item_action/organ_action/velvet/Trigger()
|
||||
. = ..()
|
||||
if(!IsAvailable())
|
||||
if(world.time < cords.next_command)
|
||||
@@ -658,16 +649,12 @@
|
||||
owner.say(".x[command]")
|
||||
|
||||
/obj/item/organ/vocal_cords/colossus/can_speak_with()
|
||||
if(world.time < next_command)
|
||||
to_chat(owner, "<span class='notice'>You must wait [DisplayTimeText(next_command - world.time)] before Speaking again.</span>")
|
||||
return FALSE
|
||||
if(!owner)
|
||||
return FALSE
|
||||
if(!owner.can_speak())
|
||||
to_chat(owner, "<span class='warning'>You are unable to speak!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
*/
|
||||
|
||||
/obj/item/organ/vocal_cords/velvet/handle_speech(message)
|
||||
velvetspeech(message, owner, spans, base_multiplier)
|
||||
@@ -678,18 +665,20 @@
|
||||
/obj/item/organ/vocal_cords/velvet/speak_with(message)
|
||||
velvetspeech(message, owner, spans, base_multiplier)
|
||||
//next_command = world.time + (cooldown * cooldown_mod)
|
||||
|
||||
*/
|
||||
//////////////////////////////////////
|
||||
///////////FermiChem//////////////////
|
||||
//////////////////////////////////////
|
||||
|
||||
/proc/velvetspeech(message, mob/living/user, list/span_list, base_multiplier = 1, include_speaker = FALSE, message_admins = TRUE)
|
||||
//Removed span_list from input arguments. //mob/living/user
|
||||
/proc/velvetspeech(message, mob/living/user, base_multiplier = 1, include_speaker = FALSE, message_admins = TRUE, debug = TRUE)
|
||||
message_admins("Velvet speech proc'd on [user]")
|
||||
var/cooldown = 0
|
||||
|
||||
if(!user || !user.can_speak() || user.stat)
|
||||
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")
|
||||
@@ -697,8 +686,8 @@
|
||||
span_list = list("ratvar")
|
||||
else
|
||||
span_list = list()
|
||||
|
||||
user.say(message, sanitize = TRUE)//Removed spans = span_list, It should just augment normal speech
|
||||
*/
|
||||
//user.say(message, sanitize = TRUE)//Removed spans = span_list, It should just augment normal speech//DO NOT ENABLE, RECURSION HELL
|
||||
|
||||
//FIND THRALLS
|
||||
|
||||
@@ -714,12 +703,15 @@
|
||||
if(istype(H.ears, /obj/item/clothing/ears/earmuffs))
|
||||
continue
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)//Check to see if pet is on cooldown from last command
|
||||
if (E.cooldown != 0)//If they're on cooldown you can't give them more commands.
|
||||
if (E.cooldown >= 0)//If they're on cooldown you can't give them more commands.
|
||||
continue
|
||||
listeners += L
|
||||
if(debug == TRUE)
|
||||
for(var/L in listeners)
|
||||
to_chat(world, "[user] choses, and [L] obeys.")
|
||||
|
||||
if(!listeners.len)
|
||||
cooldown = COOLDOWN_NONE
|
||||
cooldown = 0
|
||||
return cooldown
|
||||
|
||||
//POWER CALCULATIONS
|
||||
@@ -785,6 +777,9 @@
|
||||
if (T.name == "fluffy tongue") //If you sound hillarious, it's hard to take you seriously. This is a way for other players to combat/reduce their effectiveness.
|
||||
power_multiplier *= 0.75
|
||||
|
||||
if(debug == TRUE)
|
||||
to_chat(world, "[user]'s power is [power_multiplier].")
|
||||
|
||||
/* CHECK THIS STUFF IN THE CHEM STATUS INSTEAD.
|
||||
if(istype(H.neck, /obj/item/clothing/neck/petcollar))
|
||||
power_multiplier *= 1.5 //Collaring players makes them more docile and accepting of their place as a pet
|
||||
@@ -793,14 +788,14 @@
|
||||
*/
|
||||
|
||||
//Mixables
|
||||
var/static/regex/enthral_words = regex("relax|obey|love|serve|docile|so easy|ara ara") //enthral_words
|
||||
var/static/regex/reward_words = regex("good boy|good girl|good pet") //reward_words
|
||||
var/static/regex/punish_words = regex("bad boy|bad girl|bad pet") ////punish_words
|
||||
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")
|
||||
var/static/regex/wakeup_words = regex("revert|awaken|snap")
|
||||
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")
|
||||
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")
|
||||
@@ -825,11 +820,10 @@
|
||||
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/pacify_words = regex("more and more docile|complaisant|friendly|pacifist")
|
||||
var/static/regex/charge_words = regex("charge|oorah|attack")
|
||||
|
||||
var/distancelist = list(1.5,1.5,1.3,1.2,1.1,1,0.8,0.6,0.5,0.25)
|
||||
|
||||
var/distancelist = list(2,2,1.5,1.3,1.15,1,0.8,0.6,0.5,0.25)
|
||||
|
||||
//enthral_words, reward_words, silence_words attract_words punish_words desire_words resist_words forget_words
|
||||
|
||||
@@ -881,20 +875,23 @@
|
||||
//SAY MY NAME
|
||||
if((findtext(message, saymyname_words)))
|
||||
for(var/V in listeners)
|
||||
var/mob/living/L = V
|
||||
addtimer(CALLBACK(L, /atom/movable/proc/say, "Master"), 5)//When I figure out how to do genedered names put them here
|
||||
var/mob/living/carbon/C = V
|
||||
C.remove_trait(TRAIT_MUTE, TRAUMA_TRAIT)
|
||||
addtimer(CALLBACK(C, /atom/movable/proc/say, "Master"), 5)//When I figure out how to do genedered names put them here
|
||||
|
||||
//WAKE UP
|
||||
else if((findtext(message, wakeup_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)
|
||||
L.SetSleeping(0)//Can you hear while asleep?
|
||||
switch(E.phase)
|
||||
if(0)
|
||||
E.phase = 3
|
||||
E.status = null
|
||||
to_chat(L, "<span class='warning'>The snapping of your Master's fingers brings you back to your enthralled state, obedient and ready to serve.</b></span>")
|
||||
L.SetSleeping(0)//Can you hear while asleep?
|
||||
addtimer(CALLBACK(L, /atom/movable/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, )
|
||||
|
||||
|
||||
//tier 1
|
||||
//SILENCE
|
||||
@@ -908,6 +905,13 @@
|
||||
C.silent += ((10 * power_multiplier) * E.phase)
|
||||
E.cooldown += 3
|
||||
|
||||
//SPEAK
|
||||
else if((findtext(message, silence_words)))
|
||||
for(var/mob/living/carbon/C in listeners)
|
||||
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
C.remove_trait(TRAIT_MUTE, TRAUMA_TRAIT)
|
||||
E.cooldown += 3
|
||||
|
||||
//Antiresist
|
||||
else if((findtext(message, antiresist_words)))
|
||||
for(var/V in listeners)
|
||||
@@ -929,7 +933,7 @@
|
||||
else if((findtext(message, forget_words)))
|
||||
for(var/mob/living/carbon/C in listeners)
|
||||
var/datum/status_effect/chem/enthrall/E = C.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
C.Sleeping(40)
|
||||
C.Sleeping(50)
|
||||
to_chat(C, "<span class='warning'>You wake up, forgetting everything that just happened. You must've dozed off..? How embarassing!</b></span>")
|
||||
switch(E.phase)
|
||||
if(1 to 2)
|
||||
@@ -965,6 +969,7 @@
|
||||
|
||||
//teir 2
|
||||
|
||||
|
||||
//ORGASM
|
||||
else if((findtext(message, orgasm_words)))
|
||||
for(var/V in listeners)
|
||||
@@ -1001,8 +1006,8 @@
|
||||
switch(E.phase)
|
||||
if(2 to INFINITY)
|
||||
var/mob/living/M = V
|
||||
playsound(get_turf(M), pick('sound/effects/meow1.ogg', 'modular_citadel/sound/voice/merowr.ogg', 'modular_citadel/sound/voice/nya.ogg'), 50, 1, -1)
|
||||
H.emote("me","lets out a nya!")
|
||||
playsound(get_turf(M), pick('sound/effects/meow1.ogg', 'modular_citadel/sound/voice/nya.ogg'), 50, 1, -1)
|
||||
H.emote(H,"lets out a nya!")
|
||||
E.cooldown += 1
|
||||
|
||||
//SLEEP
|
||||
@@ -1028,7 +1033,7 @@
|
||||
to_chat(H, "<span class='warning'>Before you can even think about it, you quickly remove your clothes in response to your Master's command.</b></span>")
|
||||
E.cooldown += 10
|
||||
|
||||
//WALK
|
||||
//WALK doesn't work?
|
||||
else if((findtext(message, walk_words)))
|
||||
for(var/V in listeners)
|
||||
var/mob/living/L = V
|
||||
@@ -1039,7 +1044,7 @@
|
||||
L.toggle_move_intent()
|
||||
E.cooldown += 1
|
||||
|
||||
//RUN
|
||||
//RUN doesn't work?
|
||||
else if((findtext(message, run_words)))
|
||||
for(var/V in listeners)
|
||||
var/mob/living/L = V
|
||||
@@ -1057,7 +1062,7 @@
|
||||
var/datum/status_effect/chem/enthrall/E = L.has_status_effect(/datum/status_effect/chem/enthrall)
|
||||
switch(E.phase)
|
||||
if(3 to INFINITY)//Tier 2 only
|
||||
L.Knockdown(20 * power_multiplier * E.phase)
|
||||
L.Knockdown(30 * power_multiplier * E.phase)
|
||||
E.cooldown += 8
|
||||
|
||||
//tier3
|
||||
@@ -1086,7 +1091,7 @@
|
||||
if (E.mental_capacity >= 10)
|
||||
var/trigger = stripped_input(user, "Enter the trigger phrase", MAX_MESSAGE_LEN)
|
||||
var/trigger2 = stripped_input(user, "Enter the effect.", MAX_MESSAGE_LEN)
|
||||
if ((findtext(trigger, custom_words_words)))
|
||||
if ((findtext(trigger2, custom_words_words)))
|
||||
if (trigger2 == "speak" || trigger2 == "echo")
|
||||
var/trigger3 = stripped_input(user, "Enter the phrase spoken.", MAX_MESSAGE_LEN)
|
||||
E.customTriggers[trigger] = list(trigger2, trigger3)
|
||||
@@ -1108,7 +1113,7 @@
|
||||
to_chat(H, "<span class='warning'>You need to be next to your pet to give them a new objective!</b></span>")
|
||||
return
|
||||
else
|
||||
user.emote("me", "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
|
||||
user.emote(user, "puts their hands upon [H.name]'s head and looks deep into their eyes, whispering something to them.'")
|
||||
if (E.mental_capacity >= 150 || message == "objective")
|
||||
var/datum/objective/brainwashing/objective = stripped_input(user, "Add an objective to give your pet.", MAX_MESSAGE_LEN)
|
||||
if(!LAZYLEN(objective))
|
||||
|
||||
Reference in New Issue
Block a user