Skip to content

Commit

Permalink
Anomaly fix (#2872)
Browse files Browse the repository at this point in the history
  • Loading branch information
AmShegars authored Nov 22, 2024
1 parent 22ce066 commit db774f7
Show file tree
Hide file tree
Showing 44 changed files with 885 additions and 386 deletions.
6 changes: 0 additions & 6 deletions code/modules/overmap/exoplanets/_exoplanet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,6 @@ GLOBAL_VAR(planet_repopulation_disabled)
generate_features()
for (var/datum/exoplanet_theme/T in themes)
T.after_map_generation(src)
//[SIERRA-ADD] - ANOMALIES
if(can_spawn_anomalies)
generate_anomalies()
if(monitor_effect_type)
generate_monitor_effects()
//[SIERRA-ADD]
generate_landing(2)
update_biome()
generate_daycycle()
Expand Down
10 changes: 8 additions & 2 deletions mods/_maps/farfleet/maps/farfleet-2.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -2589,6 +2589,9 @@
pixel_y = 2
},
/obj/item/device/scanner/health,
/obj/item/reagent_containers/glass/bucket,
/obj/item/reagent_containers/glass/bucket,
/obj/item/reagent_containers/glass/bucket,
/turf/simulated/floor/tiled/techmaint,
/area/ship/farfleet/maintenance/anomaly)
"yK" = (
Expand Down Expand Up @@ -3760,8 +3763,11 @@
pixel_x = -22;
req_access = list("ACCESS_ICCGN")
},
/obj/structure/table/steel_reinforced,
/obj/item/reagent_containers/glass/bucket,
/obj/structure/table/rack,
/obj/item/clothing/gloves/anomaly_detector/gurza,
/obj/item/storage/bolt_bag/full_of_bolts,
/obj/item/storage/bolt_bag/full_of_bolts,
/obj/item/storage/bolt_bag/full_of_bolts,
/turf/simulated/floor/tiled/techmaint,
/area/ship/farfleet/maintenance/anomaly)
"KF" = (
Expand Down
31 changes: 20 additions & 11 deletions mods/anomaly/_anomaly.dme
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include "code\anomalies\single\tramplin.dm"
#include "code\anomalies\single\ventilyator.dm"
#include "code\anomalies\single\vspishka.dm"
#include "code\anomalies\single\zjarka.dm"
#include "code\anomalies\single\zharka.dm"
//аномалии 3 на 3
#include "code\anomalies\threeandthree\cooler_3x3.dm"
#include "code\anomalies\threeandthree\electra_3x3.dm"
Expand All @@ -44,22 +44,24 @@


//Код артефактов и всё с ними связанное
#include "code\artefacts\anomaly_artefacts.dm" //Ядро артефактов
#include "code\artefacts\artefact_external_interact.dm" //реакции на внешние события на артефакт/носителя
#include "code\artefacts\_anomaly_artefacts.dm" //Ядро артефактов
#include "code\artefacts\_artefact_external_interact.dm" //реакции на внешние события на артефакт/носителя
#include "code\artefacts\_artefact_processing.dm" //Процессинг/постоянная обработка артефакта
#include "code\artefacts\_interact_with_artefacts.dm" //Интеракции с артефактом (Персонаж/URM)
#include "code\artefacts\_artefact_spawn.dm"
#include "code\artefacts\artefact_gravi.dm"
#include "code\artefacts\artefact_processing.dm" //Процессинг/постоянная обработка артефакта
#include "code\artefacts\artefact_pruzhina.dm"
#include "code\artefacts\artefact_spawn.dm"
#include "code\artefacts\artefact_svetlyak.dm"
#include "code\artefacts\artefact_zjar.dm"
#include "code\artefacts\artefact_flyer.dm"
//#include "code\artefacts\artefact_zjemchug.dm"
#include "code\artefacts\interact_with_artefacts.dm" //Интеракции с артефактом (Персонаж/URM)



//Детекторы и прочее оборудование
#include "code\detectors_and_etc\bolt.dm"
#include "code\detectors_and_etc\detector.dm"
#include "code\detectors_and_etc\gurza_detector.dm"
#include "code\detectors_and_etc\collector.dm"
#include "code\detectors_and_etc\deployer.dm"
#include "code\detectors_and_etc\beacon.dm"
Expand All @@ -80,17 +82,24 @@
#include "code\spawn_anomalies_protocol\spawn_anomaly_with_big_artefact.dm" //Код, отвечающий за спавн аномалий вокруг больших артефактов
#include "code\spawn_anomalies_protocol\spawn_with_ruins.dm"
#include "code\spawn_anomalies_protocol\bsd_event_protocol.dm"
#include "code\spawn_anomalies_protocol\planet_spawn_types\vulcanic.dm" //Вулканическая планета
#include "code\spawn_anomalies_protocol\planet_spawn_types\ice.dm" //[WIP] Ледяная планета
#include "code\spawn_anomalies_protocol\planet_spawn_types\flying.dm" //[WIP] Летающие острова
// #include "code\spawn_anomalies_protocol\planet_spawn_types\sargas.dm" // [WIP] Саргасово болото
//Планетарный спавн
#include "code\spawn_anomalies_protocol\planet_spawn_protocol\_planet_spawn_core.dm"
//Летающие острова[WIP]
#include "code\spawn_anomalies_protocol\planet_spawn_protocol\flying_planet\clouds.dm"
#include "code\spawn_anomalies_protocol\planet_spawn_protocol\flying_planet\flying.dm"
//Ледяная планета[WIP]
#include "code\spawn_anomalies_protocol\planet_spawn_protocol\ice.dm"
//Вулкан
#include "code\spawn_anomalies_protocol\planet_spawn_protocol\vulcanic.dm"
//Саргасово болото [WIP-WIP]
// #include "code\spawn_anomalies_protocol\planet_spawn_protocol\sargas.dm"
#include "code\spawn_anomalies_protocol\spawn_on_planet.dm" //Спавн на планетах



//Карты, диреликты и прочее
#include "maps\electra_ruins\electra_ruins.dm"
#include "maps\zjarka_ruins\zjarka_ruins.dm"
#include "maps\zharka_ruins\zharka_ruins.dm"
//Код островов
#include "maps\flying_islands\flying_island.dm"
#include "maps\flying_islands\flying_island_ball.dm"
Expand Down
6 changes: 3 additions & 3 deletions mods/anomaly/code/anomalies/anomalies_premades.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@
walk_time = 2 SECONDS
chance_spawn_walking = 100

/obj/anomaly/zjarka/walking
/obj/anomaly/zharka/walking
chance_spawn_walking = 100

/obj/anomaly/zjarka/short_effect
/obj/anomaly/zharka/short_effect
effect_range = 0

/obj/anomaly/zjarka/long_effect
/obj/anomaly/zharka/long_effect
effect_range = 2

/obj/anomaly/electra/three_and_three/preload
Expand Down
2 changes: 2 additions & 0 deletions mods/anomaly/code/anomalies/anomaly_core.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
/obj/anomaly
name = "Аномалия. Вы не должны это видеть."
anchored = TRUE //Чтоб аномалию не двигало в случае чего.
//Позволяет быстро определять для кода какая именно аномалия (electra, Zharka, и прочее)
var/anomaly_tag
//COULDOWN AND SMTH
///Аномалия уходит на КД после срабатывания?
var/can_be_discharged = FALSE
Expand Down
1 change: 1 addition & 0 deletions mods/anomaly/code/anomalies/single/cooler.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/obj/anomaly/cooler
name = "Refractions of light"
anomaly_tag = "Cooler"
with_sound = FALSE
can_born_artefacts = TRUE
//Длинна эффекта подогрева
Expand Down
1 change: 1 addition & 0 deletions mods/anomaly/code/anomalies/single/electra.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/obj/anomaly/electra
name = "Lightning strikes"
anomaly_tag = "Electra"
with_sound = TRUE
sound_type = 'mods/anomaly/sounds/electra_blast.ogg'
activation_effect_type = "electra_activation"
Expand Down
1 change: 1 addition & 0 deletions mods/anomaly/code/anomalies/single/heater.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/obj/anomaly/heater
name = "Refractions of light"
anomaly_tag = "Heater"
with_sound = FALSE
can_born_artefacts = TRUE
//Длинна эффекта подогрева
Expand Down
47 changes: 30 additions & 17 deletions mods/anomaly/code/anomalies/single/rvach.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

/obj/anomaly/rvach
name = "Refractions of light"
anomaly_tag = "Rvach"
with_sound = TRUE
sound_type = 'mods/anomaly/sounds/rvach_activation.ogg'
idle_effect_type = "rvach_idle"
Expand All @@ -22,7 +23,8 @@
/obj/item
)
artefacts = list(
/obj/item/artefact/gravi = 1
/obj/item/artefact/gravi = 1,
/obj/item/artefact/flyer = 2
)
artefact_spawn_chance = 20
detection_skill_req = SKILL_EXPERIENCED
Expand Down Expand Up @@ -56,7 +58,6 @@
if(victim.skill_check(SKILL_HAULING, SKILL_MASTER))
if(prob(7 * victim.get_skill_value(SKILL_HAULING)))
victim.Weaken(10)
to_chat(victim, SPAN_WARNING("То-ли от страха, то-ли от огромной физической подготовки, вы выныриваете из аномалии."))
return

