Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Singuloose Reback #402

Merged
merged 93 commits into from
Jan 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
0ef53c4
First
RengaN02 Oct 9, 2024
be84091
Comit 2
RengaN02 Oct 9, 2024
c378020
ui dışında sanırım bişey kalmadı
RengaN02 Oct 9, 2024
f57323c
Unutmusum bunu
RengaN02 Oct 9, 2024
f05be6d
qdel(null) yaptırma
RengaN02 Oct 9, 2024
d9d1543
Commit
RengaN02 Oct 10, 2024
7d7e567
Commit
RengaN02 Oct 11, 2024
07c1ced
Singuloya tehlike eklencek, başka ne kaldı
RengaN02 Oct 15, 2024
aecdb05
Admin verb yarısı bitti
RengaN02 Oct 16, 2024
f39ca54
Commit
RengaN02 Oct 17, 2024
ccee633
linterns
RengaN02 Oct 17, 2024
8146df3
Hatayo çözer
RengaN02 Oct 17, 2024
e51223e
tot görevi dışında ne eklencek bilmiyom
RengaN02 Oct 20, 2024
1c29290
Artık büyücek alanı kalmamısken kendini yemeye calısmıcak
RengaN02 Oct 21, 2024
1432526
Hata fix sanırım
RengaN02 Oct 22, 2024
c323655
Oluşmasını engelle
RengaN02 Oct 22, 2024
3b98ff5
yanlıs oldu
RengaN02 Oct 22, 2024
ec44a36
Düzelsin artık
RengaN02 Oct 22, 2024
4c1dd41
sanırım bu kez gerçekten bitek tot görevi kaldı
RengaN02 Oct 22, 2024
e881111
Merge branch 'master' into singuloose
RengaN02 Oct 23, 2024
421a2cb
Contextler
RengaN02 Nov 2, 2024
0fb8d0c
Böyle olsun
RengaN02 Nov 2, 2024
1061d33
Merge branch 'master' into singuloose
RengaN02 Nov 2, 2024
8956a25
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Nov 2, 2024
2756c66
Fix
RengaN02 Nov 2, 2024
095ed15
Fikir gelmiyo aklıma
RengaN02 Nov 3, 2024
da3596e
Merge branch 'master' into singuloose
RengaN02 Nov 3, 2024
cd909b0
Fix + anti singularity silahına hazırlık
RengaN02 Nov 6, 2024
ae75a68
singularitynin enerjisi artık 40*belirtilen saniyede degil olması ger…
RengaN02 Nov 6, 2024
585f52d
dissipate delay ve strengthlerini balanceler
RengaN02 Nov 7, 2024
2067e44
Merge branch 'master' into singuloose
RengaN02 Nov 9, 2024
2514b10
Fix
RengaN02 Nov 9, 2024
746c688
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Nov 9, 2024
ab2589f
Fix
RengaN02 Nov 9, 2024
8d7901e
Reviewler ve biseyi düzeltmismiyim kontrolu
RengaN02 Nov 11, 2024
3b6589a
Fixler
RengaN02 Nov 11, 2024
1841ca7
Boruları baglar
RengaN02 Nov 11, 2024
b8e0f91
Duvardaki toprağı siler, baybay emptyer
RengaN02 Nov 11, 2024
ba79aef
Reviewler
RengaN02 Nov 17, 2024
33960f6
reviewler, anti singularityi yakında yapıcam(sanırım)
RengaN02 Nov 20, 2024
8b07b15
roket ikonunu kaldırır, duruma bağlı belki eklemeye karar veririm
RengaN02 Nov 30, 2024
d64a57b
Merge branch 'master' into singuloose
RengaN02 Nov 30, 2024
9eb20b7
Fixler
RengaN02 Dec 1, 2024
543e421
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Dec 1, 2024
6ae7df6
Artık sekebiliyo ve haritaları düzelttim
RengaN02 Dec 1, 2024
72d93ee
Parçacık hızlandırıcı tarafından hızlandırılmıs ışınlar hızlı olmalı …
RengaN02 Dec 1, 2024
808f004
kablolama ve ufak dekorasyon
Seefaaa Dec 2, 2024
925bae5
gözden kaçan kablo
Seefaaa Dec 3, 2024
927f548
0=2500,1=4000,2=5500,3=7000
RengaN02 Dec 3, 2024
9ec7ae2
Unutmusum bunu, mesai saatinde bira içilmesin diye kaldırdım birayı, …
RengaN02 Dec 3, 2024
a476fd9
Map fix
RengaN02 Dec 4, 2024
5f3ff67
Merge branch 'master' into singuloose
RengaN02 Dec 7, 2024
f507255
İdle enerji biraz düşürüldü (diger makinelere göre hala fazla ama ben…
RengaN02 Dec 7, 2024
3847061
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Dec 7, 2024
55a3347
Supermatter surge eventi sm yoksa calısamaz
RengaN02 Dec 7, 2024
296caa3
binocular, orbit menu, incident display, rad collector
RengaN02 Dec 8, 2024
1fcea9c
Merge branch 'master' into singuloose
RengaN02 Dec 8, 2024
1772356
Merge branch 'master' into singuloose
RengaN02 Dec 10, 2024
402ab30
Review
RengaN02 Dec 13, 2024
424b020
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Dec 13, 2024
3d8e2c8
Merge branch 'master' into singuloose
RengaN02 Dec 13, 2024
94c6e73
Merge branch 'master' into singuloose
RengaN02 Dec 14, 2024
3943579
tekrar test için boş commit
RengaN02 Dec 16, 2024
1138a27
ghostlar examine atınca energy gozukcek
RengaN02 Dec 20, 2024
538a997
Delta singularity haritasına kamera ekler
RengaN02 Dec 27, 2024
18336ed
Kamera ayarlaması
RengaN02 Dec 27, 2024
a54bbd7
fix
RengaN02 Dec 27, 2024
75ae811
Merge branch 'master' into singuloose
RengaN02 Dec 27, 2024
e06ad80
Bişeyler, gaslar falan
RengaN02 Dec 29, 2024
00dba80
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Dec 29, 2024
d35bf22
Bitek o kaldı, bide sanırım uideki static dataların matematigi yapılcak
RengaN02 Dec 30, 2024
140b06a
Merge branch 'master' into singuloose
RengaN02 Dec 30, 2024
f1314ac
Ne kaldı ben bile bilmiyom artık
RengaN02 Jan 1, 2025
811a2f2
Buda bitti sanırım unuttugum bisey yoksa
RengaN02 Jan 3, 2025
c2cefab
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Jan 3, 2025
a8e7a26
Tgui fix
RengaN02 Jan 3, 2025
d5bbea9
bi fix daha
RengaN02 Jan 3, 2025
5ec82ca
Merge branch 'master' into singuloose
RengaN02 Jan 3, 2025
989ff84
Kucuk bi harita fixi + energy ball artık 1000 derecede degil 10k dere…
RengaN02 Jan 4, 2025
94b6720
Evidience bagde sıkıntı yok, boyle olursa bizdede olmaz d
RengaN02 Jan 4, 2025
3077483
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Jan 4, 2025
a4cb699
buda düzelir artık herkalde
RengaN02 Jan 4, 2025
d828a8b
Merge branch 'master' into singuloose
RengaN02 Jan 4, 2025
a29a7de
İsimleri falan düzelttim
RengaN02 Jan 4, 2025
689d0d3
Merge branch 'singuloose' of https://github.com/RengaN02/PsychonautSt…
RengaN02 Jan 4, 2025
edd84b7
Emag act
RengaN02 Jan 4, 2025
e06b939
Klasör adı değiştim, bide yakalanan anomaly icin emag_act
RengaN02 Jan 5, 2025
394c515
2 cok
RengaN02 Jan 5, 2025
5e37043
Fix description
RengaN02 Jan 10, 2025
cf56c13
Incıdent displayin yanlış göstermesi düzeltildi
RengaN02 Jan 13, 2025
ef5895b
Artık bridgedede singulo ekranı olcak, eğer makineyi kendimiz yaptıys…
RengaN02 Jan 13, 2025
c61a08e
Merge branch 'master' into singuloose
RengaN02 Jan 13, 2025
02927c2
Merge branch 'master' into singuloose
RengaN02 Jan 18, 2025
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
2,233 changes: 2,233 additions & 0 deletions _maps/RandomRooms/Deltastation/singularity.dmm

Large diffs are not rendered by default.

1,759 changes: 1,759 additions & 0 deletions _maps/RandomRooms/MetaStation/singularity.dmm

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions code/__DEFINES/_flags.dm
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204

#define ZAP_DEFAULT_FLAGS ZAP_MOB_STUN | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
#define ZAP_FUSION_FLAGS ZAP_OBJ_DAMAGE | ZAP_MOB_DAMAGE | ZAP_MOB_STUN
#define ZAP_EBALL_FLAGS ZAP_MOB_STUN | ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_GENERATES_POWER
#define ZAP_SUPERMATTER_FLAGS ZAP_GENERATES_POWER

///EMP will protect itself.
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_MOVE_UPSIDE_DOWN "move_upside_down"
/// Disables the floating animation. See above.
#define TRAIT_NO_FLOATING_ANIM "no-floating-animation"
/// Disables the movement beacuse we are grabbed by kinesis.(For energy ball and singularity)
#define TRAIT_GRABBED_BY_KINESIS "grabbed_by_kinesis"

/// Cannot be turned into a funny skeleton by the plasma river
#define TRAIT_NO_PLASMA_TRANSFORM "no_plasma_transform"
Expand Down
4 changes: 2 additions & 2 deletions code/__HELPERS/areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(
/area/station/engineering/supermatter,
/area/station/engineering/atmospherics_engine,
/area/station/ai_monitored/turret_protected/ai,
/area/ruin/comms_agent //fixes icemoon comms station being affected

/area/ruin/comms_agent, //fixes icemoon comms station being affected
/area/station/engineering/singularity
)))

