[s] Hallucinations 4.0

This commit is contained in:
XDTM
2018-05-09 23:15:46 +02:00
committed by letterjay
parent 3d0ae0255b
commit ec3516ea19
16 changed files with 679 additions and 615 deletions

View File

@@ -160,7 +160,7 @@
to_chat(owner, "<span class='warning'>You feel really lonely...</span>")
else
to_chat(owner, "<span class='warning'>You're going mad with loneliness!</span>")
owner.hallucination += 20
owner.hallucination += 30
if(5)
if(!high_stress)

View File

@@ -231,6 +231,7 @@
if(prob(2)) //we'll all be mad soon enough
madness()
<<<<<<< HEAD
/datum/trait/insanity/proc/madness(mad_fools)
set waitfor = FALSE
if(!mad_fools)
@@ -240,6 +241,10 @@
new hallucination_type (trait_holder, FALSE)
else
trait_holder.hallucination += rand(10, 50)
=======
/datum/quirk/insanity/proc/madness()
quirk_holder.hallucination += rand(10, 25)
>>>>>>> aa782ff... [s] Hallucinations 4.0 (#37423)
/datum/trait/insanity/post_add() //I don't /think/ we'll need this but for newbies who think "roleplay as insane" = "license to kill" it's probably a good thing to have
if(!trait_holder.mind || trait_holder.mind.special_role)

View File

@@ -323,12 +323,12 @@
return
else
return
else if(user.hallucinating() && ishuman(user) && prob(4) && !operating)
else if(user.hallucinating() && ishuman(user) && prob(1) && !operating)
var/mob/living/carbon/human/H = user
if(H.gloves)
var/obj/item/clothing/gloves/G = H.gloves
if(G.siemens_coefficient)//not insulated
hallucinate_shock(H)
new /datum/hallucination/shock(H)
return
if (cyclelinkedairlock)
if (!shuttledocked && !emergency && !cyclelinkedairlock.shuttledocked && !cyclelinkedairlock.emergency && allowed(user))
@@ -338,34 +338,6 @@
addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2)
..()
/obj/machinery/door/airlock/proc/hallucinate_shock(mob/living/user)
var/image/shock_image = image(user, user, dir = user.dir)
var/image/electrocution_skeleton_anim = image('icons/mob/human.dmi', user, icon_state = "electrocuted_base", layer=ABOVE_MOB_LAYER)
shock_image.color = rgb(0,0,0)
shock_image.override = TRUE
electrocution_skeleton_anim.appearance_flags |= RESET_COLOR|KEEP_APART
to_chat(user, "<span class='userdanger'>You feel a powerful shock course through your body!</span>")
if(user.client)
user.client.images |= shock_image
user.client.images |= electrocution_skeleton_anim
addtimer(CALLBACK(src, .proc/reset_hallucinate_shock_animation, user, shock_image, electrocution_skeleton_anim), 40)
user.playsound_local(get_turf(src), "sparks", 100, 1)
user.staminaloss += 50
user.Stun(40)
user.jitteriness += 1000
user.do_jitter_animation(user.jitteriness)
addtimer(CALLBACK(src, .proc/hallucinate_shock_drop, user), 20)
/obj/machinery/door/airlock/proc/reset_hallucinate_shock_animation(mob/living/user, shock_image, electrocution_skeleton_anim)
if(user.client)
user.client.images.Remove(shock_image)
user.client.images.Remove(electrocution_skeleton_anim)
/obj/machinery/door/airlock/proc/hallucinate_shock_drop(mob/living/user)
user.jitteriness = max(user.jitteriness - 990, 10) //Still jittery, but vastly less
user.Knockdown(60)
/obj/machinery/door/airlock/proc/isElectrified()
if(src.secondsElectrified != NOT_ELECTRIFIED)
return TRUE

View File

@@ -153,7 +153,7 @@
H.confused += 15
H.adjustBrainLoss(10, 160)
if(3)
H.hallucination += 80
H.hallucination += 60
/obj/item/organ/heart/gland/pop
cooldown_low = 900

View File

@@ -214,19 +214,19 @@
/obj/effect/proc_holder/changeling/sting/LSD
name = "Hallucination Sting"
desc = "Causes terror in the target."
helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds."
helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect begins after a few seconds."
sting_icon = "sting_lsd"
chemical_cost = 10
dna_cost = 1
/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target)
add_logs(user, target, "stung", "LSD sting")
addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600))
addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(100,200))
return TRUE
/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target)
if(target)
target.hallucination = max(400, target.hallucination)
target.hallucination = max(90, target.hallucination)
/obj/effect/proc_holder/changeling/sting/cryo
name = "Cryogenic Sting"

