mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Merge branch 'master' of https://github.com/tgstation/tgstation into upstream-23-10-2025
This commit is contained in:
@@ -18,9 +18,7 @@
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!IS_CHANGELING(C))
|
||||
var/obj/item/organ/ears/ears = C.get_organ_slot(ORGAN_SLOT_EARS)
|
||||
if(ears)
|
||||
ears.adjustEarDamage(0, 30)
|
||||
C.sound_damage(deafen = 30 SECONDS)
|
||||
C.adjust_confusion(25 SECONDS)
|
||||
C.set_jitter_if_lower(100 SECONDS)
|
||||
else
|
||||
|
||||
@@ -19,12 +19,11 @@
|
||||
cult_team = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/destructible/cult/Initialize(mapload)
|
||||
/obj/structure/destructible/cult/on_craft_completion(list/components, datum/crafting_recipe/current_recipe, atom/crafter)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_ATOM_CONSTRUCTED, PROC_REF(on_constructed))
|
||||
|
||||
/obj/structure/destructible/cult/proc/on_constructed(datum/source, mob/builder)
|
||||
SIGNAL_HANDLER
|
||||
if(!ismob(crafter))
|
||||
return
|
||||
var/mob/living/builder = crafter
|
||||
var/datum/antagonist/cult/cultist = builder.mind?.has_antag_datum(/datum/antagonist/cult, TRUE)
|
||||
cult_team = cultist?.get_team()
|
||||
|
||||
|
||||
@@ -264,8 +264,7 @@
|
||||
hearer.adjust_timed_status_effect(15 SECONDS, /datum/status_effect/speech/slurring/heretic)
|
||||
hearer.emote("scream")
|
||||
hearer.add_mood_event("gates_of_mansus", /datum/mood_event/gates_of_mansus)
|
||||
var/obj/item/organ/ears/regret = hearer.get_organ_slot(ORGAN_SLOT_EARS)
|
||||
regret?.adjustEarDamage(10,20)
|
||||
hearer.sound_damage(10, 40 SECONDS)
|
||||
return "[owner.p_Their()] lungs emit [span_hypnophrase(breath_noise)]"
|
||||
|
||||
/// It's full of worms
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
/// The range of the paintings effect
|
||||
var/range = 7
|
||||
|
||||
/obj/structure/sign/painting/eldritch/Initialize(mapload, dir, building)
|
||||
/obj/structure/sign/painting/eldritch/Initialize(mapload)
|
||||
. = ..()
|
||||
if(ispath(applied_status_effect))
|
||||
var/static/list/connections = list(COMSIG_ATOM_ENTERED = PROC_REF(apply_status_effect))
|
||||
@@ -177,7 +177,7 @@
|
||||
/obj/item/food/grown/harebell,
|
||||
)
|
||||
|
||||
/obj/structure/sign/painting/eldritch/vines/Initialize(mapload, dir, building)
|
||||
/obj/structure/sign/painting/eldritch/vines/Initialize(mapload)
|
||||
. = ..()
|
||||
new /datum/spacevine_controller(get_turf(src), mutations, 0, 10)
|
||||
|
||||
|
||||
@@ -584,6 +584,18 @@
|
||||
RegisterSignal(human_user, COMSIG_MOB_APPLY_DAMAGE_MODIFIERS, PROC_REF(on_apply_modifiers))
|
||||
signal_registered += COMSIG_MOB_APPLY_DAMAGE_MODIFIERS
|
||||
|
||||
// adjust ignores damage modifiers so we listen to them separately
|
||||
var/list/damage_adjust_signals = list(
|
||||
COMSIG_LIVING_ADJUST_BRUTE_DAMAGE,
|
||||
COMSIG_LIVING_ADJUST_BURN_DAMAGE,
|
||||
COMSIG_LIVING_ADJUST_OXY_DAMAGE,
|
||||
COMSIG_LIVING_ADJUST_TOX_DAMAGE,
|
||||
COMSIG_LIVING_ADJUST_STAMINA_DAMAGE
|
||||
)
|
||||
|
||||
RegisterSignals(human_user, damage_adjust_signals, PROC_REF(adjust_damage))
|
||||
signal_registered += damage_adjust_signals
|
||||
|
||||
RegisterSignal(human_user, COMSIG_LIVING_DEATH, PROC_REF(on_death))
|
||||
signal_registered += COMSIG_LIVING_DEATH
|
||||
|
||||
@@ -606,7 +618,8 @@
|
||||
|
||||
wearer.remove_movespeed_mod_immunities(REF(src), /datum/movespeed_modifier/equipment_speedmod)
|
||||
var/obj/item/organ/brain/our_brain = wearer.get_organ_slot(ORGAN_SLOT_BRAIN)
|
||||
REMOVE_TRAIT(our_brain, TRAIT_BRAIN_DAMAGE_NODEATH, REF(src))
|
||||
if(our_brain)
|
||||
REMOVE_TRAIT(our_brain, TRAIT_BRAIN_DAMAGE_NODEATH, REF(src))
|
||||
braindead = FALSE
|
||||
if(health_hud in user.hud_used.infodisplay)
|
||||
on_hud_remove(user)
|
||||
@@ -616,6 +629,14 @@
|
||||
if(braindead)
|
||||
return
|
||||
damage_mods += 0
|
||||
handle_damage(user, damage)
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/eldritch/moon/proc/adjust_damage(mob/living/user, type, amount, forced)
|
||||
SIGNAL_HANDLER
|
||||
handle_damage(user, amount)
|
||||
return COMPONENT_IGNORE_CHANGE
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/eldritch/moon/proc/handle_damage(mob/living/user, damage)
|
||||
user.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage * damage_modifier)
|
||||
check_braindeath(user)
|
||||
|
||||
|
||||
@@ -44,16 +44,14 @@
|
||||
|
||||
/// The duration of these effects are based on sanity, mainly for flavor but also to make it a weaker alpha strike
|
||||
var/maximum_duration = 15 SECONDS
|
||||
var/mind_gate_duration = ((SANITY_MAXIMUM - cast_on.mob_mood.sanity) / (SANITY_MAXIMUM - SANITY_INSANE)) * maximum_duration
|
||||
var/mind_gate_duration = ((SANITY_MAXIMUM - cast_on.mob_mood.sanity) / (SANITY_MAXIMUM - SANITY_INSANE)) * maximum_duration + 1 SECONDS
|
||||
to_chat(cast_on, span_warning("Your eyes cry out in pain, your ears bleed and your lips seal! THE MOON SMILES UPON YOU!"))
|
||||
cast_on.adjust_temp_blindness(mind_gate_duration + 1 SECONDS)
|
||||
cast_on.set_eye_blur_if_lower(mind_gate_duration + 2 SECONDS)
|
||||
cast_on.adjust_temp_blindness(mind_gate_duration)
|
||||
cast_on.set_eye_blur_if_lower(mind_gate_duration + 1 SECONDS)
|
||||
|
||||
var/obj/item/organ/ears/ears = cast_on.get_organ_slot(ORGAN_SLOT_EARS)
|
||||
//adjustEarDamage takes deafness duration parameter in one unit per two seconds, instead of the normal time, so we divide by two seconds
|
||||
ears?.adjustEarDamage(0, (mind_gate_duration + 1 SECONDS) / (2 SECONDS))
|
||||
cast_on.sound_damage(0, mind_gate_duration)
|
||||
|
||||
cast_on.adjust_silence(mind_gate_duration + 1 SECONDS)
|
||||
cast_on.adjust_silence(mind_gate_duration)
|
||||
cast_on.add_mood_event("moon_smile", /datum/mood_event/moon_smile)
|
||||
|
||||
// Only knocksdown if the target has a low enough sanity
|
||||
|
||||
@@ -415,6 +415,8 @@
|
||||
/datum/status_effect/heretic_passive/moon/on_apply()
|
||||
. = ..()
|
||||
var/obj/item/organ/brain/our_brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
|
||||
if(!our_brain)
|
||||
return
|
||||
ADD_TRAIT(our_brain, TRAIT_BRAIN_TRAUMA_IMMUNITY, REF(src))
|
||||
owner.AddElement(/datum/element/relay_attackers)
|
||||
RegisterSignal(owner, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(on_attacked))
|
||||
@@ -450,6 +452,8 @@
|
||||
|
||||
/datum/status_effect/heretic_passive/moon/on_remove()
|
||||
var/obj/item/organ/brain/our_brain = owner.get_organ_slot(ORGAN_SLOT_BRAIN)
|
||||
if(!our_brain)
|
||||
return ..()
|
||||
REMOVE_TRAIT(our_brain, TRAIT_BRAIN_TRAUMA_IMMUNITY, REF(src))
|
||||
REMOVE_TRAIT(owner, TRAIT_SLEEPIMMUNE, REF(src))
|
||||
UnregisterSignal(owner, COMSIG_ATOM_WAS_ATTACKED)
|
||||
|
||||
@@ -158,7 +158,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/ai_module/malf))
|
||||
Obtaining control of the weapon will be easier if Head of Staff office APCs are already under your control."
|
||||
cost = 130
|
||||
one_purchase = TRUE
|
||||
minimum_apcs = 15 // So you cant speedrun delta
|
||||
minimum_apcs = 10 // So you cant speedrun delta
|
||||
power_type = /datum/action/innate/ai/nuke_station
|
||||
unlock_text = span_notice("You slowly, carefully, establish a connection with the on-station self-destruct. You can now activate it at any time.")
|
||||
///List of areas that grant discounts. "heads_quarters" will match any head of staff office.
|
||||
|
||||
@@ -143,8 +143,6 @@
|
||||
|
||||
/// Looks across the station for items that are pirate specific exports
|
||||
/obj/machinery/loot_locator/proc/find_random_loot()
|
||||
if(!GLOB.exports_list.len)
|
||||
setupExports()
|
||||
var/list/possible_loot = list()
|
||||
for(var/datum/export/pirate/possible_export in GLOB.exports_list)
|
||||
possible_loot += possible_export
|
||||
@@ -404,6 +402,7 @@
|
||||
deltimer(sending_timer)
|
||||
|
||||
/datum/export/pirate
|
||||
abstract_type = /datum/export/pirate
|
||||
sales_market = EXPORT_MARKET_PIRACY
|
||||
|
||||
/// Attempts to find the thing on station
|
||||
@@ -423,8 +422,7 @@
|
||||
if(head_mobs.len)
|
||||
return pick(head_mobs)
|
||||
|
||||
/datum/export/pirate/ransom/get_cost(atom/movable/exported_item)
|
||||
var/mob/living/carbon/human/ransomee = exported_item
|
||||
/datum/export/pirate/ransom/get_base_cost(mob/living/carbon/human/ransomee)
|
||||
if(ransomee.stat != CONSCIOUS || !ransomee.mind || HAS_TRAIT(ransomee.mind, TRAIT_HAS_BEEN_KIDNAPPED)) //mint condition only
|
||||
return 0
|
||||
else if(FACTION_PIRATE in ransomee.faction) //can't ransom your fellow pirates to CentCom!
|
||||
@@ -474,18 +472,20 @@
|
||||
|
||||
/datum/export/pirate/cash
|
||||
cost = 1
|
||||
k_hit_percentile = 0.1 / MAX_STACK_SIZE
|
||||
unit_name = "bill"
|
||||
export_types = list(/obj/item/stack/spacecash)
|
||||
|
||||
/datum/export/pirate/cash/get_cost(obj/exported_item)
|
||||
var/obj/item/stack/spacecash/cash = exported_item
|
||||
return cash.value * cash.amount
|
||||
/datum/export/pirate/cash/get_amount(obj/item/stack/spacecash/cash)
|
||||
return cash.amount
|
||||
|
||||
/datum/export/pirate/cash/get_base_cost(obj/item/stack/spacecash/cash)
|
||||
return cash.value
|
||||
|
||||
/datum/export/pirate/holochip
|
||||
cost = 1
|
||||
unit_name = "holochip"
|
||||
export_types = list(/obj/item/holochip)
|
||||
|
||||
/datum/export/pirate/holochip/get_cost(atom/movable/exported_item)
|
||||
var/obj/item/holochip/chip = exported_item
|
||||
/datum/export/pirate/holochip/get_base_cost(obj/item/holochip/chip)
|
||||
return chip.credits
|
||||
|
||||
Reference in New Issue
Block a user