Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169,131 changes: 169,131 additions & 0 deletions _maps/bandastation/NewSydney_mini.dmm

Large diffs are not rendered by default.

45 changes: 45 additions & 0 deletions _maps/new_sydney.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{
"version": 1,
"map_name": "New Sydney",
"map_path": "bandastation",
"map_file": "NewSydney_mini.dmm",
"fluff_name": "Новый Сидней",
"space_ruin_levels": 0,
"space_empty_levels": 0,
"main_floor": 1,
"planetary": 1,
"give_players_hooks": 1,
"shuttles": {
"ferry": "ferry_fancy",
"whiteship": "whiteship_delta"
},
"traits": [
{
"Up": true,
"Linkage": null,
"Baseturf": "/turf/open/misc/asteroid/lowpressure",
"Gravity": true,
"No Parallax": true
},
{
"Down": true,
"Linkage": null,
"Baseturf": "/turf/open/misc/asteroid/lowpressure",
"Gravity": true,
"No Parallax": true
}
],
"ignored_unit_tests": [
"/datum/unit_test/antag_moodlets",
"/datum/unit_test/cargo_dep_order_locations",
"/datum/unit_test/maptest_job_roundstart_spawnpoints",
"/datum/unit_test/maptest_required_map_items",
"/datum/unit_test/spy_bounty",
"/datum/unit_test/space_dragon_expiration",
"/datum/unit_test/nuke_cinematic",
"/datum/unit_test/atmospherics_sanity",
"/datum/unit_test/maptest_mapload_space_verification",
"/datum/unit_test/modify_fantasy_variable",
"/datum/unit_test/create_and_destroy"
]
}
7 changes: 7 additions & 0 deletions code/__HELPERS/see_through_maps.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
// BANDASTATION ADDITION - START
///A 3x3 area, with the tile directly above hidden
#define SEE_THROUGH_MAP_STATION_STATUE "station_statue"
///A 2x3 area for the roof of a military tent
#define SEE_THROUGH_MAP_TENT "tent"
// BANDASTATION ADDITION - END
///Two rows of three wide, but offset one tile to the left because thats how shipping containers work
#define SEE_THROUGH_MAP_SHIPPING_CONTAINER "shipping_container"
Expand Down Expand Up @@ -82,6 +84,11 @@ GLOBAL_LIST_INIT(see_through_maps, list(
list(-1, 0, 0), list(0, 0, 0), list(1, 0, 0),
list(-1, -1, 0), list(0, -1, 0), list(1, -1, 0)
),
SEE_THROUGH_MAP_TENT = list(
list(0, 1, 0), list(1, 1, 0),
list(0, 2, 0), list(1, 2, 0),
list(0, 3, 0), list(1, 3, 0)
),
// BANDASTATION ADDITION - END
//No
SEE_THROUGH_MAP_RATVAR_WRECK = list(
Expand Down
10 changes: 8 additions & 2 deletions code/modules/projectiles/projectile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,12 @@
reagent_note = "REAGENTS: [pretty_string_from_reagent_list(reagents.reagent_list)]"

if(ismob(firer) && !do_not_log)
world.log << "PROJECTILE HIT: [firer] -> [living_target]"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

low

💡 Предложение

В коде оставлен отладочный вывод world.log << .... Он будет спамить в консоль сервера при каждом попадании снаряда, что может негативно сказаться на производительности. Для логирования выстрелов ниже уже вызывается log_combat().

Рекомендуется удалить эту строку.

		if(isliving(living_target))
References
  1. Использование визуальных маркеров (Emoji) для классификации замечаний, вежливое обращение на «Вы» и нейтрально-деловой тон бортового ИИ. (link)

if(isliving(living_target))
var/mob/living/L = living_target
if(isliving(firer))
L.vars["quest_killer"] = firer

Check failure on line 403 in code/modules/projectiles/projectile.dm

View workflow job for this annotation

GitHub Actions / Integration Tests / run (runtimestation_minimal) / Run Tests (runtimestation_minimal; 516)

Minimal Runtime Station: /datum/unit_test/gun_go_bang

[23:21:43] Runtime in code/modules/projectiles/projectile.dm,403: Undefined variable /mob/living/carbon/human/consistent/var/quest_killer proc name: on hit (/obj/projectile/proc/on_hit) src: 9mm bullet (/obj/projectile/bullet/c9mm) src.loc: the floor (126,126,7) (/turf/open/floor/iron) call stack: 9mm bullet (/obj/projectile/bullet/c9mm): on hit(John Doe (/mob/living/carbon/human/consistent), 0, 0) John Doe (/mob/living/carbon/human/consistent): bullet act(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): bullet act(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): bullet act(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): projectile hit(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): projectile hit(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, null) 9mm bullet (/obj/projectile/bullet/c9mm): process hit loop(John Doe (/mob/living/carbon/human/consistent)) 9mm bullet (/obj/projectile/bullet/c9mm): impact(John Doe (/mob/living/carbon/human/consistent)) 9mm bullet (/obj/projectile/bullet/c9mm): fire(null, John Doe (/mob/living/carbon/human/consistent)) 9mm bullet casing (/obj/item/ammo_casing/c9mm): throw proj(John Doe (/mob/living/carbon/human/consistent), the floor (126,126,7) (/turf/open/floor/iron), John Doe (/mob/living/carbon/human/consistent), "", 0, the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol)) ... the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): process fire(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), 1, "", "", 0) the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): fire gun(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), 1, "") the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): fire gun(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), 1, "") the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): try fire gun(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), "") the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): interact with atom(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), null) John Doe (/mob/living/carbon/human/consistent): base item interaction(John Doe (/mob/living/carbon/human/consistent), the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol), null) the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): melee attack chain(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), null, /list (/list)) /datum/unit_test/gun_go_bang (/datum/unit_test/gun_go_bang): Run() RunUnitTests() /datum/callback (/datum/callback): InvokeAsync()

