Files
Bubberstation/code/modules/religion/religion_structures.dm
John Willard b97f3779b2 Re-adds the Dragoon tomb ruin & Spear (#90781)
It was removed in https://github.com/tgstation/tgstation/pull/27799
because the spear was broken and the Flans' AI sucked with not-great
sprites and was all just one big reference. Original addition:
https://github.com/tgstation/tgstation/pull/22270

This re-adds it, updates the map (now using airless turfs) with extra
ambiance, using ash whelps (lavaland variation of ice whelps) instead of
Flans, re-adds the spear, and adds armor as well this time around.

The spear gives you a jump ability to crash down upon a player below
you, rather than teleporting to wherever you throw the spear at. You
can't attack while mid-air, you can go through tables but not
walls/doors, and you also can't un-dualwield or drop the spear mid-jump.
Landing on a mob deals double damage to them (36 to unarmored people),
while landing on objects deals 150 damage to them (taken from savannah's
jump ability, which was in turn taken from hulk's punching)
It's also got some extra throw force (24 compared to default spear's 20)

The armor has basic security-level armor but covers your whole body.
Does not include space protection, and can be worn by Ian.

Video demonstration

https://github.com/user-attachments/assets/a77c3a0d-17d2-4e8d-88b6-cdbca8b1f2c3

New sprites demonstration

https://github.com/user-attachments/assets/0e465351-5484-406f-8adc-ffa1ac180daf

Armor demonstration

https://github.com/user-attachments/assets/abdfcac6-65bf-443c-bde2-27d157ee3a80

Map

![436285657-104a555f-60dc-46f0-8283-a92db2ca5352](https://github.com/user-attachments/assets/a1677c9a-7157-4562-9703-5ad44c923e8d)

With the changes in https://github.com/tgstation/tgstation/pull/90771 I
had to mess with ash whelp abilities a bit, I decided to make them use
cold fire instead of hardcoding blue color on top of the fire sprites,
and it now acts accordingly too

https://github.com/user-attachments/assets/cfca0d70-d13d-4c73-996d-2d4a7519866d

The jump was taken from Savannah Ivanov, and Goof's bunny jumping.

This Re-implements a old spear that got removed for its buggyness/bad
mapping and on the authors request as well not wanting to deal with it.

Re-introduces the SkyBulge as a space ruin, referencing Dragoons from
Final Fantasy. this just like any normal spear, but using the savannah
jump mechanic, this allows you to close distances with the spear
avoiding ranged projectiles in the jump, and if you directly land on
your target you will do double the damage.

🆑 Ezel/Improvedname, Toriate, JohnFulpWillard
add: Re-added the Dragoon Tomb lair, now has a Skybulge spear and
Drachen armor.
balance: Ice whelps now spit out cold fire.
/🆑

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2025-06-05 18:50:51 -04:00

147 lines
5.1 KiB
Plaintext

/obj/structure/altar
name = "\improper Altar"
desc = "A religious structure. You could lie on it if you wanted to."
icon = 'icons/obj/service/hand_of_god_structures.dmi'
icon_state = "convertaltar"
density = TRUE
anchored = TRUE
layer = TABLE_LAYER
pass_flags_self = PASSSTRUCTURE | PASSTABLE | LETPASSTHROW
can_buckle = TRUE
buckle_lying = 90 //we turn to you!
/// Do we have lit candles?
var/lit_candles = TRUE
/obj/structure/altar/Initialize(mapload)
. = ..()
AddElement(/datum/element/climbable)
AddElement(/datum/element/elevation, pixel_shift = 12)
update_appearance(UPDATE_OVERLAYS)
/obj/structure/altar/update_overlays()
. = ..()
if (lit_candles)
. += "convertaltarcandle"
/obj/structure/altar/attack_hand(mob/living/user, list/modifiers)
if(!Adjacent(user) || !user.pulling)
return ..()
if(!isliving(user.pulling))
return ..()
var/mob/living/pushed_mob = user.pulling
if(pushed_mob.buckled)
to_chat(user, span_warning("[pushed_mob] is buckled to [pushed_mob.buckled]!"))
return ..()
to_chat(user, span_notice("You try to coax [pushed_mob] onto [src]..."))
if(!do_after(user,(5 SECONDS),target = pushed_mob))
return ..()
pushed_mob.forceMove(loc)
return ..()
/// This one actually has relevance to chaplains
/obj/structure/altar/of_gods
name = "\improper Altar of the Gods"
desc = "An altar which allows the head of the church to choose a sect of religious teachings as well as provide sacrifices to earn favor."
///Avoids having to check global everytime by referencing it locally.
var/datum/religion_sect/sect_to_altar
/obj/structure/altar/of_gods/Initialize(mapload)
. = ..()
AddComponent(/datum/component/religious_tool, ALL, FALSE, CALLBACK(src, PROC_REF(reflect_sect_in_icons)))
reflect_sect_in_icons()
GLOB.chaplain_altars += src
/obj/structure/altar/of_gods/Destroy()
GLOB.chaplain_altars -= src
return ..()
/obj/structure/altar/of_gods/examine_more(mob/user)
if(!isobserver(user))
return ..()
. = list(span_notice("<i>You examine [src] closer, and note the following...</i>"))
if(GLOB.religion)
. += list(span_notice("Deity: [GLOB.deity]."))
. += list(span_notice("Religion: [GLOB.religion]."))
. += list(span_notice("Bible: [GLOB.bible_name]."))
if(GLOB.religious_sect)
. += list(span_notice("Sect: [GLOB.religious_sect]."))
. += list(span_notice("Favor: [GLOB.religious_sect.favor]."))
var/chaplains = get_chaplains()
if(isAdminObserver(user) && chaplains)
. += list(span_notice("Chaplains: [chaplains]."))
/obj/structure/altar/of_gods/proc/reflect_sect_in_icons()
if(isnull(GLOB.religious_sect))
lit_candles = FALSE
icon = initial(icon)
icon_state = initial(icon_state)
else
lit_candles = TRUE
sect_to_altar = GLOB.religious_sect
if(sect_to_altar.altar_icon)
icon = sect_to_altar.altar_icon
if(sect_to_altar.altar_icon_state)
icon_state = sect_to_altar.altar_icon_state
update_appearance(UPDATE_OVERLAYS) //Light the candles!
/obj/structure/altar/of_gods/proc/get_chaplains()
var/chaplain_string = ""
for(var/mob/living/carbon/human/potential_chap in GLOB.player_list)
if(potential_chap.key && is_chaplain_job(potential_chap.mind?.assigned_role))
if(chaplain_string)
chaplain_string += ", "
chaplain_string += "[potential_chap] ([potential_chap.key])"
return chaplain_string
/obj/item/ritual_totem
name = "ritual totem"
desc = "A wooden totem with strange carvings on it."
icon = 'icons/obj/service/hand_of_god_structures.dmi'
icon_state = "ritual_totem"
inhand_icon_state = "sheet-wood"
lefthand_file = 'icons/mob/inhands/items/sheets_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/sheets_righthand.dmi'
//made out of a single sheet of wood
custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT)
item_flags = NO_PIXEL_RANDOM_DROP
/obj/item/ritual_totem/Initialize(mapload)
. = ..()
AddComponent(/datum/component/anti_magic, \
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_HOLY, \
charges = 1, \
expiration = CALLBACK(src, PROC_REF(expire)), \
)
AddComponent(/datum/component/religious_tool, RELIGION_TOOL_INVOKE, FALSE)
/// When the ritual totem is depleted of antimagic
/obj/item/ritual_totem/proc/expire(mob/user)
to_chat(user, span_warning("[src] consumes the magic within itself and quickly decays into rot!"))
new /obj/effect/decal/cleanable/ash(drop_location())
qdel(src)
/obj/item/ritual_totem/can_be_pulled(user, force)
. = ..()
return FALSE //no
/obj/item/ritual_totem/examine(mob/user)
. = ..()
var/is_holy = user.mind?.holy_role
if(is_holy)
. += span_notice("[src] can only be moved by important followers of [GLOB.deity].")
/obj/item/ritual_totem/pickup(mob/taker)
var/initial_loc = loc
var/holiness = taker.mind?.holy_role
var/no_take = FALSE
if(holiness == NONE)
to_chat(taker, span_warning("Try as you may, you're seemingly unable to pick [src] up!"))
no_take = TRUE
else if(holiness == HOLY_ROLE_DEACON) //deacons cannot pick them up either
no_take = TRUE
to_chat(taker, span_warning("You cannot pick [src] up. It seems you aren't important enough to [GLOB.deity] to do that."))
..()
if(no_take)
taker.dropItemToGround(src)
forceMove(initial_loc)