diff --git a/_maps/map_files/LayeniaStation/LayeniaStation.dmm b/_maps/map_files/LayeniaStation/LayeniaStation.dmm index 55181a120..24948c9f5 100644 --- a/_maps/map_files/LayeniaStation/LayeniaStation.dmm +++ b/_maps/map_files/LayeniaStation/LayeniaStation.dmm @@ -18482,6 +18482,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{ name = "air supply pipe" }, +/obj/structure/fans/tiny, /turf/open/floor/wood{ icon_state = "wood_tile"; name = "tile" @@ -20028,6 +20029,7 @@ /obj/machinery/status_display{ pixel_x = -32 }, +/obj/structure/dresser, /turf/open/floor/wood{ icon_state = "wood_parquet"; name = "parquet" @@ -32035,6 +32037,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, +/obj/structure/dresser, /turf/open/floor/wood{ icon_state = "wood_parquet"; name = "parquet" @@ -50321,6 +50324,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ name = "scrubbers pipe" }, +/obj/structure/fans/tiny, /turf/open/floor/wood{ icon_state = "wood_tile"; name = "tile" @@ -52219,6 +52223,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, +/obj/structure/dresser, /turf/open/floor/wood{ icon_state = "wood_parquet"; name = "parquet" @@ -71636,6 +71641,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, +/obj/structure/dresser, /turf/open/floor/wood{ icon_state = "wood_parquet"; name = "parquet" @@ -73542,20 +73548,6 @@ }, /turf/open/indestructible/layenia/crystal, /area/layenia/cave) -"lzh" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer3{ - dir = 9; - name = "air supply pipe" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ - dir = 9; - name = "scrubbers pipe" - }, -/turf/open/floor/plating, -/area/maintenance/starboard/central/upper) "lzj" = ( /obj/structure/window/reinforced/tinted{ dir = 8 @@ -83584,6 +83576,7 @@ /obj/machinery/status_display{ pixel_x = -32 }, +/obj/structure/dresser, /turf/open/floor/wood{ icon_state = "wood_parquet"; name = "parquet" @@ -134989,6 +134982,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, +/obj/structure/dresser, /turf/open/floor/wood{ icon_state = "wood_parquet"; name = "parquet" @@ -261678,7 +261672,7 @@ xrc xrc xrc xrc -lzh +aGg qMG qzm qMG diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm index 758f3b168..0fb121fec 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_events.dm @@ -437,7 +437,7 @@ repeatable = TRUE //property_weights = list("extended" = -1, "chaos" = 1) occurances_max = 1 - chaos_min = 1.8 + chaos_min = 2.5 //Increased due to how big the station is /datum/dynamic_ruleset/event/carp_migration name = "Carp Migration" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ca698d444..afb21b10a 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -485,65 +485,6 @@ /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, - /obj/machinery/door, - /obj/machinery/door/airlock/, - /obj/machinery/door/airlock/mining, - /obj/machinery/door/airlock/mining/glass, - /obj/machinery/door/airlock/medical, - /obj/machinery/door/airlock/medical/glass, - /obj/machinery/door/airlock/public, - /obj/machinery/door/airlock/public/glass, - /obj/machinery/door/airlock/research, - /obj/machinery/door/airlock/research/glass, - /obj/machinery/door/airlock/maintenance, - /obj/machinery/door/airlock/maintenance/glass, - /obj/machinery/door/airlock/command/, - /obj/machinery/door/airlock/command/glass, - /obj/machinery/door/airlock/engineering, - /obj/machinery/door/airlock/engineering/glass, - /obj/machinery/door/airlock/engineering/abandoned, - /obj/machinery/door/airlock/security, - /obj/machinery/door/airlock/security/glass, - /obj/machinery/door/airlock/maintenance/abandoned, - /obj/machinery/door/poddoor/shutters/preopen, - /obj/machinery/door/poddoor/shutters, - /obj/machinery/door/window/eastright, - /obj/machinery/door/window/eastleft, - /obj/machinery/door/window/northleft, - /obj/machinery/door/window/northright, - /obj/machinery/door/airlock/external, - /obj/machinery/door/airlock, - /obj/machinery/door/airlock/hatch, - /obj/machinery/door/airlock/engineering/glass/critical, - /obj/machinery/door/airlock/atmos, - /obj/machinery/door/airlock/highsecurity, - /turf/closed/wall/mineral/sandstone, - /obj/structure/falsewall/sandstone,) -// canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) - glass_amount = 2 - -/obj/structure/window/fulltile/unanchored - anchored = FALSE - -/obj/structure/window/plasma/fulltile - icon = 'icons/obj/smooth_structures/plasma_window.dmi' - icon_state = "plasmawindow" - dir = FULLTILE_WINDOW_DIR - max_integrity = 300 - fulltile = TRUE - flags_1 = PREVENT_CLICK_UNDER_1 - smooth = SMOOTH_TRUE - //canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) - - canSmoothWith = list( - /turf/closed/wall, - /turf/closed/wall/r_wall, - /obj/structure/falsewall, - /obj/structure/falsewall/brass, - /obj/structure/falsewall/reinforced, - /turf/closed/wall/rust, - /turf/closed/wall/r_wall/rust, - /turf/closed/wall/clockwork, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile, /obj/machinery/door, @@ -578,6 +519,76 @@ /obj/machinery/door/airlock/engineering/glass/critical, /obj/machinery/door/airlock/atmos, /obj/machinery/door/airlock/highsecurity, + /obj/machinery/door/firedoor, + /turf/closed/wall/mineral/lead, + /turf/closed/wall/mineral/sandstone, + /obj/structure/falsewall/sandstone) +// canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) + glass_amount = 2 + +/obj/structure/window/fulltile/unanchored + anchored = FALSE + +/obj/structure/window/plasma/fulltile + icon = 'icons/obj/smooth_structures/plasma_window.dmi' + icon_state = "plasmawindow" + dir = FULLTILE_WINDOW_DIR + max_integrity = 300 + fulltile = TRUE + flags_1 = PREVENT_CLICK_UNDER_1 + smooth = SMOOTH_TRUE + //canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile) + + canSmoothWith = list( + /turf/closed/wall, + /turf/closed/wall/r_wall, + /obj/structure/falsewall, + /obj/structure/falsewall/brass, + /obj/structure/falsewall/reinforced, + /turf/closed/wall/rust, + /turf/closed/wall/r_wall/rust, + /turf/closed/wall/clockwork, + /turf/closed/indestructible/riveted/, + /turf/closed/indestructible/riveted/uranium, + /obj/structure/window/fulltile, + /obj/structure/window/reinforced/fulltile, + /obj/structure/window/reinforced/tinted/fulltile, + /obj/structure/window/plasma/fulltile, + /obj/structure/window/plasma/reinforced/fulltile, + /obj/machinery/door, + /obj/machinery/door/airlock/, + /obj/machinery/door/airlock/mining, + /obj/machinery/door/airlock/mining/glass, + /obj/machinery/door/airlock/medical, + /obj/machinery/door/airlock/medical/glass, + /obj/machinery/door/airlock/public, + /obj/machinery/door/airlock/public/glass, + /obj/machinery/door/airlock/research, + /obj/machinery/door/airlock/research/glass, + /obj/machinery/door/airlock/maintenance, + /obj/machinery/door/airlock/maintenance/glass, + /obj/machinery/door/airlock/command/, + /obj/machinery/door/airlock/command/glass, + /obj/machinery/door/airlock/engineering, + /obj/machinery/door/airlock/engineering/glass, + /obj/machinery/door/airlock/engineering/abandoned, + /obj/machinery/door/airlock/security, + /obj/machinery/door/airlock/security/glass, + /obj/machinery/door/airlock/maintenance/abandoned, + /obj/machinery/door/poddoor/shutters/preopen, + /obj/machinery/door/poddoor/shutters, + /obj/machinery/door/window/eastright, + /obj/machinery/door/window/eastleft, + /obj/machinery/door/window/northleft, + /obj/machinery/door/window/northright, + /obj/machinery/door/airlock/external, + /obj/machinery/door/airlock, + /obj/machinery/door/airlock/hatch, + /obj/machinery/door/airlock/engineering/glass/critical, + /obj/machinery/door/airlock/atmos, + /obj/machinery/door/airlock/highsecurity, + /obj/machinery/door/firedoor, + /turf/closed/wall/mineral/lead, /turf/closed/indestructible/, /turf/closed/indestructible/riveted, /turf/closed/indestructible/fakeglass) diff --git a/hyperstation/code/modules/jobs/job_types/lambent_aspect.dm b/hyperstation/code/modules/jobs/job_types/lambent_aspect.dm new file mode 100644 index 000000000..aeb5c913b --- /dev/null +++ b/hyperstation/code/modules/jobs/job_types/lambent_aspect.dm @@ -0,0 +1,204 @@ +//I'll be honest I have no clue where to put lambent aspects, so this will just be here for now. I'm not the best at modularization, nor coding. +//This will be finished lader. + +//Innate powers, without attuning to a specific aspect +/datum/action/innate/lambent + name = "Dahl's a dumbass" + desc = "Yell at her if you see this" + + background_icon_state = "bg_agent" + + icon_icon = 'icons/mob/actions/actions_spells.dmi' //Using this for now until I sprite some action buttons + button_icon_state = "spell_default" + + var/mob/living/carbon/human/holder + + //check_flags = AB_CHECK_STUN|AB_CHECK_CONSCIOUS + + //cooldown_time = 10 + +/datum/action/innate/lambent/Grant(mob/user) + . = ..() + holder = user +/* +//FLIGHT +/datum/action/innate/lambent/flight(mob/user) + name = "Toggle free-flight" + desc = "Displace the weave locally to propell yourself in any direction." + check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_STUN + + icon_icon = 'icons/mob/actions/actions_items.dmi' + button_icon_state = "flight" + + +/datum/action/innate/lambent/flight/Trigger() + switch(active) + if(0) //Start off + Activate() + active = 1 + return + if(1) + Deactivate() + active = 0 + return //can't help but feel like I'm doing things terribly wrong. + +/datum/action/innate/lambent/flight/Activate() + holder.movement_type |= FLYING + holder.override_float = TRUE + holder.pass_flags |= PASSTABLE + holder.visible_message("Reality begins to distort around [holder], bringing them into the air!") + +/datum/action/innate/lambent/flight/Deactivate() + holder.movement_type &= ~FLYING + holder.override_float = FALSE + holder.pass_flags &= ~PASSTABLE + holder.visible_message("Flickering reality fades as [holder] settles to the ground.") +*/ + +/* Finish this when I understand the code a bit more +/datum/action/cooldown/lambent/locate + name = "Weave Locate" + desc = "Plunge into the weave to teleport to a target of your choosing. Be aware of your end result." + button_icon_state = "emp" + cooldown_time = 120 + + /var/mob/living/carbon/human/target_human = target +*/ +/* +/datum/action/innate/lambent/dash + name = "Surge Dash" + desc = "Imbue yourself with weave energy to dash forwards." + + var/current_charges = 3 + var/max_charges = 3 + var/charge_rate = 250 + + var/dash_sound = 'sound/magic/blink.ogg' + var/recharge_sound = 'sound/magic/charge.ogg' + + var/phasein = /obj/effect/temp_visual/dir_setting/ninja/phase + var/phaseout = /obj/effect/temp_visual/dir_setting/ninja/phase/out + var/beam_effect = "blur" + + var/obj/item/lambent/dash + +/obj/item/lambent/dash + name = "condensed Weave energy" + desc = "Bundling energy straight from the Weave. It hurts your head just to comprehend." + block_chance = 50 + w_class = WEIGHT_CLASS_HUGE + force = 0 + throwforce = 0 + attack_verb = list("resonated", "harmonized") + var/datum/action/innate/lambent/dash/ability + + icon_state = "energy_katana" //PH + + interaction_flags_item = 0 //Prevent it from being clicked on, just in case. + //item_flags = DROPDEL //Deletes itself when dropped, but I may need to call some code and qdel instead. + +/obj/item/lambent/dash/Initialize() + . = ..() + ability = new(src) + +/obj/item/lambent/dash/attack_self(mob/user) + visible_message("[user] dissipates a flickering energy in their palm.") + src.dropped() + +/obj/item/lambent/dash/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + . = ..() + ability.Teleport(user, target) + +/obj/item/lambent/dash/pickup(mob/living/user) + . = ..() + ability.Grant(user) + user.update_icons() + +/obj/item/lambent/dash/dropped(mob/user) + . = ..() + ability.Remove(user) + user.update_icons() + QDEL_IN(src, 1) + +//datum/action/innate/lambent/dash/ability //This is what poor planning with code gets you. Use a proc_holder next time -Dahl + +/datum/action/innate/lambent/dash/Trigger() + //This is effectively an on/off state of the ability. + holder.visible_message("PH Trigger Initial") + if(holder.get_active_held_item() == null) + if(var/active == 0) //Start off + holder.visible_message("PH Trigger to Activate") + Activate() + active = 1 //set to 1 so we can toggle off + return + if(var/active == 1) + holder.visible_message("PH Trigger to Deactivate") + Deactivate() + active = 0 //set to 0 so we can toggle on + return + holder.visible_message("PH active held item return") + return + + +/datum/action/innate/lambent/dash/Activate() + holder.visible_message("PH Activation") + holder.equip_to_slot_if_possible(new/obj/item/lambent/dash(null), SLOT_HANDS) + +/datum/action/innate/lambent/dash/Deactivate() + holder.visible_message("PH Deactivation") + if(holder.get_item_by_slot(SLOT_HANDS) == /obj/item/lambent/dash) + holder.dropItemToGround(/obj/item/lambent/dash) + + +/* Leaving this here as a toggled ability to reference later. +/datum/action/innate/lambent/dash/Trigger() + holder.visible_message("PH Trigger Initial") + switch(active) + if(0) //Start off + holder.visible_message("PH Trigger to Activate") + Activate() + active = 1 //set to 1 so we can toggle off + if(1) + holder.visible_message("PH Trigger to Deactivate") + Deactivate() + active = 0 //set to 0 so we can toggle on + +/datum/action/innate/lambent/dash/Activate() + holder.visible_message("PH Activation") + +/datum/action/innate/lambent/dash/Deactivate() + holder.visible_message("PH Deactivation") +*/ + +/* +/datum/action/innate/lambent/dash/IsAvailable() + if(current_charges > 0) + return TRUE + else + return FALSE +*/ + +//something something dash.Teleport(user,) + + +/datum/action/innate/lambent/dash/proc/Teleport(mob/user, atom/target) + if(!IsAvailable()) + return + var/turf/T = get_turf(target) + if(target in view(user.client.view, user)) + var/obj/spot1 = new phaseout(get_turf(user), user.dir) + user.forceMove(T) + playsound(T, dash_sound, 25, 1) + var/obj/spot2 = new phasein(get_turf(user), user.dir) + spot1.Beam(spot2,beam_effect,time=20) + current_charges-- + holder.update_action_buttons_icon() + addtimer(CALLBACK(src, .proc/charge), charge_rate) + +/datum/action/innate/lambent/dash/proc/charge() + current_charges = CLAMP(current_charges + 1, 0, max_charges) + holder.update_action_buttons_icon() + if(recharge_sound) + playsound(holder, recharge_sound, 50, 1) + to_chat(holder, "[src] now has [current_charges]/[max_charges] charges.") +*/ diff --git a/hyperstation/code/modules/jobs/job_types/security.dm b/hyperstation/code/modules/jobs/job_types/security.dm index 0360b5423..61d4e087f 100644 --- a/hyperstation/code/modules/jobs/job_types/security.dm +++ b/hyperstation/code/modules/jobs/job_types/security.dm @@ -1,6 +1,7 @@ /* Lambent */ + /datum/job/lambent title = "Lambent" flag = LAMBENT @@ -30,9 +31,9 @@ Lambent ACCESS_RESEARCH, ACCESS_ENGINE, ACCESS_MINING, ACCESS_MEDICAL, ACCESS_CONSTRUCTION, ACCESS_MAILSORTING, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - mind_traits = list(TRAIT_CAPTAIN_METABOLISM) + mind_traits = list(TRAIT_CAPTAIN_METABOLISM, TRAIT_AUTO_CATCH_ITEM, TRAIT_DISK_VERIFIER, TRAIT_NOSLIPALL) - blacklisted_quirks = list(/datum/quirk/brainproblems, /datum/quirk/insanity, /datum/quirk/nonviolent) + blacklisted_quirks = list(/datum/quirk/brainproblems, /datum/quirk/insanity) /datum/outfit/job/lambent name = "Lambent" @@ -54,3 +55,12 @@ Lambent box = /obj/item/storage/box/security implants = list(/obj/item/implant/mindshield) + +//innate abilities will go here + +/datum/job/lambent/after_spawn(mob/living/H, mob/M) + //var/datum/action/innate/lambent/dash/dash = new + //dash.Grant(H) + //var/datum/action/innate/lambent/flight/flight = new + //flight.Grant(H) + diff --git a/tgstation.dme b/tgstation.dme index 3408788ef..6e439d0a3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3198,6 +3198,7 @@ #include "hyperstation\code\modules\jobs\job_types\_job.dm" #include "hyperstation\code\modules\jobs\job_types\civilian.dm" #include "hyperstation\code\modules\jobs\job_types\job_alt_titles.dm" +#include "hyperstation\code\modules\jobs\job_types\lambent_aspect.dm" #include "hyperstation\code\modules\jobs\job_types\roleplay.dm" #include "hyperstation\code\modules\jobs\job_types\security.dm" #include "hyperstation\code\modules\mining\shelters.dm"