Check failure on line 403 in code/modules/projectiles/projectile.dm

View workflow job for this annotation

GitHub Actions / Integration Tests / run (runtimestation_minimal) / Run Tests (runtimestation_minimal; 516)

Minimal Runtime Station: /datum/unit_test/pistol_whip

[23:19:57] Runtime in code/modules/projectiles/projectile.dm,403: Undefined variable /mob/living/carbon/human/consistent/var/quest_killer proc name: on hit (/obj/projectile/proc/on_hit) src: 9mm bullet (/obj/projectile/bullet/c9mm) src.loc: the floor (126,126,7) (/turf/open/floor/iron) call stack: 9mm bullet (/obj/projectile/bullet/c9mm): on hit(John Doe (/mob/living/carbon/human/consistent), 0, 0) John Doe (/mob/living/carbon/human/consistent): bullet act(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): bullet act(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): bullet act(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): projectile hit(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, 0) John Doe (/mob/living/carbon/human/consistent): projectile hit(9mm bullet (/obj/projectile/bullet/c9mm), "chest", 0, null) 9mm bullet (/obj/projectile/bullet/c9mm): process hit loop(John Doe (/mob/living/carbon/human/consistent)) 9mm bullet (/obj/projectile/bullet/c9mm): impact(John Doe (/mob/living/carbon/human/consistent)) 9mm bullet (/obj/projectile/bullet/c9mm): fire(null, John Doe (/mob/living/carbon/human/consistent)) 9mm bullet casing (/obj/item/ammo_casing/c9mm): throw proj(John Doe (/mob/living/carbon/human/consistent), the floor (127,126,7) (/turf/open/floor/iron), John Doe (/mob/living/carbon/human/consistent), "left=1&button=left", 0, the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol)) ... the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): fire gun(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), 1, "left=1&button=left") the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): fire gun(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), 1, "left=1&button=left") the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): try fire gun(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), "left=1&button=left") the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): interact with atom(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), /list (/list)) John Doe (/mob/living/carbon/human/consistent): base item interaction(John Doe (/mob/living/carbon/human/consistent), the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol), /list (/list)) the Makarov pistol (/obj/item/gun/ballistic/automatic/pistol): melee attack chain(John Doe (/mob/living/carbon/human/consistent), John Doe (/mob/living/carbon/human/consistent), /list (/list), /list (/list)) John Doe (/mob/living/carbon/human/consistent): ClickOn(John Doe (/mob/living/carbon/human/consistent), "left=1&button=left") /datum/unit_test/pistol_whip (/datum/unit_test/pistol_whip): Run() RunUnitTests() /datum/callback (/datum/callback): InvokeAsync()

log_combat(firer, living_target, "shot", src, reagent_note)
return BULLET_ACT_HIT

Expand Down Expand Up @@ -1251,8 +1257,8 @@
free_hitscan_forceMove = TRUE
forceMove(source_loc)
starting = source_loc
pixel_x = source.pixel_x - source.base_pixel_x
pixel_y = source.pixel_y - source.base_pixel_y
pixel_x = source.pixel_x
pixel_y = source.pixel_y
original = target

// Trim off excess pixel_x/y by converting them into turf offset
Expand Down
1 change: 1 addition & 0 deletions modular_bandastation/modular_bandastation.dme
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#include "_modpack.dm"
#include "_modpacks.dm"
#include "voyaker_events/_voyaker_events.dm"

// --- MODULES START --- //
#include "_defines220/_defines220.dme"
Expand Down
13 changes: 13 additions & 0 deletions modular_bandastation/voyaker_events/_voyaker_events.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/datum/modpack/voyaker_events
name = "Ивентовый код Воякера"
desc = "Модпак Воякера для всех ивентовых приблуд."
author = "Voyaker_RUS"

/datum/modpack/voyaker_events/pre_initialize()
. = ..()

/datum/modpack/voyaker_events/initialize()
. = ..()

/datum/modpack/voyaker_events/post_initialize()
. = ..()
51 changes: 51 additions & 0 deletions modular_bandastation/voyaker_events/_voyaker_events.dme
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// BEGIN_INTERNALS
// END_INTERNALS
// BEGIN_FILE_DIR
#define FILE_DIR .
// END_FILE_DIR
// BEGIN_PREFERENCES
// END_PREFERENCES
// BEGIN_INCLUDE
#include "_voyaker_events.dm"
#include "code\traders\trader_loyality.dm"
#include "code\traders\trader_quests.dm"
#include "code\traders\trader_targets.dm"
#include "code\traders\trader_vars.dm"
#include "code\ambience\ambience_landmarks.dm"
#include "code\anomalies\anomalies_controller.dm"
#include "code\anomalies\bluespace.dm"
#include "code\anomalies\grav.dm"
#include "code\anomalies\pyro.dm"
#include "code\areas\areas.dm"
#include "code\auto_cleanup\cleanup_casings.dm"
#include "code\auto_cleanup\cleanup_controller.dm"
#include "code\barricades\barricades.dm"
#include "code\cars\trucks.dm"
#include "code\cars\vehicles.dm"
#include "code\cars\vehicles_military.dm"
#include "code\city_props\city_props.dm"
#include "code\droppods\droppod_containers.dm"
#include "code\droppods\droppod_controller.dm"
#include "code\droppods\droppod_spawners.dm"
#include "code\extraction\extraction_controller.dm"
#include "code\extraction\extraction_logic.dm"
#include "code\flora\pines.dm"
#include "code\loot\loot_controller.dm"
#include "code\loot\loot_spawners.dm"
#include "code\loot_mobs\loot.dm"
#include "code\machinery\vending_traders.dm"
#include "code\mob\corpses.dm"
#include "code\mob\raid_death.dm"
#include "code\mob\raid_death_landmarks.dm"
#include "code\mobs\bigot.dm"
#include "code\mobs\bigot_controller.dm"
#include "code\mobs\forest_controller.dm"
#include "code\mobs\main_controller.dm"
#include "code\mobs\mutants_loot.dm"
#include "code\shelfs\shelfs.dm"
#include "code\tank\tank.dm"
#include "code\tents\tents.dm"
#include "code\turfs\basalt\basalt_burn.dm"
#include "code\turfs\water\water.dm"
#include "code\wooden_fence\wooden_fence.dm"
// END_INCLUDE
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
GLOBAL_LIST_EMPTY(area_ambients)

/obj/effect/landmark/ambient_sound
name = "ambient sound"
icon = 'icons/effects/hitsplats.dmi'
icon_state = "hitsplat_heal"
var/sound_file
var/sound_range = 15
var/min_delay = 30 SECONDS
var/max_delay = 90 SECONDS