//Создаём список органов, которые мы МОЖЕМ оторвать
Expand Down Expand Up @@ -95,29 +96,41 @@
for(var/atom/movable/target in src.loc)
get_end_effect_by_anomaly(target)
//Рвач раскидает всех из себя
throw_everyone_from_rvach()
throw_everyone_from_rvach(throw_range)
//Выполняем стандартные действия функции stop_processing_long_effect()
stop_long_visual_effect()
currently_active = FALSE
start_recharge()

//Рвач раскидывает всё что попадает в зону рвача из себя
/obj/anomaly/rvach/proc/throw_everyone_from_rvach()
//Если рвач мультитайтловый
for(var/atom/movable/victim in src.loc)
if(!ismob(victim) && !isitem(victim) )
var/list/victims = list()
var/list/objs = list()
var/turf/T = get_turf(src)
//Собираем все обьекты радиусом на 1 больше, чем расположены вспомогательные части рвачика
get_mobs_and_objs_in_view_fast(T, multititle_parts_range, victims, objs)
LAZYMERGELIST(victims, objs)
for(var/atom/movable/detected_atom in victims)
if((!ismob(detected_atom) && !isitem(detected_atom)) || detected_atom.anchored)
continue
if(!victim.anchored)
victim.throw_at_random(get_turf(src), effect_range+1, 5)
if(multitile)
for(var/obj/anomaly/part/parts in list_of_parts)
var/throw_dir = get_dir(src, parts)
var/target_turf = get_edge_target_turf(parts, throw_dir)
for(var/atom/movable/victim in parts.loc)
if(!ismob(victim) && !isitem(victim) )
continue
if(!victim.anchored)
victim.throw_at(target_turf, effect_range, 5)
var/local_range_of_throw = 1
if(ismob(detected_atom))
var/mob/detected_mob = detected_atom
var/list/result_effects = calculate_artefact_reaction(detected_mob, "Гиб Рвача")
if(result_effects)
//Цель не сможет вышвырнуть из рвача, артефакт не даёт
if(result_effects.Find("Защищает от гиба рвачом"))
return
if(result_effects.Find("Усиливает дальность полёта"))
local_range_of_throw = 5

var/dis = get_dist(src, detected_atom)
if(dis < 1)
detected_atom.throw_at_random(get_turf(src), local_range_of_throw, 5)
else
var/throw_dir = get_dir(src, detected_atom)
var/target_turf = get_ranged_target_turf(detected_atom, throw_dir, local_range_of_throw)
detected_atom.throw_at(target_turf, local_range_of_throw, 5)


/proc/rvach_pull_around(atom/target, pull_range = 255, pull_power = STAGE_FIVE)
Expand Down
14 changes: 10 additions & 4 deletions mods/anomaly/code/anomalies/single/tramplin.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/obj/anomaly/tramplin
name = "Refractions of light"
anomaly_tag = "Tramp"
with_sound = TRUE
sound_type = 'mods/anomaly/sounds/tramplin.ogg'
idle_effect_type = "trampline_idle"
Expand All @@ -13,6 +14,9 @@
/mob/living,
/obj/item
)
artefacts = list(
/obj/item/artefact/flyer = 1
)
//Рандомизация
ranzomize_with_initialize = TRUE
can_born_artefacts = FALSE
Expand All @@ -36,13 +40,15 @@
/obj/anomaly/tramplin/get_effect_by_anomaly(target)
if(ismech(target))
return

var/local_range_of_throw = range_of_throw
if(istype(target, /mob/living))
SSanom.add_last_attack(target, "Трамплин")
var/list/result_effects = calculate_artefact_reaction(target, "Трамплин")
if(result_effects)
if(result_effects.Find("Не даёт кинуть"))
return
if(result_effects.Find("Усиливает дальность полёта"))
local_range_of_throw = local_range_of_throw * 3

