From a090e33a15dacbf88602e61a85ef6fadd7d50cc7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 17 Jun 2017 15:31:04 -0500 Subject: [PATCH] Adds Prolonging Prism as an application scripture (#1472) --- code/__DEFINES/clockcult.dm | 2 + .../clock_items/clock_components.dm | 2 +- .../scripture_applications.dm | 32 ++++ .../clock_structures/prolonging_prism.dm | 140 ++++++++++++++++++ .../effects/temporary_visuals/clockcult.dm | 14 ++ icons/effects/64x64.dmi | Bin 10479 -> 10466 bytes tgstation.dme | 1 + 7 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index ded2c34ef8..7459ded715 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -104,3 +104,5 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us #define OCULAR_WARDEN_EXCLUSION_RANGE 3 //the range at which ocular wardens cannot be placed near other ocular wardens #define RATVARIAN_SPEAR_DURATION 1800 //how long ratvarian spears last; defaults to 3 minutes + +#define PRISM_DELAY_DURATION 1200 //how long prolonging prisms delay the shuttle for; defaults to 2 minutes diff --git a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm b/code/game/gamemodes/clock_cult/clock_items/clock_components.dm index 7550aea74f..f30483a6af 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clock_components.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clock_components.dm @@ -69,7 +69,7 @@ /obj/item/clockwork/component/vanguard_cogwheel/onyx_prism name = "onyx prism" desc = "An onyx prism with a small aperture. It's very heavy." - clockwork_desc = "A broken prism from a mending motor. Serviceable as a substitute for a vanguard cogwheel." + clockwork_desc = "A broken prism from a prolonging prism. Serviceable as a substitute for a vanguard cogwheel." icon_state = "onyx_prism" cultist_message = "The prism grows painfully hot in your hands." servant_of_ratvar_messages = list("The prism isn't getting any lighter." = FALSE, "\"So... you haven't failed yet. Have hope, child.\"" = TRUE, \ diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm index c3e40692c2..5844b69413 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm @@ -214,6 +214,38 @@ quickbind_desc = "Creates an Interdiction Lens, which drains power into nearby Sigils of Transmission." +//Prolonging Prism: Creates a prism that will delay the shuttle at a power cost +/datum/clockwork_scripture/create_object/prolonging_prism + descname = "Powered Structure, Delay Emergency Shuttles" + name = "Prolonging Prism" + desc = "Creates a mechanized prism which will delay the arrival of an emergency shuttle by 2 minutes at a massive power cost." + invocations = list("May this prism...", "...grant us time to enact his will!") + channel_time = 80 + consumed_components = list(VANGUARD_COGWHEEL = 5, GEIS_CAPACITOR = 2, REPLICANT_ALLOY = 2) + object_path = /obj/structure/destructible/clockwork/powered/prolonging_prism + creator_message = "You form a prolonging prism, which will delay the arrival of an emergency shuttle at a massive power cost." + observer_message = "An onyx prism forms in midair and sprouts tendrils to support itself!" + invokers_required = 2 + multiple_invokers_used = TRUE + usage_tip = "The power cost to delay a shuttle increases based on CV and the number of times activated." + tier = SCRIPTURE_APPLICATION + one_per_tile = TRUE + primary_component = VANGUARD_COGWHEEL + sort_priority = 7 + quickbind = TRUE + quickbind_desc = "Creates a Prolonging Prism, which will delay the arrival of an emergency shuttle by 2 minutes at a massive power cost." + +/datum/clockwork_scripture/create_object/prolonging_prism/check_special_requirements() + if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE) + to_chat(invoker, "\"It is too late to construct one of these, champion.\"") + return FALSE + var/turf/T = get_turf(invoker) + if(!T || T.z != ZLEVEL_STATION) + to_chat(invoker, "\"You must be on the station to construct one of these, champion.\"") + return FALSE + return ..() + + //Mania Motor: Creates a malevolent transmitter that will broadcast the whispers of Sevtug into the minds of nearby nonservants, causing a variety of mental effects at a power cost. /datum/clockwork_scripture/create_object/mania_motor descname = "Powered Structure, Area Denial" diff --git a/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm b/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm new file mode 100644 index 0000000000..28cc82ff2e --- /dev/null +++ b/code/game/gamemodes/clock_cult/clock_structures/prolonging_prism.dm @@ -0,0 +1,140 @@ +//Prolonging Prism: A prism that consumes power to delay the shuttle +/obj/structure/destructible/clockwork/powered/prolonging_prism + name = "prolonging prism" + desc = "A dark onyx prism, held in midair by spiraling tendrils of stone." + clockwork_desc = "A powerful prism that will delay the arrival of an emergency shuttle." + icon_state = "prolonging_prism_inactive" + active_icon = "prolonging_prism" + inactive_icon = "prolonging_prism_inactive" + unanchored_icon = "prolonging_prism_unwrenched" + construction_value = 20 + max_integrity = 125 + obj_integrity = 125 + break_message = "The prism falls to the ground with a heavy thud!" + debris = list(/obj/item/clockwork/alloy_shards/small = 3, \ + /obj/item/clockwork/alloy_shards/medium = 1, \ + /obj/item/clockwork/alloy_shards/large = 1, \ + /obj/item/clockwork/component/vanguard_cogwheel/onyx_prism = 1) + var/static/list/component_refund = list(VANGUARD_COGWHEEL = 2, GEIS_CAPACITOR = 1, REPLICANT_ALLOY = 1) + var/static/delay_cost = 2500 + var/static/delay_cost_increase = 750 + var/static/delay_remaining = 0 + +/obj/structure/destructible/clockwork/powered/prolonging_prism/examine(mob/user) + ..() + if(is_servant_of_ratvar(user) || isobserver(user)) + if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE) + to_chat(user, "An emergency shuttle has arrived and this prism is no longer useful; attempt to activate it to gain a partial refund of components used.") + else + var/efficiency = get_efficiency_mod() + var/efficiency_time = get_efficiency_mod(TRUE) + to_chat(user, "It requires at least [get_delay_cost() * efficiency]W of power to attempt to delay the arrival of an emergency shuttle by \ + [2 * efficiency_time] minutes.") + to_chat(user, "This cost increases by [delay_cost_increase * 0.1]W for every 10 CV and [delay_cost_increase]W for every previous \ + activation.") + +/obj/structure/destructible/clockwork/powered/prolonging_prism/forced_disable(bad_effects) + if(active) + if(bad_effects) + try_use_power(MIN_CLOCKCULT_POWER*4) + visible_message("[src] emits an airy chuckling sound and falls dark!") + toggle() + return TRUE + +/obj/structure/destructible/clockwork/powered/prolonging_prism/attack_hand(mob/living/user) + if(user.canUseTopic(src, !issilicon(user), NO_DEXTERY) && is_servant_of_ratvar(user)) + if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE) + to_chat(user, "You break [src] apart, refunding some of the components used.") + for(var/i in component_refund) + generate_cache_component(i, src) + take_damage(max_integrity) + return 0 + if(active) + return 0 + var/turf/T = get_turf(src) + if(!T || T.z != ZLEVEL_STATION) + to_chat(user, "[src] must be on the station to function!") + return 0 + if(SSshuttle.emergency.mode != SHUTTLE_CALL) + to_chat(user, "No emergency shuttles are attempting to arrive at the station!") + return 0 + var/efficiency = get_efficiency_mod() + if(!try_use_power(get_delay_cost() * efficiency)) + to_chat(user, "[src] needs more power to function!") + return 0 + delay_cost += delay_cost_increase + delay_remaining += PRISM_DELAY_DURATION + toggle(0, user) + +/obj/structure/destructible/clockwork/powered/prolonging_prism/process() + var/turf/own_turf = get_turf(src) + if(SSshuttle.emergency.mode != SHUTTLE_CALL || delay_remaining <= 0 || !own_turf || own_turf.z != ZLEVEL_STATION) + forced_disable(FALSE) + return + . = ..() + var/delay_amount = 40 + delay_remaining -= delay_amount + var/efficiency = get_efficiency_mod() + SSshuttle.emergency.setTimer(SSshuttle.emergency.timeLeft(1) + (delay_amount * efficiency)) + var/highest_y + var/highest_x + var/lowest_y + var/lowest_x + var/list/prism_turfs = list() + for(var/t in SSshuttle.emergency.ripple_area(SSshuttle.getDock("emergency_home"))) + prism_turfs[t] = TRUE + var/turf/T = t + if(!highest_y || T.y > highest_y) + highest_y = T.y + if(!highest_x || T.x > highest_x) + highest_x = T.x + if(!lowest_y || T.y < lowest_y) + lowest_y = T.y + if(!lowest_x || T.x < lowest_x) + lowest_x = T.x + var/mean_y = Lerp(lowest_y, highest_y) + var/mean_x = Lerp(lowest_x, highest_x) + if(prob(50)) + mean_y = Ceiling(mean_y) + else + mean_y = Floor(mean_y) + if(prob(50)) + mean_x = Ceiling(mean_x) + else + mean_x = Floor(mean_x) + var/turf/semi_random_center_turf = locate(mean_x, mean_y, ZLEVEL_STATION) + for(var/t in getline(src, semi_random_center_turf)) + prism_turfs[t] = TRUE + var/placement_style = prob(50) + for(var/t in prism_turfs) + var/turf/T = t + if(placement_style) + if(IsOdd(T.x + T.y)) + seven_random_hexes(T, efficiency) + else if(prob(50 * efficiency)) + new /obj/effect/temp_visual/ratvar/prolonging_prism(T) + else + if(IsEven(T.x + T.y)) + seven_random_hexes(T, efficiency) + else if(prob(50 * efficiency)) + new /obj/effect/temp_visual/ratvar/prolonging_prism(T) + CHECK_TICK //we may be going over a hell of a lot of turfs + +/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/get_delay_cost() + return Floor((GLOB.clockwork_construction_value * delay_cost_increase * 0.01) + delay_cost, MIN_CLOCKCULT_POWER) + +/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/seven_random_hexes(turf/T, efficiency) + var/static/list/hex_states = list("prismhex1", "prismhex2", "prismhex3", "prismhex4", "prismhex5", "prismhex6", "prismhex7") + var/mutable_appearance/hex_combo + for(var/n in hex_states) //BUILD ME A HEXAGON + if(prob(50 * efficiency)) + if(!hex_combo) + hex_combo = mutable_appearance('icons/effects/64x64.dmi', n, RIPPLE_LAYER) + else + hex_combo.overlays += mutable_appearance('icons/effects/64x64.dmi', n, RIPPLE_LAYER) + if(hex_combo) //YOU BUILT A HEXAGON + hex_combo.pixel_x = -16 + hex_combo.pixel_y = -16 + hex_combo.mouse_opacity = 0 + hex_combo.plane = GAME_PLANE + new /obj/effect/temp_visual/ratvar/prolonging_prism(T, hex_combo) diff --git a/code/game/objects/effects/temporary_visuals/clockcult.dm b/code/game/objects/effects/temporary_visuals/clockcult.dm index 1eae2a3c64..2f591daf19 100644 --- a/code/game/objects/effects/temporary_visuals/clockcult.dm +++ b/code/game/objects/effects/temporary_visuals/clockcult.dm @@ -146,6 +146,20 @@ pixel_y = rand(-10, 10) animate(src, alpha = 0, time = 3, easing = EASE_OUT) +/obj/effect/temp_visual/ratvar/prolonging_prism + icon = 'icons/effects/64x64.dmi' + icon_state = "prismhex1" + layer = RIPPLE_LAYER + pixel_y = -16 + pixel_x = -16 + duration = 30 + +/obj/effect/temp_visual/ratvar/prolonging_prism/Initialize(mapload, set_appearance) + . = ..() + if(set_appearance) + appearance = set_appearance + animate(src, alpha = 0, time = duration, easing = BOUNCE_EASING) + /obj/effect/temp_visual/ratvar/spearbreak icon = 'icons/effects/64x64.dmi' icon_state = "ratvarspearbreak" diff --git a/icons/effects/64x64.dmi b/icons/effects/64x64.dmi index 361cfff40c0f47430c4d7bf7d8767324405e36a3..d80b077988a14641d1e71f58fda0102fd652c349 100644 GIT binary patch literal 10466 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 B?6v>^ literal 10479 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 XHM6K~t{(?}!3cS-peA1-YwZ6&ra&UA diff --git a/tgstation.dme b/tgstation.dme index 46bee1eb18..c796ed4e6b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -469,6 +469,7 @@ #include "code\game\gamemodes\clock_cult\clock_structures\interdiction_lens.dm" #include "code\game\gamemodes\clock_cult\clock_structures\mania_motor.dm" #include "code\game\gamemodes\clock_cult\clock_structures\ocular_warden.dm" +#include "code\game\gamemodes\clock_cult\clock_structures\prolonging_prism.dm" #include "code\game\gamemodes\clock_cult\clock_structures\ratvar_the_clockwork_justicar.dm" #include "code\game\gamemodes\clock_cult\clock_structures\taunting_trail.dm" #include "code\game\gamemodes\clock_cult\clock_structures\tinkerers_cache.dm"