mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 04:26:03 +01:00
Merge commit '179a607a90ad7ec62bdaff4e6fe72af60ee56442' of https://github.com/tgstation/tgstation into upstream-24-10b
This commit is contained in:
@@ -13,41 +13,46 @@ GLOBAL_VAR_INIT(fscpassword, generate_password())
|
||||
. = ..()
|
||||
password = "[GLOB.fscpassword]"
|
||||
|
||||
/obj/machinery/vending/medical/syndicate_access/cybersun
|
||||
/obj/machinery/vending/medical/syndicate/cybersun
|
||||
name = "\improper CyberMed ++"
|
||||
desc = "An advanced vendor that dispenses medical drugs, both recreational and medicinal."
|
||||
products = list(/obj/item/reagent_containers/syringe = 4,
|
||||
/obj/item/healthanalyzer = 4,
|
||||
/obj/item/reagent_containers/pill/patch/libital = 5,
|
||||
/obj/item/reagent_containers/pill/patch/aiuri = 5,
|
||||
/obj/item/reagent_containers/cup/bottle/multiver = 1,
|
||||
/obj/item/reagent_containers/cup/bottle/syriniver = 1,
|
||||
/obj/item/reagent_containers/cup/bottle/epinephrine = 3,
|
||||
/obj/item/reagent_containers/cup/bottle/morphine = 3,
|
||||
/obj/item/reagent_containers/cup/bottle/potass_iodide = 1,
|
||||
/obj/item/reagent_containers/cup/bottle/salglu_solution = 3,
|
||||
/obj/item/reagent_containers/syringe/antiviral = 5,
|
||||
/obj/item/reagent_containers/medigel/libital = 2,
|
||||
/obj/item/reagent_containers/medigel/aiuri = 2,
|
||||
/obj/item/reagent_containers/medigel/sterilizine = 1)
|
||||
products = list(
|
||||
/obj/item/reagent_containers/syringe = 4,
|
||||
/obj/item/healthanalyzer = 4,
|
||||
/obj/item/reagent_containers/pill/patch/libital = 5,
|
||||
/obj/item/reagent_containers/pill/patch/aiuri = 5,
|
||||
/obj/item/reagent_containers/cup/bottle/multiver = 1,
|
||||
/obj/item/reagent_containers/cup/bottle/syriniver = 1,
|
||||
/obj/item/reagent_containers/cup/bottle/epinephrine = 3,
|
||||
/obj/item/reagent_containers/cup/bottle/morphine = 3,
|
||||
/obj/item/reagent_containers/cup/bottle/potass_iodide = 1,
|
||||
/obj/item/reagent_containers/cup/bottle/salglu_solution = 3,
|
||||
/obj/item/reagent_containers/syringe/antiviral = 5,
|
||||
/obj/item/reagent_containers/medigel/libital = 2,
|
||||
/obj/item/reagent_containers/medigel/aiuri = 2,
|
||||
/obj/item/reagent_containers/medigel/sterilizine = 1,
|
||||
)
|
||||
contraband = list(/obj/item/reagent_containers/cup/bottle/cold = 2,
|
||||
/obj/item/restraints/handcuffs = 4,
|
||||
/obj/item/storage/backpack/duffelbag/syndie/surgery = 1,
|
||||
/obj/item/storage/medkit/tactical = 1)
|
||||
premium = list(/obj/item/storage/pill_bottle/psicodine = 2,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 3,
|
||||
/obj/item/reagent_containers/hypospray/medipen/atropine = 2,
|
||||
/obj/item/storage/medkit/regular = 3,
|
||||
/obj/item/storage/medkit/brute = 1,
|
||||
/obj/item/storage/medkit/fire = 1,
|
||||
/obj/item/storage/medkit/toxin = 1,
|
||||
/obj/item/storage/medkit/o2 = 1,
|
||||
/obj/item/storage/medkit/advanced = 1,
|
||||
/obj/item/defibrillator/loaded = 1,
|
||||
/obj/item/wallframe/defib_mount = 1,
|
||||
/obj/item/sensor_device = 2,
|
||||
/obj/item/pinpointer/crew = 2,
|
||||
/obj/item/shears = 1)
|
||||
/obj/item/restraints/handcuffs = 4,
|
||||
/obj/item/storage/backpack/duffelbag/syndie/surgery = 1,
|
||||
/obj/item/storage/medkit/tactical = 1,
|
||||
)
|
||||
premium = list(
|
||||
/obj/item/storage/pill_bottle/psicodine = 2,
|
||||
/obj/item/reagent_containers/hypospray/medipen = 3,
|
||||
/obj/item/reagent_containers/hypospray/medipen/atropine = 2,
|
||||
/obj/item/storage/medkit/regular = 3,
|
||||
/obj/item/storage/medkit/brute = 1,
|
||||
/obj/item/storage/medkit/fire = 1,
|
||||
/obj/item/storage/medkit/toxin = 1,
|
||||
/obj/item/storage/medkit/o2 = 1,
|
||||
/obj/item/storage/medkit/advanced = 1,
|
||||
/obj/item/defibrillator/loaded = 1,
|
||||
/obj/item/wallframe/defib_mount = 1,
|
||||
/obj/item/sensor_device = 2,
|
||||
/obj/item/pinpointer/crew = 2,
|
||||
/obj/item/shears = 1,
|
||||
)
|
||||
|
||||
/////////// forgottenship lore
|
||||
|
||||
@@ -112,15 +117,15 @@ GLOBAL_VAR_INIT(fscpassword, generate_password())
|
||||
/area/ruin/space/has_grav/syndicate_forgotten_ship
|
||||
name = "Syndicate Forgotten Ship"
|
||||
icon_state = "syndie-ship"
|
||||
ambientsounds = list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambigen8.ogg', 'sound/ambience/ambigen9.ogg')
|
||||
ambientsounds = list('sound/ambience/misc/ambidanger.ogg', 'sound/ambience/misc/ambidanger2.ogg', 'sound/ambience/general/ambigen8.ogg', 'sound/ambience/general/ambigen9.ogg')
|
||||
|
||||
/area/ruin/space/has_grav/syndicate_forgotten_cargopod
|
||||
name = "Syndicate Forgotten Cargo pod"
|
||||
icon_state = "syndie-ship"
|
||||
ambientsounds = list('sound/ambience/ambigen3.ogg', 'sound/ambience/signal.ogg')
|
||||
ambientsounds = list('sound/ambience/general/ambigen3.ogg', 'sound/ambience/misc/signal.ogg')
|
||||
|
||||
/area/ruin/space/has_grav/powered/syndicate_forgotten_vault
|
||||
name = "Syndicate Forgotten Vault"
|
||||
icon_state = "syndie-ship"
|
||||
ambientsounds = list('sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg')
|
||||
ambientsounds = list('sound/ambience/engineering/ambitech2.ogg', 'sound/ambience/engineering/ambitech3.ogg')
|
||||
area_flags = NOTELEPORT | UNIQUE_AREA
|
||||
|
||||
@@ -115,16 +115,14 @@
|
||||
|
||||
// [Hazards & Traps]
|
||||
//cyborg holobarriers that die when the boss dies, how exciting
|
||||
#define SELFDESTRUCT_QUEUE "hauntedtradingpost_sd" //make sure it matches the AI cores ID
|
||||
/obj/structure/holosign/barrier/cyborg/cybersun_ai_shield
|
||||
desc = "A fragile holographic energy field projected by an AI core. It keeps unwanted humanoids at safe distance."
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/cybersun_ai_shield/Initialize(mapload)
|
||||
. = ..()
|
||||
GLOB.selfdestructs_when_boss_dies += src
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/cybersun_ai_shield/Destroy()
|
||||
GLOB.selfdestructs_when_boss_dies -= src
|
||||
return ..()
|
||||
if(mapload) //shouldnt queue when we arent even part of a ruin, probably admin shitspawned
|
||||
SSqueuelinks.add_to_queue(src, SELFDESTRUCT_QUEUE)
|
||||
|
||||
//smes that produces power, until the boss dies then it self destructs and you gotta make your own power
|
||||
/obj/machinery/power/smes/magical/cybersun
|
||||
@@ -136,12 +134,7 @@
|
||||
/obj/machinery/power/smes/magical/cybersun/Initialize(mapload)
|
||||
. = ..()
|
||||
if(donk_ai_slave)
|
||||
GLOB.selfdestructs_when_boss_dies += src
|
||||
|
||||
/obj/machinery/power/smes/magical/cybersun/Destroy()
|
||||
if(donk_ai_slave)
|
||||
GLOB.selfdestructs_when_boss_dies -= src
|
||||
return ..()
|
||||
SSqueuelinks.add_to_queue(src, SELFDESTRUCT_QUEUE)
|
||||
|
||||
//this is a trigger for traps involving doors and shutters
|
||||
//doors get closed and bolted, shutters get cycled open/closed
|
||||
@@ -165,19 +158,31 @@
|
||||
var/suicide_pact = FALSE
|
||||
//id of the suicide pact this tripwire is in
|
||||
var/suicide_pact_id
|
||||
GLOBAL_LIST_EMPTY(tripwire_suicide_pact)
|
||||
|
||||
/obj/machinery/button/door/invisible_tripwire/Initialize(mapload)
|
||||
. = ..()
|
||||
if(donk_ai_slave == TRUE)
|
||||
GLOB.selfdestructs_when_boss_dies += src
|
||||
if(suicide_pact == TRUE && suicide_pact_id != null)
|
||||
GLOB.tripwire_suicide_pact += src
|
||||
if(donk_ai_slave)
|
||||
SSqueuelinks.add_to_queue(src, SELFDESTRUCT_QUEUE)
|
||||
if(suicide_pact && suicide_pact_id != null)
|
||||
SSqueuelinks.add_to_queue(src, suicide_pact_id)
|
||||
. = INITIALIZE_HINT_LATELOAD
|
||||
var/static/list/loc_connections = list(
|
||||
COMSIG_ATOM_ENTERED = PROC_REF(on_entered),
|
||||
)
|
||||
AddElement(/datum/element/connect_loc, loc_connections)
|
||||
|
||||
/obj/machinery/button/door/invisible_tripwire/post_machine_initialize()
|
||||
. = ..()
|
||||
if(!suicide_pact || isnull(SSqueuelinks.queues[suicide_pact_id]))
|
||||
return // we got beat to it
|
||||
SSqueuelinks.pop_link(suicide_pact_id)
|
||||
|
||||
/obj/machinery/button/door/invisible_tripwire/MatchedLinks(id, list/partners)
|
||||
if(id != suicide_pact_id)
|
||||
return
|
||||
for(var/partner in partners)
|
||||
RegisterSignal(partner, COMSIG_PUZZLE_COMPLETED, TYPE_PROC_REF(/datum, selfdelete))
|
||||
|
||||
/obj/machinery/button/door/invisible_tripwire/proc/on_entered(atom/source, atom/movable/victim)
|
||||
SIGNAL_HANDLER
|
||||
if(!isliving(victim))
|
||||
@@ -194,19 +199,9 @@ GLOBAL_LIST_EMPTY(tripwire_suicide_pact)
|
||||
INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, interact), victim)
|
||||
if(multiuse && uses_remaining != 1)
|
||||
return
|
||||
if(suicide_pact&& suicide_pact_id)
|
||||
for (var/obj/machinery/button/door/invisible_tripwire/pact_member in GLOB.tripwire_suicide_pact)
|
||||
if(src.suicide_pact_id == pact_member.suicide_pact_id)
|
||||
qdel(pact_member)
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/machinery/button/door/invisible_tripwire/Destroy()
|
||||
if(donk_ai_slave)
|
||||
GLOB.selfdestructs_when_boss_dies -= src
|
||||
if(suicide_pact && suicide_pact_id)
|
||||
GLOB.tripwire_suicide_pact -= src
|
||||
return ..()
|
||||
SEND_SIGNAL(src, COMSIG_PUZZLE_COMPLETED)
|
||||
qdel(src)
|
||||
|
||||
//door button that destroys itself when it is pressed
|
||||
/obj/machinery/button/door/selfdestructs
|
||||
@@ -271,13 +266,8 @@ GLOBAL_LIST_EMPTY(tripwire_suicide_pact)
|
||||
proximity_monitor?.set_range(trigger_range)
|
||||
my_turf = get_turf(src)
|
||||
host_machine = locate(/obj/machinery) in loc
|
||||
if(donk_ai_slave == TRUE)
|
||||
GLOB.selfdestructs_when_boss_dies += src
|
||||
|
||||
/obj/effect/overloader_trap/Destroy()
|
||||
if(donk_ai_slave == TRUE)
|
||||
GLOB.selfdestructs_when_boss_dies -= src
|
||||
return ..()
|
||||
if(donk_ai_slave)
|
||||
SSqueuelinks.add_to_queue(src, SELFDESTRUCT_QUEUE)
|
||||
|
||||
/obj/effect/overloader_trap/proc/check_faction(mob/target)
|
||||
for(var/faction1 in faction)
|
||||
@@ -337,8 +327,8 @@ GLOBAL_LIST_EMPTY(tripwire_suicide_pact)
|
||||
base_icon_state = "donk"
|
||||
stun_projectile = /obj/projectile/bullet/foam_dart/riot
|
||||
lethal_projectile = /obj/projectile/bullet/c9mm/blunttip
|
||||
lethal_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
|
||||
stun_projectile_sound = 'sound/weapons/gun/pistol/shot.ogg'
|
||||
lethal_projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
|
||||
stun_projectile_sound = 'sound/items/weapons/gun/pistol/shot.ogg'
|
||||
desc = "A ballistic machine gun auto-turret with Donk Co. branding. It uses 9mm rounds."
|
||||
armor_type = /datum/armor/donk_turret
|
||||
scan_range = 6
|
||||
@@ -363,9 +353,9 @@ GLOBAL_LIST_EMPTY(tripwire_suicide_pact)
|
||||
icon_state = "red_lethal"
|
||||
base_icon_state = "red"
|
||||
stun_projectile = /obj/projectile/energy/electrode
|
||||
stun_projectile_sound = 'sound/weapons/taser.ogg'
|
||||
stun_projectile_sound = 'sound/items/weapons/taser.ogg'
|
||||
lethal_projectile = /obj/projectile/beam/laser/cybersun
|
||||
lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
lethal_projectile_sound = 'sound/items/weapons/lasercannonfire.ogg'
|
||||
desc = "An energy gun auto-turret with Cybersun branding. It fires high-energy plasma beams that do a lot of damage, but it can be fairly slow."
|
||||
armor_type = /datum/armor/syndicate_shuttle
|
||||
scan_range = 6
|
||||
@@ -381,3 +371,4 @@ GLOBAL_LIST_EMPTY(tripwire_suicide_pact)
|
||||
damage = 30
|
||||
wound_bonus = -50
|
||||
|
||||
#undef SELFDESTRUCT_QUEUE
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
/obj/lightning_thrower/process(seconds_per_tick)
|
||||
var/list/dirs = throw_diagonals ? GLOB.diagonals : GLOB.cardinals
|
||||
throw_diagonals = !throw_diagonals
|
||||
playsound(src, 'sound/magic/lightningbolt.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
|
||||
playsound(src, 'sound/effects/magic/lightningbolt.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, ignore_walls = FALSE)
|
||||
for(var/direction in dirs)
|
||||
var/victim_turf = get_step(src, direction)
|
||||
if(isclosedturf(victim_turf))
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
switch(damage_type)
|
||||
if(BRUTE)
|
||||
if(damage_amount)
|
||||
playsound(loc, 'sound/effects/attackblob.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
|
||||
playsound(loc, 'sound/effects/blob/attackblob.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
|
||||
else
|
||||
playsound(loc, 'sound/effects/meatslap.ogg', vol = 50, vary = TRUE, pressure_affected = FALSE)
|
||||
if(BURN)
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/mod_installer/proc/play_install_sound()
|
||||
playsound(src, 'sound/items/rped.ogg', 30, FALSE)
|
||||
playsound(src, 'sound/items/tools/rped.ogg', 30, FALSE)
|
||||
|
||||
/obj/machinery/mod_installer/update_icon_state()
|
||||
icon_state = busy ? busy_icon_state : "[base_icon_state][state_open ? "_open" : null]"
|
||||
|
||||
Reference in New Issue
Block a user