if(ishuman(target))
var/mob/living/carbon/human/victim = target
Expand All @@ -56,15 +62,15 @@
var/turf/own_turf = get_turf(src)
var/turf/target_turf = own_turf
if(!random_throw_dir)
target_turf = get_ranged_target_turf(target, throw_dir, range_of_throw)
target_turf = get_ranged_target_turf(target, throw_dir, local_range_of_throw)
var/atom/movable/victim = target
if(isliving(victim))
var/mob/victim_mob = victim
victim_mob.Weaken(1)
if(random_throw_dir)
victim.throw_at_random(own_turf, range_of_throw, speed_of_throw )
victim.throw_at_random(own_turf, local_range_of_throw, speed_of_throw )
else
victim.throw_at(target_turf, range_of_throw, speed_of_throw)
victim.throw_at(target_turf, local_range_of_throw, speed_of_throw)

/obj/anomaly/tramplin/get_detection_icon()
return "trampline_detection"
1 change: 1 addition & 0 deletions mods/anomaly/code/anomalies/single/ventilyator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
/obj/anomaly/ventilyator
name = "air flows"
anomaly_tag = "Vent"
with_sound = TRUE
sound_type = 'mods/anomaly/sounds/tramplin.ogg'
idle_effect_type = "trampline_idle"
Expand Down
1 change: 1 addition & 0 deletions mods/anomaly/code/anomalies/single/vspishka.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/obj/anomaly/vspishka
name = "Brightest flash"
anomaly_tag = "Vspishka"
with_sound = TRUE
sound_type = 'mods/anomaly/sounds/vspishka_activated.ogg'
idle_effect_type = "vspishka_idle"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/obj/anomaly/zjarka
/obj/anomaly/zharka
name = "Jet of flame"
anomaly_tag = "Zharka"
with_sound = TRUE
sound_type = 'mods/anomaly/sounds/zjarka.ogg'
idle_effect_type = "zjarka_idle"
sound_type = 'mods/anomaly/sounds/zharka.ogg'
idle_effect_type = "zharka_idle"
detection_icon_state = "hot_anomaly"
layer = ABOVE_HUMAN_LAYER
light_after_activation = TRUE
Expand All @@ -14,7 +15,7 @@
can_born_artefacts = TRUE
//Урон который наносит открытое пламя телу в
var/burn_damage = 10
activation_effect_type = "zjarka_active"
activation_effect_type = "zharka_active"

special_iniciators = list(
/obj/item
Expand All @@ -37,7 +38,7 @@
detection_skill_req = SKILL_BASIC


/obj/anomaly/zjarka/activate_anomaly()
/obj/anomaly/zharka/activate_anomaly()
last_activation_time = world.time
var/list/victims = list()
var/list/objs = list()
Expand All @@ -51,7 +52,7 @@
anything_in_ashes(I)
.=..()

/obj/anomaly/zjarka/get_effect_by_anomaly(atom/movable/target)
/obj/anomaly/zharka/get_effect_by_anomaly(atom/movable/target)
if(!isturf(target.loc))
return
if(isanomaly(target))
Expand All @@ -75,7 +76,7 @@
anything_in_ashes(target)

///Жарим всех вокруг в течении действия аномалии
/obj/anomaly/zjarka/process_long_effect()
/obj/anomaly/zharka/process_long_effect()
var/list/victims = list()
var/list/objs = list()
var/turf/T = get_turf(src)
Expand All @@ -88,7 +89,7 @@
get_effect_by_anomaly(atoms)
start_processing_long_effect()

/obj/anomaly/zjarka/Crossed(atom/movable/O)
/obj/anomaly/zharka/Crossed(atom/movable/O)
if(currently_active)
get_effect_by_anomaly(O)
if(currently_charging_after_activation)
Expand All @@ -98,10 +99,10 @@
return


/obj/anomaly/zjarka/get_detection_icon()
/obj/anomaly/zharka/get_detection_icon()
if(effect_range == 1 || effect_range == 0)
return "zjarka_detection"
return "zharka_detection"
else if(effect_range == 2)
return "zjarka_first_detection"
return "zharka_first_detection"
else if(effect_range > 2)
return "zjarka_second_detection"
return "zharka_second_detection"
6 changes: 3 additions & 3 deletions mods/anomaly/code/anomaly_admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@


var/list/possible_anomalies = list(
/obj/anomaly/zjarka = "Жарка - аномалия накладывающая BURN урон и поджигающая всех в зоне поражения. Взводится от болта и мобов.",
/obj/anomaly/zjarka/short_effect = "Жарка - аномалия накладывающая BURN урон и поджигающая всех в зоне поражения. Взводится от болта и мобов.",
/obj/anomaly/zjarka/long_effect = "Жарка - аномалия накладывающая BURN урон и поджигающая всех в зоне поражения. Взводится от болта и мобов.",
/obj/anomaly/zharka = "Жарка - аномалия накладывающая BURN урон и поджигающая всех в зоне поражения. Взводится от болта и мобов.",
/obj/anomaly/zharka/short_effect = "Жарка - аномалия накладывающая BURN урон и поджигающая всех в зоне поражения. Взводится от болта и мобов.",
/obj/anomaly/zharka/long_effect = "Жарка - аномалия накладывающая BURN урон и поджигающая всех в зоне поражения. Взводится от болта и мобов.",
/obj/anomaly/electra/three_and_three = "Электра - аномалия наносящая электроудар (50 урона + стан) всех в зоне поражения. Реагирует на мобов, металлические предметы. Подтип ТЕСЛА бьёт дальше чем чувствует, параметр предзарядка заставит её сперва зарядить, и лишь потом ударить. НЕ СОВЕТУЮ СОВМЕЩАТЬ ТЕСЛУ И ПРЕДЗАРЯДКУ.",
/obj/anomaly/electra/three_and_three/tesla = "Электра - аномалия наносящая электроудар (50 урона + стан) всех в зоне поражения. Реагирует на мобов, металлические предметы. Подтип ТЕСЛА бьёт дальше чем чувствует, параметр предзарядка заставит её сперва зарядить, и лишь потом ударить. НЕ СОВЕТУЮ СОВМЕЩАТЬ ТЕСЛУ И ПРЕДЗАРЯДКУ.",
/obj/anomaly/electra/three_and_three/tesla_second = "Электра - аномалия наносящая электроудар (50 урона + стан) всех в зоне поражения. Реагирует на мобов, металлические предметы. Подтип ТЕСЛА бьёт дальше чем чувствует, параметр предзарядка заставит её сперва зарядить, и лишь потом ударить. НЕ СОВЕТУЮ СОВМЕЩАТЬ ТЕСЛУ И ПРЕДЗАРЯДКУ.",
Expand Down
Loading

0 comments on commit db774f7

Please sign in to comment.