// Gets an atmos isolated contained space
Expand Down
6 changes: 6 additions & 0 deletions code/__HELPERS/radiation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
threshold,
chance = DEFAULT_RADIATION_CHANCE,
minimum_exposure_time = 0,
intensity = 0,
)
if(!SSradiation.can_fire)
return
Expand All @@ -36,9 +37,13 @@
pulse_information.chance = chance
pulse_information.minimum_exposure_time = minimum_exposure_time
pulse_information.turfs_to_process = RANGE_TURFS(max_range, source)
pulse_information.intensity = intensity || (max_range * 250)

SSradiation.processing += pulse_information

for(var/atom/O in range(max_range, source))
O.rad_act(pulse_information.intensity)

return TRUE

/datum/radiation_pulse_information
Expand All @@ -48,6 +53,7 @@
var/chance
var/minimum_exposure_time
var/list/turfs_to_process
var/intensity

#define MEDIUM_RADIATION_THRESHOLD_RANGE 0.5
#define EXTREME_RADIATION_CHANCE 30
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_COMBAT_MODE_SKIP_INTERACTION" = TRAIT_COMBAT_MODE_SKIP_INTERACTION,
"TRAIT_DEL_ON_SPACE_DUMP" = TRAIT_DEL_ON_SPACE_DUMP,
"TRAIT_FROZEN" = TRAIT_FROZEN,
"TRAIT_GRABBED_BY_KINESIS" = TRAIT_GRABBED_BY_KINESIS,
"TRAIT_HAS_LABEL" = TRAIT_HAS_LABEL,
"TRAIT_HEARING_SENSITIVE" = TRAIT_HEARING_SENSITIVE,
"TRAIT_HYPERSPACED" = TRAIT_HYPERSPACED,
Expand Down
4 changes: 4 additions & 0 deletions code/controllers/configuration/entries/general.dm
Original file line number Diff line number Diff line change
Expand Up @@ -796,10 +796,14 @@
min_val = 0
max_val = 100