/obj/effect/landmark/ambient_sound/Initialize(mapload)
. = ..()
GLOB.area_ambients += src
start_ambient()

/obj/effect/landmark/ambient_sound/Destroy()
GLOB.area_ambients -= src
return ..()

/obj/effect/landmark/ambient_sound/proc/start_ambient()
addtimer(
CALLBACK(src, PROC_REF(play_ambient)), rand(min_delay, max_delay))

/obj/effect/landmark/ambient_sound/proc/play_ambient()
if(QDELETED(src))
return
for(var/mob/M in viewers(sound_range, src))
playsound(get_turf(src), sound_file, 50, FALSE)
start_ambient()

/obj/effect/landmark/ambient_sound/dark_forest
name = "Dark Forest Ambient"
sound_file = 'modular_bandastation/voyaker_events/sounds/forest_wind.ogg'
min_delay = 20 SECONDS
max_delay = 60 SECONDS
sound_range = 25

/obj/effect/landmark/ambient_sound/radiation_lake
name = "Radiation Lake Ambient"
sound_file = 'modular_bandastation/voyaker_events/sounds/radiation_hum.ogg'
min_delay = 10 SECONDS
max_delay = 30 SECONDS
sound_range = 20

/obj/effect/landmark/ambient_sound/hub
name = "Hub Ambient"
sound_file = 'modular_bandastation/voyaker_events/sounds/hub.ogg'
min_delay = 10 SECONDS
max_delay = 30 SECONDS
sound_range = 15

/obj/effect/landmark/ambient_sound/bunker
name = "Bunker Work Ambient"
sound_file = 'modular_bandastation/voyaker_events/sounds/bunker.ogg'
min_delay = 10 SECONDS
max_delay = 50 SECONDS
sound_range = 20
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
GLOBAL_LIST_EMPTY(radiation_lake_anomaly_points)
GLOBAL_LIST_EMPTY(radiation_lake2_grav_points)
GLOBAL_LIST_EMPTY(pyro_anomaly_points)

/obj/effect/landmark/radiation_lake_anomaly
name = "EFTK Bluespace Anomaly Point"

Initialize(mapload)
. = ..()
GLOB.radiation_lake_anomaly_points += src

Destroy()
GLOB.radiation_lake_anomaly_points -= src
return ..()

/obj/effect/landmark/radiation_lake2_grav
name = "EFTK Gravity Anomaly Point"

Initialize(mapload)
. = ..()
GLOB.radiation_lake2_grav_points += src

Destroy()
GLOB.radiation_lake2_grav_points -= src
return ..()

/obj/effect/landmark/pyro_anomaly
name = "EFTK Pyro Anomaly Point"

Initialize(mapload)
. = ..()
GLOB.pyro_anomaly_points += src

Destroy()
GLOB.pyro_anomaly_points -= src
return ..()
44 changes: 44 additions & 0 deletions modular_bandastation/voyaker_events/code/anomalies/bluespace.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/obj/effect/anomaly/bluespace/radiation_lake
name = "unstable bluespace rift"
immortal = TRUE
lifespan = INFINITY
anomaly_core = null

/obj/effect/anomaly/bluespace/radiation_lake/detonate()
return

/obj/effect/anomaly/bluespace/radiation_lake/proc/move_to_lake()
if(!length(GLOB.radiation_lake_anomaly_points))
return
var/obj/effect/landmark/radiation_lake_anomaly/L = pick(GLOB.radiation_lake_anomaly_points)
if(!L)
return
forceMove(get_turf(L))

/obj/effect/anomaly/bluespace/radiation_lake/process()
..()
if(!istype(get_area(src), /area/new_sydney/dark_forest/radiation_lake))
move_to_lake()

/obj/effect/anomaly/bluespace/radiation_lake/anomalyEffect()
..()
if(prob(10))
relocate_within_lake()

/obj/effect/anomaly/bluespace/radiation_lake/proc/relocate_within_lake()
if(!length(GLOB.radiation_lake_anomaly_points))
return
var/obj/effect/landmark/radiation_lake_anomaly/L = pick(GLOB.radiation_lake_anomaly_points)
if(!L)
return
var/turf/target = get_turf(L)
new /obj/effect/temp_visual/bluespace_fissure(get_turf(src))
playsound(src, 'sound/effects/phasein.ogg', 50, TRUE)
forceMove(target)
new /obj/effect/temp_visual/bluespace_fissure(target)