View File

@@ -260,7 +260,7 @@
if(!ishuman(target) || iscultist(target))
return
var/mob/living/carbon/human/H = target
H.hallucination = max(H.hallucination, 240)
H.hallucination = max(H.hallucination, 120)
SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50))
var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER)
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, FALSE)

View File

@@ -11,22 +11,27 @@
/datum/round_event/mass_hallucination/start()
switch(rand(1,4))
if(1) //same sound for everyone
var/sound = pick("explosion","far_explosion","phone","alarm","hallelujah","creepy","ratvar","shuttle_dock",
"wall_decon","door_hack","blob_alert","tesla","malf_ai","meteors")
var/sound = pick("airlock","airlock_pry","console","explosion","far_explosion","mech","glass","alarm","beepsky","mech","wall_decon","door_hack","tesla")
for(var/mob/living/carbon/C in GLOB.alive_mob_list)
new /datum/hallucination/sounds(C, TRUE, sound)
if(2 to 4)
if(2)
var/weirdsound = pick("phone","hallelujah","highlander","hyperspace","game_over","creepy","tesla")
for(var/mob/living/carbon/C in GLOB.alive_mob_list)
new /datum/hallucination/weird_sounds(C, TRUE, weirdsound)
if(3)
var/stationmessage = pick("ratvar","shuttle_dock","blob_alert","malf_ai","meteors","supermatter")
for(var/mob/living/carbon/C in GLOB.alive_mob_list)
new /datum/hallucination/stationmessage(C, TRUE, stationmessage)
if(4 to 6)
var/picked_hallucination = pick( /datum/hallucination/bolts,
/datum/hallucination/whispers,
/datum/hallucination/chat,
/datum/hallucination/message,
/datum/hallucination/bolts,
/datum/hallucination/fake_flood,
/datum/hallucination/battle,
/datum/hallucination/fire,
/datum/hallucination/self_delusion,
/datum/hallucination/fakeattacker,
/datum/hallucination/death,
/datum/hallucination/xeno_attack,
/datum/hallucination/delusion,
/datum/hallucination/oh_yeah)
for(var/mob/living/carbon/C in GLOB.alive_mob_list)

File diff suppressed because it is too large Load Diff

View File

@@ -207,9 +207,9 @@
if(breath_gases[/datum/gas/bz])
var/bz_partialpressure = (breath_gases[/datum/gas/bz][MOLES]/breath.total_moles())*breath_pressure
if(bz_partialpressure > 1)
hallucination += 20
hallucination += 10
else if(bz_partialpressure > 0.01)
hallucination += 5//Removed at 2 per tick so this will slowly build up
hallucination += 5
//TRITIUM
if(breath_gases[/datum/gas/tritium])
var/tritium_partialpressure = (breath_gases[/datum/gas/tritium][MOLES]/breath.total_moles())*breath_pressure

View File

@@ -6,4 +6,4 @@
if(ishuman(target))
var/mob/living/carbon/human/M = target
M.adjustBrainLoss(20)
M.hallucination += 20
M.hallucination += 30

View File

@@ -287,7 +287,7 @@
to_chat(M, "<span class='notice'>[high_message]</span>")
M.adjustStaminaLoss(-5, 0)
M.adjustBrainLoss(4)
M.hallucination += 10
M.hallucination += 5
if(M.canmove && !ismovableatom(M.loc))
step(M, pick(GLOB.cardinals))
step(M, pick(GLOB.cardinals))
@@ -295,7 +295,7 @@
. = 1
/datum/reagent/drug/bath_salts/overdose_process(mob/living/M)
M.hallucination += 10
M.hallucination += 5
if(M.canmove && !ismovableatom(M.loc))
for(var/i in 1 to 8)
step(M, pick(GLOB.cardinals))
@@ -341,7 +341,7 @@
..()
/datum/reagent/drug/bath_salts/addiction_act_stage4(mob/living/carbon/human/M)
M.hallucination += 40
M.hallucination += 30
if(M.canmove && !ismovableatom(M.loc))
for(var/i = 0, i < 16, i++)
step(M, pick(GLOB.cardinals))

View File

@@ -1093,7 +1093,7 @@
. = 1
/datum/reagent/medicine/earthsblood/overdose_process(mob/living/M)
M.hallucination = min(max(0, M.hallucination + 10), 50)
M.hallucination = min(max(0, M.hallucination + 5), 60)
M.adjustToxLoss(5 * REM, 0)
..()
. = 1