/datum/config_entry/flag/allow_randomized_rooms
default = TRUE

/// If admins with +DEBUG can initialize byond-tracy midround.
/datum/config_entry/flag/allow_tracy_start
protection = CONFIG_ENTRY_LOCKED

/// If admins with +DEBUG can queue byond-tracy to run the next round.
/datum/config_entry/flag/allow_tracy_queue
protection = CONFIG_ENTRY_LOCKED

1 change: 0 additions & 1 deletion code/controllers/subsystem/garbage.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ SUBSYSTEM_DEF(garbage)
var/list/fail_counts

var/list/items = list() // Holds our qdel_item statistics datums

//Queue
var/list/queues
#ifdef REFERENCE_TRACKING
Expand Down
80 changes: 80 additions & 0 deletions code/controllers/subsystem/mapping.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,12 @@ SUBSYSTEM_DEF(mapping)
/// list of lazy templates that have been loaded
var/list/loaded_lazy_templates

var/list/machines_delete_after = list()

var/list/random_engine_templates = list()
var/list/obj/effect/landmark/random_room/random_room_spawners = list()
var/list/datum/map_template/random_room/picked_rooms = list()

/datum/controller/subsystem/mapping/PreInit()
..()
#ifdef FORCE_MAP
Expand Down Expand Up @@ -160,6 +166,8 @@ SUBSYSTEM_DEF(mapping)
initialize_reserved_level(base_transit.z_value)
calculate_default_z_level_gravities()

