Skip to content

Commit

Permalink
Adds a New Ruin - Abandoned Clockwork Monastery (ParadiseSS13#27636)
Browse files Browse the repository at this point in the history
* Construction

* tick

* tock

* ting

* Update clockwork_cult_site.dmm

* Update clockwork_cult_site.dmm

* clockwork construct

* Update paradise.dme

* Update clockwork_constructs

* continuation

* Update clockwork_cult_site.dmm

* finalization phase

* Update clockwork_constructs.dm

* update

* Update config.toml

* Send the dmm to prison for being illegal

* Update space_ruins.dm

* Update space_ruins.dm

* Update space_ruins.dm

* Update code/modules/mob/living/simple_animal/clockwork_constructs.dm

Co-authored-by: warriorstar-orion <[email protected]>
Signed-off-by: CRUNCH <[email protected]>

* Update code/modules/mob/living/simple_animal/clockwork_constructs.dm

Co-authored-by: warriorstar-orion <[email protected]>
Signed-off-by: CRUNCH <[email protected]>

* update based on code review

* Update config.toml

* Coggers

* New shiny lava

* Update clockwork_monastery.dmm

* Update lights.dm

* Update clockwork_monastery.dmm

* Update clockwork_monastery.dmm

* Update clockwork_monastery.dmm

---------

Signed-off-by: CRUNCH <[email protected]>
Co-authored-by: warriorstar-orion <[email protected]>
  • Loading branch information
Fordoxia and warriorstar-orion authored Jan 6, 2025
1 parent 1277a01 commit a387c18
Show file tree
Hide file tree
Showing 28 changed files with 3,916 additions and 7 deletions.
3,680 changes: 3,680 additions & 0 deletions _maps/map_files/RandomRuins/SpaceRuins/clockwork_monastery.dmm

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions code/datums/ruins/space_ruins.dm
Original file line number Diff line number Diff line change
Expand Up @@ -358,3 +358,11 @@
name = "Damaged Drakehound Skiff"
description = "A small Drakehound craft, damaged from an engine malfunction."
allow_duplicates = FALSE

/datum/map_template/ruin/space/clockwork_monastery
id = "clockwork_monastery"
suffix = "clockwork_monastery.dmm"
name = "Abandoned Clockwork Monastery"
description = "A hidden monastery once used by the followers of Ratvar's clockwork cult. The original inhabitants have departed for City of Cogs, Reebe. \
The constructs that were left behind to guard the monastery will ruthlessly cut down anyone that does not swear their fealty to Ratvar."
allow_duplicates = FALSE
6 changes: 6 additions & 0 deletions code/game/area/areas/ruins/space_areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -271,3 +271,9 @@

/area/ruin/space/clown_mime_ruin
name = "\improper Derelict Transport Vessel"

/area/ruin/space/clockwork_monastery
name = "\improper Abandoned Clockwork Monastery"
there_can_be_many = FALSE
requires_power = FALSE
ambientsounds = list("sound/ambience/reebe_ambience_1.ogg", "sound/ambience/reebe_ambience_2.ogg", "sound/ambience/reebe_ambience_3.ogg")
5 changes: 5 additions & 0 deletions code/game/machinery/computer/Operating.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,4 +229,9 @@
atom_say("Patient is now [patientStatus]")
patientStatusHolder = table.patient.stat

/obj/machinery/computer/operating/clockwork
name = "brass operating computer"
desc = "Staring at this causes your head to fill with static."
icon_state = "computer_clockwork"

#undef OP_COMPUTER_COOLDOWN
1 change: 1 addition & 0 deletions code/game/objects/items/tools/crowbar.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
desc = "A brass crowbar. It feels faintly warm to the touch."
icon_state = "crowbar_brass"
item_state = "crowbar_brass"
belt_icon = "crowbar_brass"
toolspeed = 0.5
resistance_flags = FIRE_PROOF | ACID_PROOF

Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/tools/screwdriver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
name = "brass screwdriver"
desc = "A screwdriver made of brass. The handle feels freezing cold."
icon_state = "screwdriver_brass"
belt_icon = "screwdriver_brass"
toolspeed = 0.5
random_color = FALSE
resistance_flags = FIRE_PROOF | ACID_PROOF
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/tools/welder.dm
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@
desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch."
icon_state = "brasswelder"
item_state = "brasswelder"
belt_icon = "welder_brass"
resistance_flags = FIRE_PROOF | ACID_PROOF

#undef GET_FUEL
1 change: 1 addition & 0 deletions code/game/objects/items/tools/wirecutters.dm
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
name = "brass wirecutters"
desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch."
icon_state = "cutters_brass"
belt_icon = "wirecutters_brass"
toolspeed = 0.5
random_color = FALSE
resistance_flags = FIRE_PROOF | ACID_PROOF
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/tools/wrench.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
name = "brass wrench"
desc = "A brass wrench. It's faintly warm to the touch."
icon_state = "wrench_brass"
belt_icon = "wrench_brass"
toolspeed = 0.5
resistance_flags = FIRE_PROOF | ACID_PROOF

Expand Down
9 changes: 9 additions & 0 deletions code/game/objects/structures/bedsheet_bin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,15 @@ LINEN BINS
dream_messages = list("a tome", "a floating red crystal", "a glowing sword", "a bloody symbol", "a massive humanoid figure")
nightmare_messages = list("a tome", "a floating red crystal", "a glowing sword", "a bloody symbol", "a massive humanoid figure")

/obj/item/bedsheet/clockwork
name = "Ratvarian bedsheet"
desc = "You might dream of Ratvar if you sleep with this. The fabric has threads of brass sewn into it which eminate a pleasent warmth."
icon_state = "sheetclockwork"
item_state = "bedsheetclockwork"
item_color = "brass"
dream_messages = list("tick, tock, tick, tock, tick, tock, tick, tock", "a great shining city of brass", "men in radiant suits of brass", "a perfect blueprint of the world", "a glowing cogwheel", "a massive humanoid figure")
nightmare_messages = list("<span_class = userdanger>\"the Nar'Sian dogs shall be CRUSHED!\"</span>", "the unenlightened, ready to hear His word", "a half-buried brass titan", "two massive humanoid figures attacking each other")

/obj/item/bedsheet/wiz
name = "wizard's bedsheet"
desc = "A special fabric enchanted with magic so you can have an enchanted night. It even glows!"
Expand Down
13 changes: 8 additions & 5 deletions code/game/turfs/simulated/floor/lava.dm
Original file line number Diff line number Diff line change
Expand Up @@ -270,13 +270,19 @@
atmos_mode = ATMOS_MODE_SEALED
atmos_environment = null

// special turf for the asteroid core on EmeraldStation
/turf/simulated/floor/lava/plasma/fuming
/turf/simulated/floor/lava/plasma
name = "liquid plasma"
desc = "A swirling pit of liquid plasma. It bubbles ominously."
icon = 'icons/turf/floors/liquidplasma.dmi'
icon_state = "liquidplasma-255"
base_icon_state = "liquidplasma"
baseturf = /turf/simulated/floor/lava/plasma
light_range = 3
light_power = 0.75
light_color = LIGHT_COLOR_PINK

// special turf for the asteroid core on EmeraldStation
/turf/simulated/floor/lava/plasma/fuming
baseturf = /turf/simulated/floor/lava/plasma/fuming
atmos_mode = ATMOS_MODE_NO_DECAY

Expand All @@ -286,9 +292,6 @@
nitrogen = 0
carbon_dioxide = 1.2
toxins = 10
light_range = 3
light_power = 0.75
light_color = LIGHT_COLOR_PINK

/turf/simulated/floor/lava/mapping_lava/Initialize(mapload)
. = ..()
Expand Down
123 changes: 123 additions & 0 deletions code/modules/mob/living/simple_animal/clockwork_constructs.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
#define MARAUDER_SHIELD_MAX 4

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder
name = "clockwork marauder"
desc = "A brass machine of destruction,"
icon = 'icons/mob/clockwork_mobs.dmi'
icon_state = "clockwork_marauder"
icon_living = "clockwork_marauder"
icon_dead = "clockwork_marauder_dead"
a_intent = INTENT_HARM
stop_automated_movement = TRUE
see_in_dark = 8
health = 140
maxHealth = 140
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
initial_traits = list(TRAIT_FLYING)
move_resist = MOVE_FORCE_OVERPOWERING
mob_size = MOB_SIZE_LARGE
pass_flags = PASSTABLE
damage_coeff = list("brute" = 1, "fire" = 1, "tox" = 0, "clone" = 0, "stamina" = 0, "oxy" = 0)
obj_damage = 80
melee_damage_lower = 24
melee_damage_upper = 24
attacktext = "slices"
attack_sound = 'sound/weapons/bladeslice.ogg'
chat_color = "#CAA25B"
retreat_distance = 2 // Dodge in and out of combat.
faction = list("hostile") // We hate Nar'sie here, but no clockcult yet.
pressure_resistance = 100
universal_speak = TRUE
AIStatus = AI_OFF
loot = list(/obj/item/food/ectoplasm, /obj/item/clockwork/component/geis_capacitor/fallen_armor)
del_on_death = TRUE
deathmessage = "collapses in a shattered heap."
var/playstyle_string = "<b>You are a Marauder, an instrument of destruction built to fight those that oppose the will of Ratvar. \
You are a highly effective melee combatent but are vulnerable to holy weapons. \
You can block up to 4 ranged attacks with your shield. It requires a welder to be repaired.</b>"
var/list/construct_spells = list(/datum/spell/night_vision)
var/shield_health = MARAUDER_SHIELD_MAX

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/Initialize(mapload)
. = ..()
name = "[name] ([rand(1, 1000)])"
set_light(2, 3, l_color = LIGHT_COLOR_FIRE)
for(var/spell in construct_spells)
AddSpell(new spell(null))

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/death(gibbed)
new /obj/effect/temp_visual/cult/sparks(get_turf(src))
playsound(src, 'sound/effects/pylon_shatter.ogg', 40, TRUE)
return ..()

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/attacked_by__legacy__attackchain(obj/item/I, mob/living/user)
if(istype(I, /obj/item/nullrod))
adjustFireLoss(15)
if(shield_health > 0)
damage_shield()
playsound(src,'sound/hallucinations/veryfar_noise.ogg', 40, 1)

if((I.tool_behaviour == TOOL_WELDER) && (user.a_intent == INTENT_HELP))
welder_act(user, I)
return
. = ..()

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/bullet_act(obj/item/projectile/Proj)
if(shield_health > 0)
damage_shield()
to_chat(src, "<span class='danger'>Your shield blocks the attack!</span>")
return FALSE
return ..()

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/proc/damage_shield()
shield_health--
playsound(src, 'sound/magic/clockwork/anima_fragment_attack.ogg', 60, TRUE)
if(shield_health == 0)
to_chat(src, "<span class='userdanger'>Your shield breaks!</span>")
to_chat(src, "<span class='danger'>You require a welding tool to repair your damaged shield!</span>")

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/welder_act(mob/living/user, obj/item/I)
if(health >= maxHealth && shield_health >= MARAUDER_SHIELD_MAX)
to_chat(user, "<span class='notice'>[src] has no damage to repair.</span>")
return

playsound(loc, 'sound/items/welder.ogg', 150, TRUE)
adjustBruteLoss(-10)
user.visible_message(
"<span class='notice'>You repair some of [src]'s damage.</span>",
"<span class='notice'>[user] repairs some of [src]'s damage.</span>"
)
if(shield_health < MARAUDER_SHIELD_MAX)
shield_health ++
playsound(src, 'sound/magic/charge.ogg', 60, TRUE)
return TRUE

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/narsie_act()
visible_message(
"<span class='danger'>[src] is instantly crushed by an unholy aura!</span>",
"<span class='userdanger'>The uncaring gaze of a dark god looks down upon you for a single moment, and your shell is instantly pulverized into dust!</span>"
)
gib()

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE)
return FALSE

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/Life(seconds, times_fired)
if(holy_check(src))
throw_alert("holy_fire", /atom/movable/screen/alert/holy_fire, override = TRUE)
visible_message(
"<span class='danger'>[src] slowly crumbles to dust in this holy place!</span>", \
"<span class='danger'>Your shell burns as you crumble to dust in this holy place!</span>"
)
playsound(loc, 'sound/items/welder.ogg', 150, TRUE)
adjustBruteLoss(maxHealth/8)
else
clear_alert("holy_fire", clear_override = TRUE)
return ..()

/mob/living/simple_animal/hostile/clockwork_construct/clockwork_marauder/hostile
AIStatus = AI_ON
environment_smash = ENVIRONMENT_SMASH_STRUCTURES

#undef MARAUDER_SHIELD_MAX
7 changes: 7 additions & 0 deletions code/modules/paperwork/paper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -865,6 +865,13 @@
name = "Lava Field Observations"
info = "<center>Asteroid Core Observation Log 306</center><hr><br><i>We took some additional samples of the deep layers of the molten core of the asteroid. Undetermined trace elements were able to be identified in the solution. Its possible this is how the plasma remains so stable at these temperatures. None of our current filter methods have been able to properly extract it as of yet, but we're certain a breakthrough is on the horizon. We did it before, we can do it again.</i>"

/obj/item/paper/clockwork_cult_message
name = "Old handwritten note"
info = "<center>To any brothers and sisters that journey here from beyond the system:</center><br><br>\
The Nar'Sien dogs have failed, and we have gleaned the method by which we can awake His divine mechanism. The spark shall be turned into lightning and the gears shall once again turn.<br><br>\
We go now to purge the dogs from the hole we know they hide within, and then The Eminance shall then call us back to Reebe so that we may begin preperations for His awakening.<br><br>\
The guardians shall protect the monastery in our stead. Make use of its supplies and prepare for our return, together we shall all finalize His vison."

/obj/item/paper/zombie_cure
name = "paper - 'Research on Zombies'"

Expand Down
1 change: 1 addition & 0 deletions code/modules/power/lights.dm
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@
glow_icon_state = "clockwork_tube"
base_state = "clockwork_tube"
deconstruct_type = /obj/machinery/light_construct/clockwork
brightness_color = "#ffbb8d"

/obj/machinery/light/clockwork/small
icon_state = "clockwork_bulb1"
Expand Down
64 changes: 62 additions & 2 deletions code/modules/ruins/lavalandruin_code/dead_ratvar.dm
Original file line number Diff line number Diff line change
Expand Up @@ -210,12 +210,15 @@

//Components: Used in scripture.
/obj/item/clockwork/component
name = "arbitrary clockwork component"
desc = "A strange artifact and powerful of Ratvar that should not exist. Make an issue report to GitHub if you see this."
icon = 'icons/obj/clockwork_objects.dmi'
icon_state = "dread_ipad" // So it's visible.
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF

/obj/item/clockwork/component/belligerent_eye
name = "belligerent eye"
desc = "A brass construct with a rotating red center. It's as though it's looking for something to hurt."
icon = 'icons/obj/clockwork_objects.dmi'
icon_state = "belligerent_eye"

/obj/item/clockwork/component/belligerent_eye/blind_eye
Expand All @@ -224,13 +227,70 @@
icon_state = "blind_eye"
w_class = WEIGHT_CLASS_NORMAL

/obj/item/clockwork/component/belligerent_eye/lens_gem
name = "lens gem"
desc = "A tiny pinkish gem. It catches the light oddly, almost glowing."
icon_state = "lens_gem"
w_class = WEIGHT_CLASS_TINY
light_range = 1.4
light_power = 0.4
light_color = "#F42B9D"

/obj/item/clockwork/component/vanguard_cogwheel
name = "vanguard_cogwheel"
desc = "A sturdy brass cog with a faintly glowing blue gem in its center."
icon_state = "vanguard_cogwheel"

/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism
name = "onyx prism"
desc = "An onyx prism with a small aperture. It's very heavy."
icon_state = "onyx_prism"
w_class = WEIGHT_CLASS_NORMAL

/obj/item/clockwork/component/geis_capacitor
name = "geis capacitor"
desc = "A curiously cold brass doodad. It seems as though it really doesn't appreciate being held."
icon_state = "geis_capacitor"

/obj/item/clockwork/component/geis_capacitor/fallen_armor
name = "fallen armor"
desc = "Lifeless chunks of armor. They're designed in a strange way and won't fit on you."
icon = 'icons/obj/clockwork_objects.dmi'
icon_state = "fallen_armor"
w_class = WEIGHT_CLASS_NORMAL

/obj/item/clockwork/component/geis_capacitor/antennae
name = "mania motor antennae"
desc = "A pair of dented and bent antennae. They constantly emit a static hiss."
icon_state = "mania_motor_antennae"

/obj/item/clockwork/component/replicant_alloy
name = "replicant alloy"
desc = "A seemingly strong but very malleable chunk of metal. It seems as though it wants to be molded into something greater."
icon_state = "replicant_alloy"

/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment
name = "smashed anima fragment"
desc = "Shattered chunks of metal. Damaged beyond repair and completely unusable."
icon_state = "smashed_anime_fragment"
w_class = WEIGHT_CLASS_NORMAL

/obj/item/clockwork/component/replicant_alloy/replication_plate
name = "replication plate"
desc = "A flat, heavy disc of metal with a triangular formation on its surface."
icon_state = "replication_plate"
w_class = WEIGHT_CLASS_NORMAL

/obj/item/clockwork/component/hierophant_ansible
name = "hierophant ansible"
desc = "Some sort of transmitter? It seems as though it's trying to say something."
icon_state = "hierophant_ansible"

/obj/item/clockwork/component/hierophant_ansible/obelisk
name = "obelisk prism"
desc = "A prism that occasionally glows brightly. It seems not-quite there."
icon_state = "obelisk_prism"
w_class = WEIGHT_CLASS_NORMAL

//Ratvarian spear
/obj/item/clockwork/weapon/ratvarian_spear
name = "ratvarian spear"
Expand Down
1 change: 1 addition & 0 deletions config/example/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,7 @@ active_space_ruins = [
"_maps/map_files/RandomRuins/SpaceRuins/abandoned_sec_shuttle.dmm",
"_maps/map_files/RandomRuins/SpaceRuins/freighter.dmm",
"_maps/map_files/RandomRuins/SpaceRuins/unathi_skiff.dmm",
"_maps/map_files/RandomRuins/SpaceRuins/clockwork_monastery.dmm",

### The following ruins are based from past pre-spawned Zlevel content ###
"_maps/map_files/RandomRuins/SpaceRuins/abandonedtele.dmm",
Expand Down
Binary file added icons/mob/clockwork_mobs.dmi
Binary file not shown.
Binary file modified icons/mob/clothing/neck.dmi
Binary file not shown.
Binary file modified icons/mob/inhands/bedsheet_lefthand.dmi
Binary file not shown.
Binary file modified icons/mob/inhands/bedsheet_righthand.dmi
Binary file not shown.
Binary file modified icons/obj/bedsheet.dmi
Binary file not shown.
Binary file modified icons/obj/clothing/belts.dmi
Binary file not shown.
Binary file modified icons/obj/computer.dmi
Binary file not shown.
1 change: 1 addition & 0 deletions paradise.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2384,6 +2384,7 @@
#include "code\modules\mob\living\silicon\robot\drone\drone_update_status.dm"
#include "code\modules\mob\living\silicon\robot\drone\maint_drone.dm"
#include "code\modules\mob\living\simple_animal\animal_defense.dm"
#include "code\modules\mob\living\simple_animal\clockwork_constructs.dm"
#include "code\modules\mob\living\simple_animal\constructs.dm"
#include "code\modules\mob\living\simple_animal\corpse.dm"
#include "code\modules\mob\living\simple_animal\hide_action.dm"
Expand Down
Binary file added sound/ambience/reebe_ambience_1.ogg
Binary file not shown.
Binary file added sound/ambience/reebe_ambience_2.ogg
Binary file not shown.
Binary file added sound/ambience/reebe_ambience_3.ogg
Binary file not shown.
Binary file not shown.

0 comments on commit a387c18

Please sign in to comment.