/obj/effect/anomaly/bluespace/radiation_lake/Bumped(atom/movable/AM)
..()
if(isliving(AM))
var/mob/living/L = AM
L.adjust_tox_loss(5)
35 changes: 35 additions & 0 deletions modular_bandastation/voyaker_events/code/anomalies/grav.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/obj/effect/anomaly/grav/high/big/radiation_lake
name = "gravitational vortex"
immortal = TRUE
lifespan = INFINITY
anomaly_core = null

/obj/effect/anomaly/grav/high/big/radiation_lake/detonate()
return

/obj/effect/anomaly/grav/high/big/radiation_lake/anomalyEffect(seconds_per_tick)
. = ..()
if(!istype(get_area(src), /area/new_sydney/dark_forest/radiation_lake2))
move_to_zone()
if(prob(15))
relocate_within_zone()

/obj/effect/anomaly/grav/high/big/radiation_lake/proc/move_to_zone()
if(!length(GLOB.radiation_lake2_grav_points))
return
var/obj/effect/landmark/radiation_lake2_grav/L = pick(GLOB.radiation_lake2_grav_points)
if(!L)
return
forceMove(get_turf(L))

/obj/effect/anomaly/grav/high/big/radiation_lake/proc/relocate_within_zone()
if(!length(GLOB.radiation_lake2_grav_points))
return
var/obj/effect/landmark/radiation_lake2_grav/L = pick(GLOB.radiation_lake2_grav_points)
if(!L)
return
var/turf/target = get_turf(L)
new /obj/effect/temp_visual/circle_wave/gravity(get_turf(src))
playsound(src, 'sound/effects/magic/cosmic_energy.ogg', 50, TRUE)
forceMove(target)
new /obj/effect/temp_visual/circle_wave/gravity(target)
52 changes: 52 additions & 0 deletions modular_bandastation/voyaker_events/code/anomalies/pyro.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/obj/effect/anomaly/pyro/pyro_zone
name = "pyroclastic vortex"
immortal = TRUE
lifespan = INFINITY
anomaly_core = null
movement_type = FLOATING
light_range = 4
light_power = 2
light_color = "#FF6633"

/obj/effect/anomaly/pyro/pyro_zone/detonate()
return

/obj/effect/anomaly/pyro/pyro_zone/proc/move_to_zone()
if(!length(GLOB.pyro_anomaly_points))
return
var/obj/effect/landmark/pyro_anomaly/L = pick(GLOB.pyro_anomaly_points)
if(!L)
return
forceMove(get_turf(L))

/obj/effect/anomaly/pyro/pyro_zone/proc/relocate_within_zone()
if(!length(GLOB.pyro_anomaly_points))
return
var/obj/effect/landmark/pyro_anomaly/L = pick(GLOB.pyro_anomaly_points)
if(!L)
return
var/turf/target = get_turf(L)
playsound(src, 'sound/effects/magic/cosmic_energy.ogg', 50, TRUE)
new /obj/effect/temp_visual/circle_wave/gravity(get_turf(src))
forceMove(target)
new /obj/effect/temp_visual/circle_wave/gravity(target)

/obj/effect/anomaly/pyro/pyro_zone/anomalyEffect(seconds_per_tick)
ticks += seconds_per_tick
if(ticks >= releasedelay)
ticks -= releasedelay
var/turf/open/T = get_turf(src)
if(istype(T))
T.atmos_spawn_air("[GAS_O2]=5;[GAS_PLASMA]=5;[TURF_TEMPERATURE(1000)]")
if(!istype(get_area(src), /area/new_sydney/pyro_zone))
move_to_zone()
if(prob(10))
relocate_within_zone()
return TRUE

/obj/effect/anomaly/pyro/pyro_zone/Bumped(atom/movable/bumpee)
. = ..()
if(isliving(bumpee))
var/mob/living/L = bumpee
L.adjust_fire_loss(30)
L.ignite_mob()
Loading
Loading