View File

@@ -103,7 +103,7 @@
/datum/reagent/blackpowder/on_mob_life(mob/living/M)
..()
if(isplasmaman(M))
M.hallucination += 10
M.hallucination += 5
/datum/reagent/blackpowder/on_ex_act()
var/location = get_turf(holder.my_atom)

View File

@@ -188,7 +188,7 @@
taste_description = "sourness"
/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/M)
M.hallucination += 10
M.hallucination += 5
return ..()
/datum/reagent/toxin/plantbgone

View File

@@ -236,13 +236,13 @@
var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz][MOLES])
if(bz_pp > BZ_trip_balls_min)
H.hallucination += 20
H.hallucination += 10
H.reagents.add_reagent("bz_metabolites",5)
if(prob(33))
H.adjustBrainLoss(3, 150)
else if(bz_pp > 0.01)
H.hallucination += 5//Removed at 2 per tick so this will slowly build up
H.hallucination += 5
H.reagents.add_reagent("bz_metabolites",1)

View File

@@ -5,6 +5,22 @@
"@pick(add_name)what are you hiding?",
"I saw that"
],
"conversation": [
"Yes",
"Yeah",
"Yup",
"No",
"Nah",
"I doubt it",
"Uh...",
"Why?",
"But...",
"Hold on",
"Hmm",
"Yeah, i know",
"Weird"
],
"greetings": [
"",
@@ -29,7 +45,7 @@
"Kchckchk...",
"EEEeeeeEEEE",
"khhhhh",
"#@§*&£",
"#@<EFBFBD>*&<EFBFBD>",
"H**p m*",
"H-hhhhh..."
],
@@ -40,47 +56,9 @@
"What was that?"
],
"imatraitor": [
"Hail Ratvar",
"Hail Nar'Sie",
"Hey, @pick(add_name)i've got some TC left, want something?",
"Viva!",
"I'll spare you if you don't tell anybody about me",
"Hey, @pick(add_name)are you a traitor too?",
"You're my target, but @pick(excuses)",
"Are you mr. @pick(ling_names)?"
],
"excuses": [
"i like you, so i'll spare you",
"i don't really feel like following objectives today",
"i'm not robust enough to fight you",
"who cares",
"i'll kill you later"
],
"ling_names": [
"Alpha",
"Beta",
"Gamma",
"Delta",
"Epsilon",
"Eta",
"Theta",
"Lambda",
"Mu",
"Xi",
"Rho",
"Sigma",
"Tau",
"Upsilon",
"Phi",
"Psi",
"Omega"
],
"add_name": [
"%TARGETNAME%, ",
"%TARGETNAME% ",
""
],
@@ -95,11 +73,16 @@
"aggressive": [
"@pick(add_name)give me that!",
"@pick(add_name)stop it!",
"@pick(add_name)i'm going to kill you!",
"@pick(add_name)fuck you!"
],
"help": [
"HELP",
"HELP",
"HELP",
"HELP",
"HELP",
"HELP ME",
"HELP HIM",
@@ -140,6 +123,7 @@
],
"accusations": [
"dead",
"rogue",
"cult",
"a cultist",
@@ -162,32 +146,64 @@
"Ling",
"Ops",
"Swarmers",
"Spiders",
"Xenos",
"Revenant",
"Traitor",
"Harm",
"Blue APC",
"I hear flashing",
"Help",
"%TARGETNAME%"
],
"location": [
"bridge",
"armory",
"space near @pick(sublocation)",
"the bridge",
"the armory",
"sec",
"security",
"science",
"xenobio",
"engineering",
"cargo",
"medbay",
"atmos",
"maint",
"@pick(sublocation) maint",
"virology",
"morgue",
"hops office",
"captains office",
"chapel",
"library",
"the chapel",
"the library",
"tool storage",
"botany",
"kitchen",
"the kitchen",
"the ai sat"
],
"sublocation": [
"the bridge",
"the armory",
"sec",
"security",
"science",
"xenobio",
"engineering",
"cargo",
"medbay",
"atmos",
"maint",
"virology",
"morgue",
"hops office",
"captains office",
"the chapel",
"the library",
"tool storage",
"botany",
"the kitchen",
"the ai sat"
],
@@ -201,10 +217,12 @@
"Kill that person. You know who.",
"You should go somewhere else. Quickly.",
"Good luck. You'll need it.",
"You have my permission. Do it."
"You have my permission. Do it.",
"Just do it."
],
"chemicals": [
"Something",
"Ooze",
"Fire",
"Earth",