diff --git a/baystation12.dme b/baystation12.dme index 1ac2e232d6..6930609adf 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -206,6 +206,7 @@ #define FILE_DIR "icons/vending_icons" #define FILE_DIR "interface" #define FILE_DIR "maps" +#define FILE_DIR "maps/backup" #define FILE_DIR "maps/RandomZLevels" #define FILE_DIR "sound" #define FILE_DIR "sound/AI" @@ -513,6 +514,7 @@ #include "code\game\machinery\seed_extractor.dm" #include "code\game\machinery\shieldgen.dm" #include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\small_constructable_frame.dm" #include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\status_display.dm" #include "code\game\machinery\suit_storage_unit.dm" @@ -1079,7 +1081,6 @@ #include "code\modules\power\lighting.dm" #include "code\modules\power\port_gen.dm" #include "code\modules\power\power.dm" -#include "code\modules\power\sd_DynamicAreaLighting.dm" #include "code\modules\power\smes.dm" #include "code\modules\power\solar.dm" #include "code\modules\power\switch.dm" @@ -1128,6 +1129,7 @@ #include "code\modules\recycling\disposal-construction.dm" #include "code\modules\recycling\disposal.dm" #include "code\modules\recycling\sortingmachinery.dm" +#include "code\modules\research\artifacts.dm" #include "code\modules\research\circuitprinter.dm" #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" @@ -1168,7 +1170,11 @@ #include "code\WorkInProgress\AI_Visibility\minimap.dm" #include "code\WorkInProgress\AI_Visibility\util.dm" #include "code\WorkInProgress\animusstation\atm.dm" -#include "code\WorkInProgress\Cael_Aislinn\power_monitor.dm" +#include "code\WorkInProgress\Cael_Aislinn\energy_field.dm" +#include "code\WorkInProgress\Cael_Aislinn\external_shield_gen.dm" +#include "code\WorkInProgress\Cael_Aislinn\sculpture.dm" +#include "code\WorkInProgress\Cael_Aislinn\shield_capacitor.dm" +#include "code\WorkInProgress\Cael_Aislinn\shield_gen.dm" #include "code\WorkInProgress\Cael_Aislinn\Rust\core_field.dm" #include "code\WorkInProgress\Cael_Aislinn\Rust\core_gen.dm" #include "code\WorkInProgress\Cael_Aislinn\Rust\core_monitor.dm" @@ -1189,6 +1195,7 @@ #include "code\WorkInProgress\Cael_Aislinn\Tajara\tajaran.dm" #include "code\WorkInProgress\Cael_Aislinn\Tajara\whisper.dm" #include "code\WorkInProgress\Chinsky\ashtray.dm" +#include "code\WorkInProgress\Mini\asay_trap.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Mini\pipe_heater.dm" #include "code\WorkInProgress\Mloc\Shortcuts.dm" @@ -1201,6 +1208,7 @@ #include "code\WorkInProgress\SkyMarshal\coatrack.dm" #include "code\WorkInProgress\SkyMarshal\portalathe.dm" #include "code\WorkInProgress\SkyMarshal\traitoritems.dm" +#include "code\WorkInProgress\SkyMarshal\Ultralight.dm" #include "code\WorkInProgress\SkyMarshal\wardrobes.dm" #include "code\WorkInProgress\Tastyfish\Eliza.dm" #include "code\WorkInProgress\Tastyfish\Eliza_Data.dm" diff --git a/code/FEA/FEA_fire.dm b/code/FEA/FEA_fire.dm index c37e51ac2c..db653b820b 100644 --- a/code/FEA/FEA_fire.dm +++ b/code/FEA/FEA_fire.dm @@ -156,13 +156,13 @@ obj New() ..() dir = pick(cardinal) - sd_SetLuminosity(3) + ul_SetLuminosity(3) Del() if (istype(loc, /turf/simulated)) var/turf/simulated/T = loc loc:active_hotspot = null - src.sd_SetLuminosity(0) + src.ul_SetLuminosity(0) diff --git a/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm b/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm index ebbf265ca3..ca0693a2cc 100644 --- a/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm +++ b/code/WorkInProgress/Cael_Aislinn/Supermatter/SuperMatter.dm @@ -30,7 +30,7 @@ New() ..() spawn(1) - sd_SetLuminosity(4) + ul_SetLuminosity(4,6,0) bullet_act(var/obj/item/projectile/Proj) if(Proj.flag != "bullet") diff --git a/code/WorkInProgress/Cael_Aislinn/energy_field.dm b/code/WorkInProgress/Cael_Aislinn/energy_field.dm new file mode 100644 index 0000000000..96a849f947 --- /dev/null +++ b/code/WorkInProgress/Cael_Aislinn/energy_field.dm @@ -0,0 +1,41 @@ + +//---------- actual energy field + +/obj/effect/energy_field + name = "energy field" + desc = "Impenetrable field of energy, capable of blocking anything as long as it's active." + icon = 'shielding.dmi' + icon_state = "shieldsparkles" + anchored = 1 + layer = 2.1 + density = 0 + invisibility = 2 + var/strength = 0 + var/obj/machinery/shield_gen/parent + var/stress = 0 + +/obj/effect/energy_field/ex_act(var/severity) + Stress(2) + //nothing + +/obj/effect/energy_field/meteorhit(obj/effect/meteor/M as obj) + if(M) + walk(M,0) + +/obj/effect/energy_field/proc/Stress(var/severity) + strength -= severity + stress += severity + + //if we take too much damage, drop out - the generator will bring us back up if we have enough power + if(strength < 1) + invisibility = 2 + density = 0 + +/obj/effect/energy_field/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) + //Purpose: Determines if the object (or airflow) can pass this atom. + //Called by: Movement, airflow. + //Inputs: The moving atom (optional), target turf, "height" and air group + //Outputs: Boolean if can pass. + + //return (!density || !height || air_group) + return 0 diff --git a/code/WorkInProgress/Cael_Aislinn/external_shield_gen.dm b/code/WorkInProgress/Cael_Aislinn/external_shield_gen.dm new file mode 100644 index 0000000000..9c84a7b2a7 --- /dev/null +++ b/code/WorkInProgress/Cael_Aislinn/external_shield_gen.dm @@ -0,0 +1,64 @@ + +//---------- external shield generator +//generates an energy field that loops around any built up area in space (is useless inside) halts movement and airflow, is blocked by walls, windows, airlocks etc + +/obj/machinery/shield_gen/external/New() + ..() + +/obj/machinery/shield_gen/external/get_shielded_turfs() + var + list + open = list(get_turf(src)) + closed = list() + + while(open.len) + for(var/turf/T in open) + for(var/turf/O in orange(1, T)) + if(get_dist(O,src) > field_radius) + continue + var/add_this_turf = 0 + if(istype(O,/turf/space)) + for(var/turf/simulated/G in orange(1, O)) + add_this_turf = 1 + break + for(var/obj/structure/S in orange(1, O)) + add_this_turf = 1 + break + for(var/obj/structure/S in O) + add_this_turf = 0 + break + + if(add_this_turf && !(O in open) && !(O in closed)) + open += O + open -= T + closed += T + + return closed + +/obj/machinery/shield_gen/external/process() + /*if(stat & (NOPOWER|BROKEN)) + return*/ + if(!active) + return + /*spawn(100) + power()*/ + /*if(src.active >= 1) + if(src.power == 0) + src.visible_message("\red The [src.name] shuts down due to lack of power!", \ + "You hear heavy droning fade out") + icon_state = "generator0" + src.active = 0*/ + ..() + +/obj/item/weapon/circuitboard/shield_gen/external + name = "Circuit Board (External Shield Generator)" + build_path = "/obj/machinery/shield_gen/external" + board_type = "machine" + origin_tech = "electromagnetic=3;engineering=2;power=1" + frame_desc = "Requires, 2 Cable Coil, 2 Nano Manipulator, 1 Advanced Matter Bin, 1 Console Screen and 1 High-Power Micro-Laser. " + req_components = list( + "/obj/item/weapon/cable_coil" = 2, + "/obj/item/weapon/stock_parts/manipulator/nano" = 2, + "/obj/item/weapon/stock_parts/matter_bin/adv" = 1, + "/obj/item/weapon/stock_parts/console_screen" = 1, + "/obj/item/weapon/stock_parts/micro_laser/high" = 1) diff --git a/code/WorkInProgress/Cael_Aislinn/power_monitor.dm b/code/WorkInProgress/Cael_Aislinn/power_monitor.dm deleted file mode 100644 index b044e174eb..0000000000 --- a/code/WorkInProgress/Cael_Aislinn/power_monitor.dm +++ /dev/null @@ -1,226 +0,0 @@ -//links to a power monitor computer and transmits the amount of energy in the associated powercable network -//uses the navbeacon sprite and transmits data via magic for now - -/obj/machinery/powermonitor - - icon = 'objects.dmi' - icon_state = "navbeacon0-f" - name = "power monitor" - desc = "A monitoring device used to track power in a cable network." - level = 1 // underfloor - layer = 2.5 - anchored = 1 - - var/freq = 1427 // radio frequency - var/powernet_tag = "" //the text tag associated with this power monitor's network - var/open = 0 // true if cover is open - var/locked = 1 // true if controls are locked - var/list/codes // assoc. list of transponder codes - var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value" - - req_access = list(access_engine) - - New() - ..() - var/turf/T = loc - hide(T.intact) - - set_codes() - - spawn(5) // must wait for map loading to finish - if(radio_controller) - radio_controller.add_object(src, freq, RADIO_POWER) - - // set the transponder codes assoc list from codes_txt - proc/set_codes() - if(!codes_txt) - return - - codes = new() - - var/list/entries = dd_text2List(codes_txt, ";") // entries are separated by semicolons - - for(var/e in entries) - var/index = findtext(e, "=") // format is "key=value" - if(index) - var/key = copytext(e, 1, index) - var/val = copytext(e, index+1) - codes[key] = val - else - codes[e] = "1" - - // called when turf state changes - // hide the object if turf is intact - hide(var/intact) - invisibility = intact ? 101 : 0 - updateicon() - - // update the icon_state - proc/updateicon() - var/state="navbeacon[open]" - if(invisibility) - icon_state = "[state]-f" // if invisible, set icon to faded version - // in case revealed by T-scanner - else - icon_state = "[state]" - - // look for a signal of the form "getpowerlevel" - // where X is any - // or the location - // or one of the set transponder keys - // if found, return a signal - receive_signal(datum/signal/signal) - - var/request = signal.data["getpowermonitor"] - if(request && (request == "any" || request == powernet_tag) ) - spawn(1) - post_signal() - - // return a signal giving the power network energy level - proc/post_signal() - - var/datum/radio_frequency/frequency = radio_controller.return_frequency(freq) - - if(!frequency) return - - var/datum/signal/signal = new() - signal.source = src - signal.transmission_method = 1 - signal.data["powerlevel"] = 1 //TODO - - for(var/key in codes) - signal.data[key] = codes[key] - - frequency.post_signal(src, signal, filter = RADIO_POWER) - - attackby(var/obj/item/I, var/mob/user) - var/turf/T = loc - if(T.intact) - return // prevent intraction when T-scanner revealed - - if(istype(I, /obj/item/weapon/screwdriver)) - open = !open - - user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") - - updateicon() - - else if (istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda)) - if(open) - if (src.allowed(user)) - src.locked = !src.locked - user << "Controls are now [src.locked ? "locked." : "unlocked."]" - else - user << "\red Access denied." - updateDialog() - else - user << "You must open the cover first!" - return - - attack_ai(var/mob/user) - interact(user, 1) - - attack_paw() - return - - attack_hand(var/mob/user) - interact(user, 0) - - proc/interact(var/mob/user, var/ai = 0) - var/turf/T = loc - if(T.intact) - return // prevent intraction when T-scanner revealed - - if(!open && !ai) // can't alter controls if not open, unless you're an AI - user << "The monitor's control cover is closed." - return - - var/dat = "Navigation Beacon
" - if(locked && !ai) - dat += "(swipe card to unlock controls)
" - else if(!ai) - dat += "(swipe card to lock controls)
" - - dat += "Frequency: " - if(!locked) - dat += "-" - dat += "-" - dat += "[format_frequency(freq)]" - if(!locked) - dat += "+" - dat += "+" - dat += "
" - - dat += "Power network tag: [powernet_tag ? powernet_tag : "(none)"]
" - dat += "Transponder Codes: