Uueoa-Esa, Part 3: Ruin Assets (#18956)

Adds several new items and structures for use in Unathi ruins. These
include:
Several ancient Unathi clothing items, including two sets of armor.
Pillars and statues for ruin decoration.
Three ancient Unathi melee weapons.
Several flags/banners/tapestries.
Sarcophagi, complete with booby-traps.
An undetonated nuclear bomb, for, uh... don't worry about it.

Bomb sprite by @nauticall, other ruin sprites by Gecko

---------

Signed-off-by: RustingWithYou <63625389+RustingWithYou@users.noreply.github.com>
Co-authored-by: Fluffy <65877598+FluffyGhoster@users.noreply.github.com>
This commit is contained in:
RustingWithYou
2024-04-19 11:06:35 +00:00
committed by GitHub
co-authored by Fluffy
parent 184abfe6b7
commit c59e636746
16 changed files with 652 additions and 0 deletions
@@ -134,3 +134,85 @@
canbemoved = FALSE
open_sound = 'sound/machines/wooden_closet_open.ogg'
close_sound = 'sound/machines/wooden_closet_close.ogg'
/obj/structure/closet/sarcophagus
name = "sandstone sarcophagus"
desc = "An ancient sarcophagus made of sandstone."
icon = 'icons/obj/unathi_ruins.dmi'
icon_state = "wc_sarcophagus"
dense_when_open = TRUE
anchored = TRUE
canbemoved = FALSE
open_sound = 'sound/effects/stonedoor_openclose.ogg'
close_sound = 'sound/effects/stonedoor_openclose.ogg'
///Icon state for the open sarcophagus
var/open_state = "wc_sarcophagus_open"
///Icon state for the closed sarcophagus
var/closed_state = "wc_sarcophagus"
///Does this sarcophagus have a booby trap?
var/trapped = FALSE
///Has this sarcophagus's trap been triggered?
var/triggered = FALSE
/obj/structure/closet/sarcophagus/update_icon()
if(!opened)
layer = OBJ_LAYER
icon_state = closed_state
else
layer = BELOW_OBJ_LAYER
icon_state = open_state
/obj/structure/closet/sarcophagus/animate_door(var/closing = FALSE)
return
/obj/structure/closet/sarcophagus/attack_hand(mob/user)
..()
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(trapped && !triggered)
do_trap_effect(H)
///Sets off the sarcophagus's trap if not already triggered.
/obj/structure/closet/sarcophagus/proc/do_trap_effect(var/mob/living/carbon/human/H)
if(triggered)
return
if(prob(33))
var/turf/T = get_turf(src)
var/obj/item/arrow/arrow = new(T)
playsound(usr.loc, 'sound/weapons/crossbow.ogg', 75, 1)
arrow.throw_at(H, 10, 9, src) //same values as a full draw crossbow shot would have
else if(prob(33))
visible_message(SPAN_DANGER("Flames engulf \the [H]!"))
H.apply_damage(30, DAMAGE_BURN)
H.IgniteMob(5)
else
var/datum/reagents/R = new/datum/reagents(20)
R.my_atom = src
R.add_reagent(/singleton/reagent/toxin,20)
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem(/singleton/reagent/toxin) // have to explicitly say the type to avoid issues with warnings
S.show_log = 0
S.set_up(R, 10, 0, src, 40)
S.start()
qdel(R)
triggered = TRUE
/obj/structure/closet/sarcophagus/random/Initialize() //low chance of being trapped
. = ..()
if(prob(10))
trapped = TRUE
/obj/structure/closet/sarcophagus/mador
name = "granite sarcophagus"
desc = "An ancient sarcophagus made of granite."
icon_state = "mador_sarcophagus"
closed_state = "mador_sarcophagus"
open_state = "mador_sarcophagus_open"
/obj/structure/closet/sarcophagus/mador/random/Initialize()
. = ..()
if(prob(10))
trapped = TRUE
@@ -3274,3 +3274,214 @@
/obj/structure/sign/flag/hiskyn/unmovable
unmovable = TRUE
//Unathi Ruin Flags/Tapestries
/obj/item/flag/unathi_tapestry
name = "folded tapestry"
desc = "An ancient piece of woven cloth, carefully folded."
icon = 'icons/obj/unathi_ruins.dmi'
icon_state = "tapestry_folded"
flag_structure = /obj/structure/sign/flag/unathi_tapestry
/obj/structure/sign/flag/unathi_tapestry
name = "sun tapestry"
desc = "A worn and faded tapestry depicting a bright sun shining down on the surface of Moghes."
icon = 'icons/obj/unathi_ruins.dmi'
icon_state = "sun"
flag_path = "sun"
flag_item = /obj/item/flag/unathi_tapestry
/obj/item/flag/unathi_tapestry/moon
flag_structure = /obj/structure/sign/flag/unathi_tapestry/moon
/obj/structure/sign/flag/unathi_tapestry/moon
name = "moon tapestry"
desc = "A worn and faded tapestry depicting a crescent moon."
icon_state = "moon"
flag_path = "moon"
flag_item = /obj/item/flag/unathi_tapestry/moon
/obj/item/flag/unathi_tapestry/crown
flag_structure = /obj/structure/sign/flag/unathi_tapestry/crown
/obj/structure/sign/flag/unathi_tapestry/crown
name = "crown tapestry"
desc = "A worn and faded tapestry depicting an Unathi figure, with a crown being lowered onto their head."
icon_state = "crown"
flag_path = "crown"
flag_item = /obj/item/flag/unathi_tapestry/crown
/obj/item/flag/unathi_tapestry/warrior
flag_structure = /obj/structure/sign/flag/unathi_tapestry/warrior
/obj/structure/sign/flag/unathi_tapestry/warrior
name = "warrior tapestry"
desc = "A worn and faded tapestry depicting an Unathi figure in full battle armor."
icon_state = "warrior"
flag_path = "warrior"
flag_item = /obj/item/flag/unathi_tapestry/warrior
/obj/item/flag/unathi_tapestry/brothers
flag_size = TRUE
flag_structure = /obj/structure/sign/flag/unathi_tapestry/brothers
/obj/structure/sign/flag/unathi_tapestry/brothers
name = "brothers tapestry"
desc = "A large and faded tapestry depicting two Unathi wielding war scythes, standing back to back."
icon_state = "brothers_l"
flag_path = "brothers"
flag_size = TRUE
flag_item = /obj/item/flag/unathi_tapestry/brothers
/obj/structure/sign/flag/unathi_tapestry/brothers/north/Initialize(mapload)
. = ..(mapload, NORTH)
/obj/structure/sign/flag/unathi_tapestry/brothers/south/Initialize(mapload)
. = ..(mapload, SOUTH)
/obj/structure/sign/flag/unathi_tapestry/brothers/east/Initialize(mapload)
. = ..(mapload, EAST)
/obj/structure/sign/flag/unathi_tapestry/brothers/west/Initialize(mapload)
. = ..(mapload, WEST)
/obj/item/flag/unathi_tapestry/city
flag_size = TRUE
flag_structure = /obj/structure/sign/flag/unathi_tapestry/city
/obj/structure/sign/flag/unathi_tapestry/city
name = "city tapestry"
desc = "A large and faded tapestry depicting an ancient city, towering resplendent over the land."
icon_state = "city_l"
flag_path = "city"
flag_size = TRUE
flag_item = /obj/item/flag/unathi_tapestry/city
/obj/structure/sign/flag/unathi_tapestry/city/north/Initialize(mapload)
. = ..(mapload, NORTH)
/obj/structure/sign/flag/unathi_tapestry/city/south/Initialize(mapload)
. = ..(mapload, SOUTH)
/obj/structure/sign/flag/unathi_tapestry/city/east/Initialize(mapload)
. = ..(mapload, EAST)
/obj/structure/sign/flag/unathi_tapestry/city/west/Initialize(mapload)
. = ..(mapload, WEST)
/obj/item/flag/unathi_tapestry/wall
flag_size = TRUE
flag_structure = /obj/structure/sign/flag/unathi_tapestry/wall
/obj/structure/sign/flag/unathi_tapestry/wall
name = "wall tapestry"
desc = "A large and faded tapestry depicting a mighty wall, staffed by hundreds of warriors. Storm clouds gather above it."
icon_state = "wall_l"
flag_path = "wall"
flag_size = TRUE
flag_item = /obj/item/flag/unathi_tapestry/wall
/obj/structure/sign/flag/unathi_tapestry/wall/north/Initialize(mapload)
. = ..(mapload, NORTH)
/obj/structure/sign/flag/unathi_tapestry/wall/south/Initialize(mapload)
. = ..(mapload, SOUTH)
/obj/structure/sign/flag/unathi_tapestry/wall/east/Initialize(mapload)
. = ..(mapload, EAST)
/obj/structure/sign/flag/unathi_tapestry/wall/west/Initialize(mapload)
. = ..(mapload, WEST)
/obj/item/flag/unathi_tapestry/unathi
flag_size = TRUE
flag_structure = /obj/structure/sign/flag/unathi_tapestry/unathi
/obj/structure/sign/flag/unathi_tapestry/unathi
name = "unathi tapestry"
desc = "A large and faded tapestry depicting a single Unathi figure - regal, resplendent, and utterly alone.."
icon_state = "unathi_l"
flag_path = "unathi"
flag_size = TRUE
flag_item = /obj/item/flag/unathi_tapestry/unathi
/obj/structure/sign/flag/unathi_tapestry/unathi/north/Initialize(mapload)
. = ..(mapload, NORTH)
/obj/structure/sign/flag/unathi_tapestry/unathi/south/Initialize(mapload)
. = ..(mapload, SOUTH)
/obj/structure/sign/flag/unathi_tapestry/unathi/east/Initialize(mapload)
. = ..(mapload, EAST)
/obj/structure/sign/flag/unathi_tapestry/unathi/west/Initialize(mapload)
. = ..(mapload, WEST)
/obj/item/flag/unathi_tapestry/mador
icon_state = "mador_tapestry_folded"
flag_structure = /obj/structure/sign/flag/unathi_tapestry/mador_1
/obj/structure/sign/flag/unathi_tapestry/mador_1
name = "\improper Sinta'Mador tapestry"
desc = "A worn and faded tapestry bearing script in the lost language of the Sinta'Mador."
icon_state = "mador3"
flag_path = "mador3"
flag_item = /obj/item/flag/unathi_tapestry/mador
/obj/item/flag/unathi_tapestry/mador/mador_2
flag_structure = /obj/structure/sign/flag/unathi_tapestry/mador_2
/obj/structure/sign/flag/unathi_tapestry/mador_2
name = "\improper Sinta'Mador tapestry"
desc = "A worn and faded tapestry bearing script in the lost language of the Sinta'Mador."
icon_state = "mador4"
flag_path = "mador4"
flag_item = /obj/item/flag/unathi_tapestry/mador/mador_2
/obj/item/flag/unathi_tapestry/mador_3
flag_structure = /obj/structure/sign/flag/unathi_tapestry/mador_3
flag_size = TRUE
/obj/structure/sign/flag/unathi_tapestry/mador_3
name = "large Sinta'Mador tapestry"
desc = "A large tapestry bearing script in the lost language of the Sinta'Mador"
icon_state = "mador1_l"
flag_path = "mador1"
flag_size = TRUE
flag_item = /obj/item/flag/unathi_tapestry/mador_3
/obj/structure/sign/flag/unathi_tapestry/mador_3/north/Initialize(mapload)
. = ..(mapload, NORTH)
/obj/structure/sign/flag/unathi_tapestry/mador_3/south/Initialize(mapload)
. = ..(mapload, SOUTH)
/obj/structure/sign/flag/unathi_tapestry/mador_3/east/Initialize(mapload)
. = ..(mapload, EAST)
/obj/structure/sign/flag/unathi_tapestry/mador_3/west/Initialize(mapload)
. = ..(mapload, WEST)
/obj/item/flag/unathi_tapestry/mador_4
flag_structure = /obj/structure/sign/flag/unathi_tapestry/mador_4
flag_size = TRUE
/obj/structure/sign/flag/unathi_tapestry/mador_4
name = "large Sinta'Mador tapestry"
desc = "A large tapestry bearing script in the lost language of the Sinta'Mador"
icon_state = "mador2_l"
flag_path = "mador2"
flag_size = TRUE
flag_item = /obj/item/flag/unathi_tapestry/mador_4
/obj/structure/sign/flag/unathi_tapestry/mador_4/north/Initialize(mapload)
. = ..(mapload, NORTH)
/obj/structure/sign/flag/unathi_tapestry/mador_4/south/Initialize(mapload)
. = ..(mapload, SOUTH)
/obj/structure/sign/flag/unathi_tapestry/mador_4/east/Initialize(mapload)
. = ..(mapload, EAST)
/obj/structure/sign/flag/unathi_tapestry/mador_4/west/Initialize(mapload)
. = ..(mapload, WEST)
+57
View File
@@ -6,3 +6,60 @@
density = TRUE
anchored = TRUE
layer = ABOVE_HUMAN_LAYER
//Unathi statues
/obj/structure/unathi_pillar
name = "pillar"
desc = "An ancient and weathered sandstone pillar. It is covered in what looks like Sinta'Azaziba writing."
icon = 'icons/obj/unathi_ruins.dmi'
icon_state = "pillar"
anchored = TRUE
density = TRUE
can_be_unanchored = FALSE
/obj/structure/unathi_pillar/mador
desc = "An ancient and weathered granite pillar. It is inscribed with symbols of an unknown language."
icon_state = "mador_pillar"
/obj/structure/unathi_statue
name = "ancient statue"
desc = "An ancient and crumbling sandstone statue of an Unathi."
icon = 'icons/obj/unathi_ruins.dmi'
icon_state = "statue"
anchored = TRUE
density = TRUE
/obj/structure/unathi_statue/warrior
name = "warrior statue"
desc = "An ancient and crumbling sandstone statue of an Unathi. This one is armored, and wields a war scythe."
icon_state = "warriorstatue_left"
/obj/structure/unathi_statue/warrior/right
icon_state = "warriorstatue_right"
/obj/structure/unathi_statue/crown
name = "crowned statue"
desc = "An ancient and crumbling sandstone statue of an Unathi. This one is robed, and wears a crown upon its head."
icon_state = "crownstatue"
/obj/structure/unathi_statue/robe
name = "robed statue"
desc = "An ancient and crumbling sandstone statue of an Unathi. This one is clad in a humble robe and hood, and bears no weapons."
icon_state = "robestatue"
/obj/structure/unathi_statue/mador
desc = "An ancient and crumbling granite statue of an Unathi, worn away by time."
icon_state = "mador_statue"
/obj/structure/unathi_statue/mador/armored
name = "armored statue"
desc = "An ancient and crumbling granite statue of an Unathi clad in strange and bulky armor."
icon_state = "mador_statue_armored"
/obj/structure/unathi_statue/mador/warrior
name = "warrior statue"
desc = "An ancient and crumbling granite statue of an Unathi. This one is armored, and wields a trident."
icon_state = "mador_statue_warrior_left"
/obj/structure/unathi_statue/mador/warrior/right
icon_state = "mador_statue_warrior_right"
@@ -0,0 +1,62 @@
/obj/structure/undetonated_nuke
name = "undetonated nuclear bomb"
desc = "This rusted bomb looks like it's been here for decades. Flaking paint on the side depicts the battle standard of the Traditionalist Coalition. Something is written in Sinta'Azaziba on the side."
icon = 'icons/obj/unathi_ruins.dmi'
icon_state = "bomb"
density = TRUE
anchored = FALSE
///Whether this nuke will explode if caught in an explosion.
var/can_explode = TRUE
/obj/structure/undetonated_nuke/get_examine_text(mob/user, distance)
. = ..()
if(GLOB.all_languages[LANGUAGE_AZAZIBA] in user.languages)
. += SPAN_NOTICE("The inscription reads \"WARNING: FISSILE MATERIAL. HANDLE WITH CARE.\" Underneath are a few words, scratched into the metal. They read \"IF FOUND, RETURN TO SKALAMAR AT HIGH VELOCITY\"")
/obj/structure/undetonated_nuke/ex_act(severity)
if(!can_explode)
return
switch(severity)
if(1.0)
explode()
return
if(2.0)
if(prob(50))
explode()
return
if(3.0)
return
///Sets off a large conventional explosion from the trigger and spreads radioactive material. Does not set off a nuclear explosion.
/obj/structure/undetonated_nuke/proc/explode()
var/turf/T = get_turf(src)
can_explode = FALSE
visible_message(SPAN_DANGER("\The [src] explodes!"))
explosion(T, 6, 8, 10)
SSradiation.radiate(src, 250)
new /obj/effect/decal/cleanable/greenglow(T)
/obj/structure/undetonated_nuke/buried
name = "buried nuclear bomb"
desc = "This rusted metal shell is half-buried in the sand, and seems to have been that way for decades. Flaking paint on the side depicts the battle standard of the Traditionalist Coalition. Something is written in Sinta'Azaziba on the side."
anchored = TRUE
icon_state = "bomb_buried"
/obj/structure/undetonated_nuke/buried/Initialize(mapload)
. = ..()
if(prob(50))
can_explode = FALSE
/obj/structure/undetonated_nuke/buried/attackby(obj/item/attacking_item, mob/user, params)
. = ..()
var/turf/current_turf = get_turf(src)
if(istype(current_turf, /turf/simulated/floor/exoplanet))
var/turf/simulated/floor/exoplanet/T = current_turf
if(attacking_item.is_shovel() && T.diggable)
visible_message(SPAN_NOTICE("\The [user] begins to excavate \the [src]."))
if(attacking_item.use_tool(src, user, 100, volume = 50))
visible_message(SPAN_NOTICE("\The [user] finishes digging \the [src] from \the [T]!"))
new /obj/structure/pit(T)
var/obj/structure/undetonated_nuke/N = new(T)
N.can_explode = can_explode
qdel(src)