mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
Merge conflict begone
This commit is contained in:
@@ -29,6 +29,7 @@
|
||||
owner.mind.add_antag_datum(/datum/antagonist/obsessed)
|
||||
antagonist = owner.mind.has_antag_datum(/datum/antagonist/obsessed)
|
||||
antagonist.trauma = src
|
||||
RegisterSignal(obsession, COMSIG_MOB_EYECONTACT, .proc/stare)
|
||||
..()
|
||||
//antag stuff//
|
||||
antagonist.forge_objectives(obsession.mind)
|
||||
@@ -65,6 +66,8 @@
|
||||
/datum/brain_trauma/special/obsessed/on_lose()
|
||||
..()
|
||||
owner.mind.remove_antag_datum(/datum/antagonist/obsessed)
|
||||
if(obsession)
|
||||
UnregisterSignal(obsession, COMSIG_MOB_EYECONTACT)
|
||||
|
||||
/datum/brain_trauma/special/obsessed/handle_speech(datum/source, list/speech_args)
|
||||
if(!viewing)
|
||||
@@ -100,6 +103,13 @@
|
||||
fail = TRUE
|
||||
return fail
|
||||
|
||||
// if the creep examines first, then the obsession examines them, have a 50% chance to possibly blow their cover. wearing a mask avoids this risk
|
||||
/datum/brain_trauma/special/obsessed/proc/stare(datum/source, mob/living/examining_mob, triggering_examiner)
|
||||
if(examining_mob != owner || !triggering_examiner || prob(50))
|
||||
return
|
||||
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, obsession, "<span class='warning'>You catch [examining_mob] staring at you...</span>", 3))
|
||||
return COMSIG_BLOCK_EYECONTACT
|
||||
|
||||
/datum/brain_trauma/special/obsessed/proc/find_obsession()
|
||||
var/chosen_victim
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
var/datum/component/storage/concrete/master = master()
|
||||
if(!master)
|
||||
return
|
||||
. = COMPONENT_BLOCK_REACH
|
||||
. = COMPONENT_ALLOW_REACH
|
||||
next += master.parent
|
||||
for(var/i in master.slaves)
|
||||
var/datum/component/storage/slave = i
|
||||
|
||||
@@ -366,6 +366,7 @@
|
||||
user.adjustBruteLoss(30)
|
||||
playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE)
|
||||
playsound(user, 'sound/effects/splat.ogg', 70, TRUE)
|
||||
playsound(user, 'sound/effects/crack2.ogg', 70, TRUE)
|
||||
user.emote("scream")
|
||||
user.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) // oopsie indeed!
|
||||
shake_camera(user, 7, 7)
|
||||
@@ -434,13 +435,13 @@
|
||||
W.obj_destruction()
|
||||
user.adjustStaminaLoss(10 * speed)
|
||||
user.Paralyze(30)
|
||||
user.visible_message("<span class='danger'>[user] slams into [W] and shatters it, shredding [user.p_them()]self with glass!</span>", "<span class='userdanger'>You slam into [W] and shatter it, shredding yourself with glass!</span>")
|
||||
user.visible_message("<span class='danger'>[user] smacks into [W] and shatters it, shredding [user.p_them()]self with glass!</span>", "<span class='userdanger'>You smacks into [W] and shatter it, shredding yourself with glass!</span>")
|
||||
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] slams into [W] like a bug, then slowly slides off it!</span>", "<span class='userdanger'>You slam into [W] like a bug, then slowly slide off it!</span>")
|
||||
user.visible_message("<span class='danger'>[user] smacks into [W] like a bug!</span>", "<span class='userdanger'>You smacks into [W] like a bug!</span>")
|
||||
user.Paralyze(10)
|
||||
user.Knockdown(30)
|
||||
W.take_damage(20 * speed)
|
||||
W.take_damage(30 * speed)
|
||||
user.adjustStaminaLoss(10 * speed)
|
||||
user.adjustBruteLoss(5 * speed)
|
||||
|
||||
|
||||
@@ -77,8 +77,6 @@
|
||||
if (success)
|
||||
log_game("[key_name(teleatom)] has teleported from [loc_name(curturf)] to [loc_name(destturf)]")
|
||||
tele_play_specials(teleatom, destturf, effectout, asoundout)
|
||||
if(ismegafauna(teleatom))
|
||||
message_admins("[teleatom] [ADMIN_FLW(teleatom)] has teleported from [ADMIN_VERBOSEJMP(curturf)] to [ADMIN_VERBOSEJMP(destturf)].")
|
||||
|
||||
if(ismob(teleatom))
|
||||
var/mob/M = teleatom
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
clothes_req = FALSE
|
||||
charge_max = 600
|
||||
invocation = "DOOOOOOOOOOOOOOOOOOOOM!!!"
|
||||
invocation_type = "shout"
|
||||
invocation_type = INVOCATION_SHOUT
|
||||
action_icon_state = "void_magnet"
|
||||
|
||||
/obj/effect/proc_holder/spell/self/void/can_cast(mob/user = usr)
|
||||
|
||||
@@ -77,5 +77,5 @@ GLOBAL_LIST_INIT(skill_types, subtypesof(/datum/skill))
|
||||
pod.explosionSize = list(0,0,0,0)
|
||||
to_chat(mind.current, "<span class='nicegreen'>My legendary skill has attracted the attention of the Professional [title] Association. It seems they are sending me a status symbol to commemorate my abilities.</span>")
|
||||
var/turf/T = get_turf(mind.current)
|
||||
new /obj/effect/dp_target(T, pod , new skill_cape_path(T))
|
||||
new /obj/effect/pod_landingzone(T, pod , new skill_cape_path(T))
|
||||
LAZYADD(mind.skills_rewarded, src.type)
|
||||
|
||||
@@ -96,7 +96,6 @@
|
||||
/datum/quirk/brainproblems/on_process()
|
||||
if(HAS_TRAIT(quirk_holder, TRAIT_TUMOR_SUPPRESSED))
|
||||
return
|
||||
|
||||
quirk_holder.adjustOrganLoss(ORGAN_SLOT_BRAIN, 0.2)
|
||||
|
||||
/datum/quirk/deafness
|
||||
@@ -484,6 +483,13 @@
|
||||
hardcore_value = 4
|
||||
var/dumb_thing = TRUE
|
||||
|
||||
/datum/quirk/social_anxiety/add()
|
||||
RegisterSignal(quirk_holder, COMSIG_MOB_EYECONTACT, .proc/eye_contact)
|
||||
RegisterSignal(quirk_holder, COMSIG_MOB_EXAMINATE, .proc/looks_at_floor)
|
||||
|
||||
/datum/quirk/social_anxiety/remove()
|
||||
UnregisterSignal(quirk_holder, list(COMSIG_MOB_EYECONTACT, COMSIG_MOB_EXAMINATE))
|
||||
|
||||
/datum/quirk/social_anxiety/on_process()
|
||||
var/nearby_people = 0
|
||||
for(var/mob/living/carbon/human/H in oview(3, quirk_holder))
|
||||
@@ -501,6 +507,43 @@
|
||||
if(prob(1))
|
||||
new/obj/item/reagent_containers/food/snacks/spaghetti/pastatomato(get_turf(H)) //now that's what I call spaghetti code
|
||||
|
||||
// small chance to make eye contact with inanimate objects/mindless mobs because of nerves
|
||||
/datum/quirk/social_anxiety/proc/looks_at_floor(datum/source, atom/A)
|
||||
var/mob/living/mind_check = A
|
||||
if(prob(85) || (istype(mind_check) && mind_check.mind))
|
||||
return
|
||||
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, "<span class='smallnotice'>You make eye contact with [A].</span>"), 3)
|
||||
|
||||
/datum/quirk/social_anxiety/proc/eye_contact(datum/source, mob/living/other_mob, triggering_examiner)
|
||||
if(prob(75))
|
||||
return
|
||||
var/msg
|
||||
if(triggering_examiner)
|
||||
msg = "You make eye contact with [other_mob], "
|
||||
else
|
||||
msg = "[other_mob] makes eye contact with you, "
|
||||
|
||||
switch(rand(1,3))
|
||||
if(1)
|
||||
quirk_holder.Jitter(10)
|
||||
msg += "causing you to start fidgeting!"
|
||||
if(2)
|
||||
quirk_holder.stuttering = max(3, quirk_holder.stuttering)
|
||||
msg += "causing you to start stuttering!"
|
||||
if(3)
|
||||
quirk_holder.Stun(2 SECONDS)
|
||||
msg += "causing you to freeze up!"
|
||||
|
||||
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "anxiety_eyecontact", /datum/mood_event/anxiety_eyecontact)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, "<span class='userdanger'>[msg]</span>"), 3) // so the examine signal has time to fire and this will print after
|
||||
return COMSIG_BLOCK_EYECONTACT
|
||||
|
||||
/datum/mood_event/anxiety_eyecontact
|
||||
description = "<span class='warning'>Sometimes eye contact makes me so nervous...</span>\n"
|
||||
mood_change = -5
|
||||
timeout = 3 MINUTES
|
||||
|
||||
/datum/quirk/junkie
|
||||
name = "Junkie"
|
||||
desc = "You can't get enough of hard drugs."
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/datum/wires/conveyor
|
||||
holder_type = /obj/machinery/conveyor_switch
|
||||
proper_name = "conveyor"
|
||||
/// var holder that logs who put the assembly inside and gets transfered to the switch on pulse
|
||||
var/mob/fingerman
|
||||
|
||||
/datum/wires/conveyor/New(atom/holder)
|
||||
add_duds(1)
|
||||
..()
|
||||
|
||||
/datum/wires/conveyor/on_pulse(wire)
|
||||
var/obj/machinery/conveyor_switch/C = holder
|
||||
C.interact(fingerman)
|
||||
|
||||
/datum/wires/conveyor/interactable(mob/user)
|
||||
fingerman = user
|
||||
return TRUE
|
||||
Reference in New Issue
Block a user