diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 23c87afb67a..db52c9cfd8e 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -215,7 +215,7 @@ flags_inv = HIDEJUMPSUIT allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) body_parts_covered = CHEST|GROIN|LEGS|ARMS - armor = list(melee = -100, bullet = -100, laser = -100,energy = -100, bomb = -100, bio = -100, rad = -100) + armor = list(melee = -50, bullet = -50, laser = -100,energy = -50, bomb = -50, bio = -50, rad = -50) slowdown = -1 hooded = 1 hoodtype = /obj/item/clothing/head/berserkerhood @@ -227,7 +227,7 @@ body_parts_covered = HEAD flags = NODROP flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - armor = list(melee = -100, bullet = -100, laser = -100,energy = -100, bomb = -100, bio = -100, rad = -100) + armor = list(melee = -50, bullet = -50, laser = -50,energy = -50, bomb = -50, bio = -50, rad = -50) /obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) ..() @@ -286,7 +286,7 @@ user << "We have exhausted our ability to curse the shuttle." return if(SSshuttle.emergency.mode == SHUTTLE_CALL) - var/cursetime = 1500 + var/cursetime = 1800 var/timer = SSshuttle.emergency.timeLeft(1) + cursetime SSshuttle.emergency.setTimer(timer) user << "You shatter the orb! A dark essence spirals into the air, then disappears." @@ -295,12 +295,12 @@ sleep(20) var/global/list/curses if(!curses) - curses = list("A fuel technician just slit his own throat and begged for death. The shuttle will be delayed by two minutes.", - "The shuttle's navigation programming was replaced by a file containing two words, IT COMES. The shuttle will be delayed by two minutes.", - "The shuttle's custodian tore out his guts and began painting strange shapes on the floor. The shuttle will be delayed by two minutes.", - "A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh. The shuttle will be delayed by two minutes.", - "A shuttle inspector started laughing madly over the radio and then threw herself into an engine turbine. The shuttle will be delayed by two minutes.", - "The shuttle dispatcher was found dead with bloody symbols carved into their flesh. The shuttle will be delayed by two minutes.") + curses = list("A fuel technician just slit his own throat and begged for death. The shuttle will be delayed by three minutes.", + "The shuttle's navigation programming was replaced by a file containing two words, IT COMES. The shuttle will be delayed by three minutes.", + "The shuttle's custodian tore out his guts and began painting strange shapes on the floor. The shuttle will be delayed by three minutes.", + "A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh. The shuttle will be delayed by three minutes.", + "A shuttle inspector started laughing madly over the radio and then threw herself into an engine turbine. The shuttle will be delayed by three minutes.", + "The shuttle dispatcher was found dead with bloody symbols carved into their flesh. The shuttle will be delayed by three minutes.") var/message = pick_n_take(curses) priority_announce("[message]", "System Failure", 'sound/misc/notice1.ogg') curselimit++ @@ -310,7 +310,7 @@ desc = "This relic teleports you forward a medium distance." icon = 'icons/obj/cult.dmi' icon_state ="shifter" - var/uses = 2 + var/uses = 4 /obj/item/device/cult_shift/examine(mob/user) ..() @@ -333,7 +333,7 @@ if(!iscultist(user)) user.unEquip(src, 1) step(src, pick(alldirs)) - user << "\The [src] flickers out of your hands, too eager to move!" + user << "\The [src] flickers out of your hands, your connection to this dimension is too strong!" return var/mob/living/carbon/C = user @@ -358,3 +358,54 @@ else C << "The veil cannot be torn here!" + +/obj/item/device/flashlight/flare/culttorch + name = "void torch" + desc = "Used by veteran cultists to instantly transport items to their needful bretheren." + w_class = 2 + brightness_on = 1 + icon_state = "torch-on" + item_state = "torch-on" + color = "#ff0000" + on_damage = 15 + slot_flags = null + on = 1 + var/charges = 3 + +/obj/item/device/flashlight/flare/culttorch/afterattack(atom/movable/A, mob/user, proximity) + if(!proximity) + return + + if(istype(A, /obj/item)) + + var/list/cultists = list() + for(var/datum/mind/M in ticker.mode.cult) + if(!(user) && M.current && M.current.stat != DEAD) + cultists |= M.current + var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists + if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) + return + if(!cultist_to_receive) + user << "You require a destination!" + log_game("Void torch failed - no target") + return + if(cultist_to_receive.stat == DEAD) + user << "[cultist_to_receive] has died!" + log_game("Void torch failed - target died") + return + if(!iscultist(cultist_to_receive)) + user << "[cultist_to_receive] is not a follower of the Geometer!" + log_game("Void torch failed - target was deconverted") + return + user << "You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!" + user << "\The [src] now has [charges] charge\s." + cultist_to_receive.put_in_hands(A) + charges-- + if(charges == 0) + qdel(src) + + else + ..() + user << "\The [src] can only transport items!" + return + diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 81cdbfd1499..ed07797e2c6 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -177,15 +177,16 @@ var/list/blacklisted_pylon_turfs = typecacheof(list( if(cooldowntime > world.time) user << "The magic in [src] is weak, it will be ready to use again in [getETA()]." return - var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Shifter") + var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Walker Set") var/pickedtype switch(choice) if("Supply Talisman") pickedtype = /obj/item/weapon/paper/talisman/supply/weak if("Shuttle Curse") pickedtype = /obj/item/device/shuttle_curse - if("Veil Shifter") + if("Veil Walker Set") pickedtype = /obj/item/device/cult_shift + pickedtype = /obj/item/device/flashlight/flare/culttorch if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 var/obj/item/N = new pickedtype(get_turf(src)) diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 8962fb95af0..ddeb74770c4 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -56,6 +56,7 @@ dat += "Please choose the chant to be imbued into the fabric of reality.
" dat += "
" dat += "N'ath reth sh'yro eth d'raggathnor! - Summons an arcane tome, used to scribe runes and communicate with other cultists.
" + dat += "Ar'Tee ess! - Provides 5 runed metal.
" dat += "Sas'so c'arta forbici! - Allows you to move to a selected teleportation rune.
" dat += "Ta'gh fara'qha fel d'amar det! - Allows you to destroy technology in a short range.
" dat += "Fuu ma'jin! - Allows you to stun a person by attacking them with the talisman.
" @@ -76,6 +77,11 @@ if("newtome") var/obj/item/weapon/tome/T = new(usr) usr.put_in_hands(T) + if("metal") + if(istype(src, /obj/item/weapon/paper/talisman/supply/weak)) + usr.visible_message("Lesser supply talismans lack the strength to materialize runed metal!") + return + new /obj/item/stack/sheet/runed_metal(get_turf(usr),5) if("teleport") var/obj/item/weapon/paper/talisman/teleport/T = new(usr) usr.put_in_hands(T) @@ -102,6 +108,7 @@ qdel(src) /obj/item/weapon/paper/talisman/supply/weak + cultist_name = "Lesser Supply Talisman" uses = 2 //Rite of Translocation: Same as rune diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index f499652330f..ba4e9cdce69 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -134,6 +134,24 @@ setDir(mimiced_atom.dir) animate(src, alpha = 0, time = duration) +/obj/effect/overlay/cult + mouse_opacity = 0 + var/atom/linked + +/obj/effect/overlay/cult/ex_act() + return FALSE + +/obj/effect/overlay/cult/Destroy() + if(linked) + linked = null + ..() + return QDEL_HINT_PUTINPOOL + +/obj/effect/overlay/cult/floor + icon = 'icons/turf/floors.dmi' + icon_state = "cult" + layer = TURF_LAYER + /obj/effect/overlay/temp/cult randomdir = 0 duration = 10 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index c515549a37d..95a6e9909f7 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -224,12 +224,12 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \ */ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \ - new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 3, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("pylon", /obj/structure/cult/pylon, 3, time = 40, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("forge", /obj/structure/cult/forge, 5, time = 40, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("forge", /obj/structure/cult/forge, 4, time = 40, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("archives", /obj/structure/cult/tome, 2, time = 40, one_per_turf = 1, on_floor = 1), \ - new/datum/stack_recipe("altar", /obj/structure/cult/talisman, 5, time = 40, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("altar", /obj/structure/cult/talisman, 4, time = 40, one_per_turf = 1, on_floor = 1), \ ) /obj/item/stack/sheet/runed_metal diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index d72e106b393..a7895b526d4 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -150,7 +150,27 @@ /turf/open/floor/engine/cult name = "engraved floor" - icon_state = "cult" + icon_state = "plating" + var/obj/effect/clockwork/overlay/floor/realappearence + +/turf/open/floor/engine/cult/New() + ..() + PoolOrNew(/obj/effect/overlay/temp/cult/turf/open/floor, src) + realappearence = PoolOrNew(/obj/effect/overlay/cult/floor, src) + realappearence.linked = src + +/turf/open/floor/engine/cult/Destroy() + be_removed() + return ..() + +/turf/open/floor/engine/cult/ChangeTurf(path, defer_change = FALSE) + if(path != type) + be_removed() + return ..() + +/turf/open/floor/engine/cult/proc/be_removed() + qdel(realappearence) + realappearence = null /turf/open/floor/engine/cult/New() PoolOrNew(/obj/effect/overlay/temp/cult/turf/open/floor, src)