RegisterSignal(SSmachines, COMSIG_SUBSYSTEM_POST_INITIALIZE, PROC_REF(machiness_post_init))

return SS_INIT_SUCCESS

/datum/controller/subsystem/mapping/fire(resumed)
Expand Down Expand Up @@ -363,7 +371,10 @@ Used by the AI doomsday and the self-destruct nuke.
multiz_levels = SSmapping.multiz_levels
loaded_lazy_templates = SSmapping.loaded_lazy_templates

random_engine_templates = SSmapping.random_engine_templates

#define INIT_ANNOUNCE(X) to_chat(world, span_boldannounce("[X]"), MESSAGE_TYPE_DEBUG); log_world(X)

/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE, height_autosetup = TRUE)
. = list()
var/start_time = REALTIMEOFDAY
Expand Down Expand Up @@ -435,6 +446,12 @@ Used by the AI doomsday and the self-destruct nuke.
INIT_ANNOUNCE("Loading [current_map.map_name]...")
LoadGroup(FailedZs, "Station", current_map.map_path, current_map.map_file, current_map.traits, ZTRAITS_STATION, height_autosetup = current_map.height_autosetup)

load_station_room_templates()

if(CONFIG_GET(flag/allow_randomized_rooms))
pick_room_type()
load_random_rooms()

