(Ready) Clockwork Cult Rework: Proof-of-concept (#29741)

* Starting on the rework

* Reworks the Ark

* Work on Reebe

* More Ark stuff

* this too

* Removes ark silliness, remaps Reebe a tad

* Spawning mechanics

* Work on gamemode code

* Finishes up ark stuff

* Removes Judgement, and lots of other changes

* New Ark activation sounds, Ratvar text

* Spawn protection!

* Adds the abscondence bijou

* Bijou stuff

* well, this is it

* somewhat absentminded coder

* Remaps the Reebe z

* replica fabricators now work!

* Guide paper!

* Now they're clockwork floors

* Infirmary, tweaks, numbers

* A new thing!

* this is ok for now

* I was gonna whine but it's actually necessary

* Adds damage scaling to ocular wardens

* I missed a thing

* you can go back too

* New clockwork armor sprites

* Weapons, scripture, oh my!

* no! shoo!

* hey, I forgot about you!

* this looks much better, I'll give you that

* no teleporting into the void!

* we have no need of you anymore

* Conflicteroos

* AUTOMATIC SPINNING CHAIRS

* how many times do we have to teach you this LESSON OLD MAN

* flagged!

* last time, meesa promise

* Conflicts 1

* wood filling

* Kindle is a projectile, and other stuff

* Chameleon jumpsuit, some small changes

* 150 hours of testing

* Curious is the trapmaker's art

* Conflicts 1

* naaah

* Fixes an ark sound

* Removes the prolonging prism

* Adds a delay to warping in

* First steps towards changing the power system

* Removes power from sigils, moves to global

* Conflicts 1

* zoom zoom

* Adds the stargazer, re-adds conversion

* conflicts? more like CLOCK-flicts

* get it? clockflicts?

* Daemon tuning

* Scraps components, 1/?

* A grace period, among other things

* You can't get to reebe from space no stop bad

* Adds some cogscarab shells to Reebe - yes, I get the sounds

* FUCK

* Chairs are very important.

* Clock golems, sound improvement, intercoms

* Sounds, floor fixes, conflicts

* Fixes the conflicts

* Prevents intercom use during non-clock rounds

* Wiki, HUD timer, tweaks, golems

* Components, removes unused structures, rep. fab power

* go-time

* Ending the round is not a good idea

* whoops, forgot about you

* ssh is ok

* this works too
This commit is contained in:
Ashe Higgs
2017-09-26 16:21:26 -04:00
committed by oranges
parent 2fce446104
commit b7e7779c19
107 changed files with 2858 additions and 2763 deletions
+7
View File
@@ -211,6 +211,13 @@
var/datum/action/item_action/chameleon/change/chameleon_action
/obj/item/clothing/under/chameleon/ratvar
name = "ratvarian engineer's jumpsuit"
desc = "A tough jumpsuit woven from alloy threads. It can take on the appearance of other jumpsuits."
icon_state = "engine"
item_state = "engi_suit"
item_color = "engine"
/obj/item/clothing/under/chameleon/New()
..()
chameleon_action = new(src)
@@ -586,6 +586,57 @@
H.adjustFireLoss(-4)
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
/datum/species/golem/clockwork
name = "Clockwork Golem"
id = "clockwork golem"
say_mod = "clicks"
limbs_id = "clockgolem"
info_text = "<span class='bold alloy'>As a </span><span class='bold brass'>clockwork golem</span><span class='bold alloy'>, you are faster than \
other types of golem (being a machine), and are immune to electric shocks.</span>"
species_traits = list(NO_UNDERWEAR, NOTRANSSTING, NOBREATH, NOZOMBIE, VIRUSIMMUNE, RADIMMUNE, NOBLOOD, RESISTCOLD, RESISTPRESSURE)
armor = 40 //Reinforced, but also slim to allow for fast movement
attack_verb = "smash"
attack_sound = 'sound/magic/clockwork/anima_fragment_attack.ogg'
sexes = FALSE
speedmod = 0
siemens_coeff = 0
damage_overlay_type = "synth"
prefix = "Clockwork"
var/has_corpse
/datum/species/golem/clockwork/on_species_gain(mob/living/carbon/human/H)
. = ..()
H.faction |= "ratvar"
/datum/species/golem/clockwork/on_species_loss(mob/living/carbon/human/H)
if(!is_servant_of_ratvar(H))
H.faction -= "ratvar"
. = ..()
/datum/species/golem/clockwork/get_spans()
return SPAN_ROBOT //beep
/datum/species/golem/clockwork/spec_death(gibbed, mob/living/carbon/human/H)
gibbed = !has_corpse ? FALSE : gibbed
. = ..()
if(!has_corpse)
var/turf/T = get_turf(H)
H.visible_message("<span class='warning'>[H]'s exoskeleton shatters, collapsing into a heap of scrap!</span>")
playsound(H, 'sound/magic/clockwork/anima_fragment_death.ogg', 50, TRUE)
for(var/i in 1 to rand(3, 5))
new/obj/item/clockwork/alloy_shards/small(T)
new/obj/item/clockwork/alloy_shards/clockgolem_remains(T)
qdel(H)
/datum/species/golem/clockwork/no_scrap //These golems are created through the herald's beacon and leave normal corpses on death.
id = "clockwork golem servant"
armor = 15 //Balance reasons make this armor weak
has_corpse = TRUE
blacklisted = TRUE
dangerous_existence = TRUE
/datum/species/golem/cloth
name = "Cloth Golem"
id = "cloth golem"
@@ -251,7 +251,7 @@
emag_modules = list(/obj/item/melee/transforming/energy/sword/cyborg)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg,
/obj/item/clockwork/ratvarian_spear/cyborg,
/obj/item/clockwork/weapon/ratvarian_spear,
/obj/item/clockwork/replica_fabricator/cyborg)
moduleselect_icon = "standard"
feedback_key = "cyborg_standard"
@@ -282,7 +282,7 @@
emag_modules = list(/obj/item/reagent_containers/borghypo/hacked)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/ratvarian_spear/cyborg)
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "medical"
moduleselect_icon = "medical"
feedback_key = "cyborg_medical"
@@ -334,7 +334,7 @@
/obj/item/clothing/mask/gas/sechailer/cyborg)
emag_modules = list(/obj/item/gun/energy/laser/cyborg)
ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/ratvarian_spear/cyborg)
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "sec"
moduleselect_icon = "security"
feedback_key = "cyborg_security"
@@ -371,7 +371,7 @@
emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/peacekeeper,
/obj/item/clockwork/ratvarian_spear/cyborg)
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "peace"
moduleselect_icon = "standard"
feedback_key = "cyborg_peacekeeper"
@@ -504,7 +504,7 @@
emag_modules = list(/obj/item/borg/stun)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/miner,
/obj/item/clockwork/ratvarian_spear/cyborg,
/obj/item/clockwork/weapon/ratvarian_spear,
/obj/item/borg/sight/xray/truesight_lens)
cyborg_base_icon = "miner"
moduleselect_icon = "miner"
@@ -524,7 +524,7 @@
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/security,
/obj/item/clockwork/ratvarian_spear/cyborg)
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "synd_sec"
moduleselect_icon = "malf"
can_be_pushed = FALSE
@@ -551,7 +551,7 @@
/obj/item/gun/medbeam)
ratvar_modules = list(
/obj/item/clockwork/slab/cyborg/medical,
/obj/item/clockwork/ratvarian_spear/cyborg)
/obj/item/clockwork/weapon/ratvarian_spear)
cyborg_base_icon = "synd_medical"
moduleselect_icon = "malf"
can_be_pushed = FALSE
@@ -130,9 +130,9 @@
hacked = TRUE
visualAppearence = CLOCKDRONE
can_be_held = FALSE
flavortext = "<span class='heavy_brass'>You are a cogscarab</span><b>, a clockwork creation of Ratvar. As a cogscarab, you have low health, an inbuilt fabricator that can convert brass \
to power, a set of relatively fast tools, </b><span class='heavy_brass'>can communicate over the Hierophant Network with :b</span><b>, and are immune to extreme \
temperatures and pressures. \nYour goal is to serve the Justiciar and his servants by repairing and defending all they create.</b>"
flavortext = "<b><span class='nezbere'>You are a cogscarab,</span> a tiny building construct of Ratvar. While you're weak and can't recite scripture, \
you have a set of quick tools, as well as a replica fabricator that can create brass and convert objects.<br><br>Work with the servants of Ratvar \
to construct and maintain defenses at the City of Cogs. If there are no servants, use this time to experiment with base designs!"
/mob/living/simple_animal/drone/cogscarab/ratvar //a subtype for spawning when ratvar is alive, has a slab that it can use and a normal fabricator
default_storage = /obj/item/storage/toolbox/brass/prefilled/ratvar
@@ -164,6 +164,7 @@ Difficulty: Medium
hitsound = 'sound/weapons/sear.ogg'
var/storm_type = /datum/weather/ash_storm
var/storm_cooldown = 0
var/static/list/excluded_areas = list(/area/reebe/city_of_cogs)
/obj/item/staff/storm/attack_self(mob/user)
if(storm_cooldown > world.time)
@@ -171,6 +172,9 @@ Difficulty: Medium
return
var/area/user_area = get_area(user)
if(user_area.type in excluded_areas)
to_chat(user, "<span class='warning'>Something is preventing you from using the staff here.</span>")
return
var/datum/weather/A
for(var/V in SSweather.existing_weather)
var/datum/weather/W = V
+44 -1
View File
@@ -84,6 +84,7 @@
var/beenhit = 0 // used for counting how many times it has been hit, used for Aliens at the moment
var/mob/living/silicon/ai/occupier = null
var/transfer_in_progress = FALSE //Is there an AI being transferred out of us?
var/obj/item/clockwork/integration_cog/integration_cog //Is there a cog siphoning power?
var/longtermpower = 10
var/auto_name = 0
var/failure_timer = 0
@@ -215,6 +216,8 @@
else
to_chat(user, "It's [ !terminal ? "not" : "" ] wired up.")
to_chat(user, "The electronics are[!has_electronics?"n't":""] installed.")
if(user.Adjacent(src) && integration_cog)
to_chat(user, "<span class='warning'>[src]'s innards have been replaced by strange brass machinery!</span>")
else
if (stat & MAINT)
@@ -224,6 +227,8 @@
else
to_chat(user, "The cover is closed.")
if(integration_cog && is_servant_of_ratvar(user))
to_chat(user, "<span class='brass'>There is an integration cog installed!</span>")
// update the APC icon to show the three base states
// also add overlays for indicator lights
@@ -408,6 +413,17 @@
"<span class='notice'>You remove the power control board.</span>")
new /obj/item/electronics/apc(loc)
return
else if(integration_cog)
user.visible_message("<span class='notice'>[user] starts prying [integration_cog] from [src]...</span>", \
"<span class='notice'>You painstakingly start tearing [integration_cog] out of [src]'s guts...</span>")
playsound(src, W.usesound, 50, TRUE)
if(!do_after(user, 100 * W.toolspeed, target = src))
return
user.visible_message("<span class='notice'>[user] destroys [integration_cog] in [src]!</span>", \
"<span class='notice'>[integration_cog] comes free with a clank and snaps in two as the machinery returns to normal!</span>")
playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE)
QDEL_NULL(integration_cog)
return
else if (opened!=2) //cover isn't removed
opened = 0
coverlocked = TRUE //closing cover relocks it
@@ -625,6 +641,33 @@
if (opened==2)
opened = 1
update_icon()
else if(istype(W, /obj/item/clockwork/integration_cog) && is_servant_of_ratvar(user))
if(integration_cog)
to_chat(user, "<span class='warning'>This APC already has a cog.</span>")
return
if(!opened)
user.visible_message("<span class='warning'>[user] slices [src]'s cover lock, and it swings wide open!</span>", \
"<span class='alloy'>You slice [src]'s cover lock apart with [W], and the cover swings open.</span>")
opened = TRUE
update_icon()
else
user.visible_message("<span class='warning'>[user] presses [W] into [src]!</span>", \
"<span class='alloy'>You hold [W] in place within [src], and it slowly begins to warm up...</span>")
playsound(src, 'sound/machines/click.ogg', 50, TRUE)
if(!do_after(user, 70, target = src))
return
user.visible_message("<span class='warning'>[user] installs [W] in [src]!</span>", \
"<span class='alloy'>Replicant alloy rapidly covers the APC's innards, replacing the machinery.</span><br>\
<span class='brass'>This APC will now passively provide power for the cult!</span>")
playsound(user, 'sound/machines/clockcult/integration_cog_install.ogg', 50, TRUE)
user.transferItemToLoc(W, src)
integration_cog = W
START_PROCESSING(SSfastprocess, W)
playsound(src, 'sound/machines/clockcult/steam_whoosh.ogg', 50, FALSE)
opened = FALSE
locked = FALSE
update_icon()
return
else if(panel_open && !opened && is_wire_tool(W))
wires.interact(user)
else
@@ -695,7 +738,7 @@
/obj/machinery/power/apc/ui_data(mob/user)
var/list/data = list(
"locked" = locked,
"locked" = integration_cog ? !is_servant_of_ratvar(user) : locked,
"failTime" = failure_timer,
"isOperating" = operating,
"externalPower" = main_status,
+2 -1
View File
@@ -70,7 +70,8 @@
/obj/item/stack/medical/gauze = /datum/species/golem/cloth,
/obj/item/stack/sheet/cloth = /datum/species/golem/cloth,
/obj/item/stack/sheet/mineral/adamantine = /datum/species/golem/adamantine,
/obj/item/stack/sheet/plastic = /datum/species/golem/plastic)
/obj/item/stack/sheet/plastic = /datum/species/golem/plastic,
/obj/item/stack/tile/brass = /datum/species/golem/clockwork)
if(istype(I, /obj/item/stack))
var/obj/item/stack/O = I