if(SSdbcore.Connect())
var/datum/db_query/query_round_map_name = SSdbcore.NewQuery({"
UPDATE [format_table_name("round")] SET map_name = :map_name WHERE id = :round_id
Expand Down Expand Up @@ -945,3 +962,66 @@ ADMIN_VERB(load_away_mission, R_FUN, "Load Away Mission", "Load a specific away
var/number_of_remaining_levels = length(checkable_levels)
if(number_of_remaining_levels > 0)
CRASH("The following [number_of_remaining_levels] away mission(s) were not loaded: [checkable_levels.Join("\n")]")

/datum/controller/subsystem/mapping/proc/machiness_post_init()
var/list/prioritys = typecacheof(list(/obj/machinery/meter, /obj/machinery/power/apc))
for(var/atom/prior_item in typecache_filter_list(machines_delete_after, prioritys))
if(istype(prior_item, /obj/machinery/power/apc))
var/obj/machinery/power/apc/apc = prior_item
QDEL_NULL(apc.terminal)
qdel(prior_item)
machines_delete_after -= prior_item
QDEL_LIST(machines_delete_after)

/datum/controller/subsystem/mapping/proc/load_random_rooms()
load_random_engines()

/datum/controller/subsystem/mapping/proc/load_station_room_templates()
for(var/item in subtypesof(/datum/map_template/random_room/random_engine))
var/datum/map_template/random_room/random_engine/room_type = item
var/datum/map_template/random_room/random_engine/E = new room_type()
map_templates[E.room_id] = E
if(current_map.map_name == E.station_name)
random_engine_templates[E.room_id] = E
if(E.coordinates.len && E.template_width && E.template_height && !random_room_spawners["engine"])
create_room_spawner(E, "engine")

/datum/controller/subsystem/mapping/proc/create_room_spawner(datum/map_template/random_room/room, roomtype)
var/turf/target = locate(room.coordinates["x"], room.coordinates["y"], room.coordinates["z"])
var/obj/effect/landmark/random_room/room_spawner = new(target)
room_spawner.room_width = room.template_width
room_spawner.room_height = room.template_height
random_room_spawners[roomtype] = room_spawner
return TRUE

/datum/controller/subsystem/mapping/proc/pick_room_type()
pick_engine(!isnull(current_map.picked_rooms["engine"]))

/datum/controller/subsystem/mapping/proc/pick_engine(force = FALSE)
if(force)
picked_rooms["engine"] = random_engine_templates[current_map.picked_rooms["engine"]]
return TRUE
var/list/possible_engine_templates = list()
var/datum/map_template/random_room/random_engine/engine_candidate
shuffle_inplace(random_engine_templates)
for(var/ID in random_engine_templates)
engine_candidate = random_engine_templates[ID]
if(engine_candidate.weight == 0 || (engine_candidate.mappath && (random_room_spawners["engine"].room_height != engine_candidate.template_height || random_room_spawners["engine"].room_width != engine_candidate.template_width)))
engine_candidate = null
continue
possible_engine_templates[engine_candidate] = engine_candidate.weight
if(!possible_engine_templates.len)
return FALSE
picked_rooms["engine"] = pick_weight(possible_engine_templates)
return TRUE

/datum/controller/subsystem/mapping/proc/load_random_engines()
var/start_time = REALTIMEOFDAY
if(random_room_spawners["engine"] && picked_rooms["engine"])
log_world("Loading random engine template [picked_rooms["engine"].name] ([picked_rooms["engine"].type]) at [AREACOORD(random_room_spawners["engine"])]")
if(picked_rooms["engine"].mappath)
var/datum/map_template/random_room/template = picked_rooms["engine"]
template.stationinitload(get_turf(random_room_spawners["engine"]), centered = template.centerspawner)
QDEL_NULL(random_room_spawners["engine"])
log_world("Loaded Random Engine in [(REALTIMEOFDAY - start_time)/10]s!")
return TRUE
4 changes: 4 additions & 0 deletions code/controllers/subsystem/persistence/_persistence.dm
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ SUBSYSTEM_DEF(persistence)

var/rounds_since_engine_exploded = 0
var/delam_highscore = 0
var/rounds_since_singularity_death = 0
var/singularity_death_record = 0
var/tram_hits_this_round = 0
var/tram_hits_last_round = 0

Expand All @@ -72,6 +74,7 @@ SUBSYSTEM_DEF(persistence)
load_randomized_recipes()
load_custom_outfits()
load_delamination_counter()
load_singularity_death_counter()
load_tram_counter()
load_adventures()
return SS_INIT_SUCCESS
Expand All @@ -86,6 +89,7 @@ SUBSYSTEM_DEF(persistence)
save_scars()
save_custom_outfits()
save_delamination_counter()
save_singularity_death_counter()
save_trading_cards()
save_queued_message_bottles()
if(SStransport.can_fire)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/// Location where we save the information about how many rounds it has been since the engine blew up
#define SINGULARITY_DEATH_COUNT_FILEPATH "data/rounds_since_singularity_death.txt"
#define SINGULARITY_DEATH_HIGHSCORE_FILEPATH "data/singularity_death_highscore.txt"

/datum/controller/subsystem/persistence/proc/load_singularity_death_counter()
if(!fexists(SINGULARITY_DEATH_COUNT_FILEPATH))
return
rounds_since_singularity_death = text2num(file2text(SINGULARITY_DEATH_COUNT_FILEPATH))
if(fexists(SINGULARITY_DEATH_HIGHSCORE_FILEPATH))
singularity_death_record = text2num(file2text(SINGULARITY_DEATH_HIGHSCORE_FILEPATH))
for(var/obj/machinery/incident_display/sign as anything in GLOB.map_incident_displays)
sign.update_last_singularity_death(rounds_since_singularity_death, singularity_death_record)

/datum/controller/subsystem/persistence/proc/save_singularity_death_counter()
rustg_file_write("[rounds_since_singularity_death + 1]", SINGULARITY_DEATH_COUNT_FILEPATH)
if((rounds_since_singularity_death + 1) > singularity_death_record)
rustg_file_write("[rounds_since_singularity_death + 1]", SINGULARITY_DEATH_HIGHSCORE_FILEPATH)

#undef SINGULARITY_DEATH_COUNT_FILEPATH
#undef SINGULARITY_DEATH_HIGHSCORE_FILEPATH
8 changes: 8 additions & 0 deletions code/datums/components/singularity.dm
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@
))

/datum/component/singularity/process(seconds_per_tick)
if(!(parent.datum_flags & DF_ISPROCESSING))
return
// We want to move and eat once a second, but want to process our turf consume queue the rest of the time
time_since_last_eat += seconds_per_tick
digest()
Expand Down Expand Up @@ -209,6 +211,8 @@

if(grav_pull < dist_to_tile) //If we've exited the singulo's range already, just skip us
continue
if(!isturf(tile))
continue

var/in_consume_range = (dist_to_tile <= consume_range)
if (in_consume_range)
Expand All @@ -233,6 +237,8 @@
cached_index = 0

/datum/component/singularity/proc/move()
if(HAS_TRAIT(parent, TRAIT_GRABBED_BY_KINESIS))
return
var/drifting_dir = pick(GLOB.alldirs - last_failed_movement)

if (!QDELETED(target) && prob(chance_to_move_to_target))
Expand Down Expand Up @@ -349,6 +355,8 @@

/datum/component/singularity/bloodthirsty/move()
var/atom/atom_parent = parent
if(HAS_TRAIT(atom_parent, TRAIT_GRABBED_BY_KINESIS))
return
//handle current target
if(target && !QDELETED(target))
if(istype(target, /obj/machinery/power/singularity_beacon))
Expand Down
11 changes: 11 additions & 0 deletions code/datums/map_config.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@
/// Boolean that tells SSmapping to load all away missions in the codebase.
var/load_all_away_missions = FALSE

var/list/picked_rooms = list()

/**
* Proc that simply loads the default map config, which should always be functional.
*/
Expand Down Expand Up @@ -210,6 +212,15 @@
continue
library_areas += path

if("room_templates" in json)
if(!islist(json["room_templates"]))
log_world("map_config \"room_templates\" field is missing or invalid!")
return
var/list/L = json["room_templates"]
for(var/key in L)
var/value = L[key]
picked_rooms[key] = value

if ("height_autosetup" in json)
height_autosetup = json["height_autosetup"]

Expand Down
48 changes: 48 additions & 0 deletions code/datums/wires/particle_accelerator.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/datum/wires/particle_accelerator/control_box
holder_type = /obj/machinery/particle_accelerator/control_box
proper_name = "Particle Accelerator"

/datum/wires/particle_accelerator/control_box/New(atom/holder)
wires = list(
WIRE_POWER, WIRE_STRENGTH, WIRE_LIMIT,
WIRE_INTERFACE
)
add_duds(2)
..()

/datum/wires/particle_accelerator/control_box/interactable(mob/user)
. = ..()
var/obj/machinery/particle_accelerator/control_box/C = holder
if(C.anchored)
return TRUE

/datum/wires/particle_accelerator/control_box/on_pulse(wire)
var/obj/machinery/particle_accelerator/control_box/C = holder
switch(wire)
if(WIRE_POWER)
C.toggle_power()
if(WIRE_STRENGTH)
C.add_strength()
if(WIRE_INTERFACE)
C.interface_control = !C.interface_control
if(WIRE_LIMIT)
C.visible_message(span_notice("[icon2html(C, viewers(holder))]<b>[C]</b> makes a large whirring noise."))

/datum/wires/particle_accelerator/control_box/on_cut(wire, mend, source)
var/obj/machinery/particle_accelerator/control_box/C = holder
switch(wire)
if(WIRE_POWER)
if(C.active == !mend)
C.toggle_power()
if(WIRE_STRENGTH)
C.set_strength(0)
if(WIRE_INTERFACE)
if(!mend)
C.interface_control = FALSE
if(WIRE_LIMIT)
C.strength_upper_limit = (mend ? 2 : 3)
if(C.strength_upper_limit < C.strength)
C.remove_strength()

/datum/wires/particle_accelerator/control_box/emp_pulse() // to prevent singulo from pulsing wires
return
12 changes: 12 additions & 0 deletions code/game/area/areas/station/engineering.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,18 @@
icon_state = "engine_sm_room_upper"
sound_environment = SOUND_AREA_LARGE_ENCLOSED

/area/station/engineering/singularity
name = "\improper Singularity Engine"
icon = 'icons/psychonaut/area/areas_station.dmi'
icon_state = "engine_singularity"
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
sound_environment = SOUND_AREA_SMALL_ENCLOSED

/area/station/engineering/singularity/room
name = "\improper Singularity Engine Room"
icon_state = "engine_singularity_room"
sound_environment = SOUND_AREA_LARGE_ENCLOSED

/area/station/engineering/break_room
name = "\improper Engineering Foyer"
icon_state = "engine_break"
Expand Down
6 changes: 6 additions & 0 deletions code/game/atom/atom_act.dm
Original file line number Diff line number Diff line change
Expand Up @@ -253,3 +253,9 @@
///This atom has been hit by a hulkified mob in hulk mode (user)
/atom/proc/attack_hulk(mob/living/carbon/human/user)
SEND_SIGNAL(src, COMSIG_ATOM_HULK_ATTACK, user)

/**
* Respond to an radiation acting on our item
*/
/atom/proc/rad_act(intensity)
return
Loading
Loading