Merge branch 'pr/12'
This commit is contained in:
@@ -108,10 +108,20 @@
|
||||
to_chat(loc, "<span class='warning'>Combat injection is still recharging.</span>")
|
||||
return
|
||||
var/mob/living/carbon/human/M = loc
|
||||
M.adjustStaminaLoss(-75)
|
||||
M.SetSleeping(0)
|
||||
M.SetUnconscious(0)
|
||||
M.SetStun(0)
|
||||
M.SetKnockdown(0)
|
||||
M.reagents.add_reagent("inaprovaline", 3)
|
||||
M.reagents.add_reagent("synaptizine", 10)
|
||||
M.reagents.add_reagent("stimulants", 10)
|
||||
M.adjustStaminaLoss(-150)
|
||||
M.stuttering = 0
|
||||
M.updatehealth()
|
||||
M.update_stamina()
|
||||
M.resting = 0
|
||||
M.lying = 0
|
||||
M.update_canmove()
|
||||
combat_cooldown = 0
|
||||
START_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -503,6 +513,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
|
||||
L.lastattacker = user.real_name
|
||||
L.lastattackerckey = user.ckey
|
||||
|
||||
L.adjustStaminaLoss(35) //because previously it took 5-6 hits to actually "incapacitate" someone for the purposes of the sleep inducement
|
||||
L.Knockdown(140)
|
||||
L.apply_effect(EFFECT_STUTTER, 7)
|
||||
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
point_return = 4
|
||||
atmosblock = TRUE
|
||||
armor = list("melee" = 25, "bullet" = 25, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
var/weakened
|
||||
|
||||
/obj/structure/blob/shield/scannerreport()
|
||||
if(atmosblock)
|
||||
@@ -25,10 +26,15 @@
|
||||
name = "weakened strong blob"
|
||||
desc = "A wall of twitching tendrils."
|
||||
atmosblock = FALSE
|
||||
armor = list("melee" = 15, "bullet" = 15, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
if(!weakened)
|
||||
armor = armor.setRating("melee" = 15, "bullet" = 15, "laser" = 5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
weakened = TRUE
|
||||
else
|
||||
icon_state = initial(icon_state)
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
atmosblock = TRUE
|
||||
air_update_turf(1)
|
||||
if(weakened)
|
||||
armor = armor.setRating("melee" = 25, "bullet" = 25, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
|
||||
weakened = FALSE
|
||||
air_update_turf(1)
|
||||
@@ -19,6 +19,14 @@
|
||||
user.SetKnockdown(0)
|
||||
user.reagents.add_reagent("changelingadrenaline", 10)
|
||||
user.reagents.add_reagent("changelinghaste", 2) //For a really quick burst of speed
|
||||
user.adjustStaminaLoss(-75)
|
||||
user.reagents.add_reagent("inaprovaline", 3) //let's give another chance to dumb fucks who forget to breathe
|
||||
user.adjustStaminaLoss(-150)
|
||||
user.stuttering = 0
|
||||
user.updatehealth()
|
||||
user.update_stamina()
|
||||
user.resting = 0
|
||||
user.lying = 0
|
||||
user.update_canmove()
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if (user.has_trait(CHANGELING_HIVEMIND_MUTE))
|
||||
to_chat(user, "<span class='warning'>The poison in the air hinders our ability to interact with the hivemind.</span>")
|
||||
return
|
||||
var/input = stripped_input(usr, "Please choose a message to transmit.", "Changeling Hivemind", "")
|
||||
var/input = html_decode(stripped_input(usr, "Please choose a message to transmit.", "Changeling Hivemind", ""))
|
||||
user.say(".g[input]")
|
||||
|
||||
/obj/effect/proc_holder/changeling/hivemind_comms/on_purchase(mob/user, is_respec)
|
||||
|
||||
@@ -44,12 +44,13 @@
|
||||
|
||||
/obj/item/clockwork/slab/cyborg //three scriptures, plus a spear and fabricator
|
||||
clockwork_desc = "A divine link to the Celestial Derelict, allowing for limited recital of scripture."
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard)
|
||||
quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \
|
||||
/datum/clockwork_scripture/create_object/stargazer)
|
||||
maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more
|
||||
actions_types = list()
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/engineer //two scriptures, plus a fabricator
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transmission)
|
||||
/obj/item/clockwork/slab/cyborg/engineer //three scriptures, plus a fabricator
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transmission, /datum/clockwork_scripture/create_object/stargazer)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/medical //five scriptures, plus a spear
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/linked_vanguard, /datum/clockwork_scripture/ranged_ability/sentinels_compromise, \
|
||||
@@ -61,12 +62,12 @@
|
||||
/obj/item/clockwork/slab/cyborg/peacekeeper //two scriptures, plus a spear
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/ranged_ability/hateful_manacles, /datum/clockwork_scripture/ranged_ability/judicial_marker)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/janitor //five scriptures, plus a fabricator
|
||||
/obj/item/clockwork/slab/cyborg/janitor //six scriptures, plus a fabricator
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, /datum/clockwork_scripture/create_object/sigil_of_transgression, \
|
||||
/datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor)
|
||||
/datum/clockwork_scripture/create_object/stargazer, /datum/clockwork_scripture/create_object/ocular_warden, /datum/clockwork_scripture/create_object/mania_motor)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/service //five scriptures, plus xray vision
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant, \
|
||||
/obj/item/clockwork/slab/cyborg/service //six scriptures, plus xray vision
|
||||
quickbound = list(/datum/clockwork_scripture/abscond, /datum/clockwork_scripture/create_object/replicant,/datum/clockwork_scripture/create_object/stargazer, \
|
||||
/datum/clockwork_scripture/spatial_gateway, /datum/clockwork_scripture/create_object/clockwork_obelisk)
|
||||
|
||||
/obj/item/clockwork/slab/cyborg/miner //two scriptures, plus a spear and xray vision
|
||||
|
||||
@@ -2,6 +2,32 @@
|
||||
// DRIVERS //
|
||||
/////////////
|
||||
|
||||
//Stargazer: Creates a stargazer, a cheap power generator that utilizes starlight.
|
||||
/datum/clockwork_scripture/create_object/stargazer
|
||||
descname = "Generates Power From Starlight"
|
||||
name = "Stargazer"
|
||||
desc = "Forms a weak structure that generates power every second while within three tiles of starlight."
|
||||
invocations = list("Capture their inferior light for us!")
|
||||
channel_time = 50
|
||||
power_cost = 200
|
||||
object_path = /obj/structure/destructible/clockwork/stargazer
|
||||
creator_message = "<span class='brass'>You form a stargazer, which will generate power near starlight.</span>"
|
||||
observer_message = "<span class='warning'>A large lantern-shaped machine forms!</span>"
|
||||
usage_tip = "For obvious reasons, make sure to place this near a window or somewhere else that can see space!"
|
||||
tier = SCRIPTURE_DRIVER
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 1
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a stargazer, which generates power when near starlight."
|
||||
|
||||
/datum/clockwork_scripture/create_object/stargazer/check_special_requirements()
|
||||
var/area/A = get_area(invoker)
|
||||
if(A.outdoors || A.map_name == "Space" || !A.blob_allowed)
|
||||
to_chat(invoker, "<span class='danger'>Stargazers can't be built off-station.</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
//Integration Cog: Creates an integration cog that can be inserted into APCs to passively siphon power.
|
||||
/datum/clockwork_scripture/create_object/integration_cog
|
||||
@@ -18,7 +44,7 @@
|
||||
tier = SCRIPTURE_DRIVER
|
||||
space_allowed = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 1
|
||||
sort_priority = 2
|
||||
important = TRUE
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates an integration cog, which can be used to siphon power from an open APC."
|
||||
@@ -39,7 +65,7 @@
|
||||
tier = SCRIPTURE_DRIVER
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 2
|
||||
sort_priority = 3
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Transgression, which will briefly stun and slow the next non-Servant to cross it."
|
||||
|
||||
@@ -59,7 +85,7 @@
|
||||
tier = SCRIPTURE_DRIVER
|
||||
one_per_tile = TRUE
|
||||
primary_component = HIEROPHANT_ANSIBLE
|
||||
sort_priority = 3
|
||||
sort_priority = 4
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a Sigil of Submission, which will convert non-Servants that remain on it."
|
||||
|
||||
@@ -76,7 +102,7 @@
|
||||
usage_tip = "The light can be used from up to two tiles away. Damage taken will GREATLY REDUCE the stun's duration."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 4
|
||||
sort_priority = 5
|
||||
slab_overlay = "volt"
|
||||
ranged_type = /obj/effect/proc_holder/slab/kindle
|
||||
ranged_message = "<span class='brass'><i>You charge the clockwork slab with divine energy.</i>\n\
|
||||
@@ -100,7 +126,7 @@
|
||||
usage_tip = "The manacles are about as strong as zipties, and break when removed."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = BELLIGERENT_EYE
|
||||
sort_priority = 5
|
||||
sort_priority = 6
|
||||
ranged_type = /obj/effect/proc_holder/slab/hateful_manacles
|
||||
slab_overlay = "hateful_manacles"
|
||||
ranged_message = "<span class='neovgre_small'><i>You charge the clockwork slab with divine energy.</i>\n\
|
||||
@@ -124,7 +150,7 @@
|
||||
usage_tip = "You cannot reactivate Vanguard while still shielded by it."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 6
|
||||
sort_priority = 7
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to temporarily have quickly regenerating stamina and absorb stuns. All stuns absorbed will affect you when disabled."
|
||||
|
||||
@@ -156,7 +182,7 @@
|
||||
usage_tip = "The Compromise is very fast to invoke, and will remove holy water from the target Servant."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = VANGUARD_COGWHEEL
|
||||
sort_priority = 7
|
||||
sort_priority = 8
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Allows you to convert a Servant's brute, burn, and oxygen damage to half toxin damage.<br><b>Click your slab to disable.</b>"
|
||||
slab_overlay = "compromise"
|
||||
@@ -180,7 +206,7 @@
|
||||
usage_tip = "This can't be used while on Reebe, for obvious reasons."
|
||||
tier = SCRIPTURE_DRIVER
|
||||
primary_component = GEIS_CAPACITOR
|
||||
sort_priority = 8
|
||||
sort_priority = 9
|
||||
important = TRUE
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Returns you to Reebe."
|
||||
@@ -238,7 +264,7 @@
|
||||
tier = SCRIPTURE_DRIVER
|
||||
space_allowed = TRUE
|
||||
primary_component = GEIS_CAPACITOR
|
||||
sort_priority = 9
|
||||
sort_priority = 10
|
||||
important = TRUE
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a new Clockwork Slab."
|
||||
@@ -259,6 +285,6 @@
|
||||
tier = SCRIPTURE_DRIVER
|
||||
space_allowed = TRUE
|
||||
primary_component = GEIS_CAPACITOR
|
||||
sort_priority = 10
|
||||
sort_priority = 11
|
||||
quickbind = TRUE
|
||||
quickbind_desc = "Creates a pair of Wraith Spectacles, which grant true sight but cause gradual vision loss."
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
#define STARGAZER_RANGE 3 //How many tiles the stargazer can see out to
|
||||
#define STARGAZER_POWER 7 //How many watts will be produced per second when the stargazer sees starlight
|
||||
|
||||
//Stargazer: A very fragile but cheap generator that creates power from starlight.
|
||||
/obj/structure/destructible/clockwork/stargazer
|
||||
name = "stargazer"
|
||||
desc = "A large lantern-shaped machine made of thin brass. It looks fragile."
|
||||
clockwork_desc = "A lantern-shaped generator that produces power when near starlight."
|
||||
icon_state = "stargazer"
|
||||
unanchored_icon = "stargazer_unwrenched"
|
||||
max_integrity = 40
|
||||
construction_value = 5
|
||||
layer = WALL_OBJ_LAYER
|
||||
break_message = "<span class='warning'>The stargazer's fragile body shatters into pieces!</span>"
|
||||
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
light_color = "#DAAA18"
|
||||
var/star_light_star_bright = FALSE //If this stargazer can see starlight
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/Initialize()
|
||||
. = ..()
|
||||
START_PROCESSING(SSprocessing, src)
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/Destroy()
|
||||
STOP_PROCESSING(SSprocessing, src)
|
||||
. = ..()
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/examine(mob/user)
|
||||
..()
|
||||
if(is_servant_of_ratvar(user))
|
||||
to_chat(user, "<span class='nzcrentr_small'>Generates <b>[DisplayPower(STARGAZER_POWER)]</b> per second while viewing starlight within [STARGAZER_RANGE] tiles.</span>")
|
||||
if(star_light_star_bright)
|
||||
to_chat(user, "[is_servant_of_ratvar(user) ? "<span class='nzcrentr_small'>It can see starlight!</span>" : "It's shining brilliantly!"]")
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/process()
|
||||
star_light_star_bright = check_starlight()
|
||||
if(star_light_star_bright)
|
||||
adjust_clockwork_power(STARGAZER_POWER)
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/update_anchored(mob/living/user, damage)
|
||||
. = ..()
|
||||
star_light_star_bright = check_starlight()
|
||||
|
||||
/obj/structure/destructible/clockwork/stargazer/proc/check_starlight()
|
||||
var/old_status = star_light_star_bright
|
||||
var/has_starlight
|
||||
if(!anchored)
|
||||
has_starlight = FALSE
|
||||
else
|
||||
for(var/turf/T in view(3, src))
|
||||
if(isspaceturf(T))
|
||||
has_starlight = TRUE
|
||||
break
|
||||
if(has_starlight && anchored)
|
||||
var/area/A = get_area(src)
|
||||
if(A.outdoors || A.map_name == "Space" || !A.blob_allowed)
|
||||
has_starlight = FALSE
|
||||
if(old_status != has_starlight)
|
||||
if(has_starlight)
|
||||
visible_message("<span class='nzcrentr_small'>[src] hums and shines brilliantly!</span>")
|
||||
playsound(src, 'sound/machines/clockcult/stargazer_activate.ogg', 50, TRUE)
|
||||
add_overlay("stargazer_light")
|
||||
set_light(1.5, 5)
|
||||
else
|
||||
if(anchored) //We lost visibility somehow
|
||||
visible_message("<span class='danger'>[src] flickers, and falls dark.</span>")
|
||||
else
|
||||
visible_message("<span class='danger'>[src] whooshes quietly as it slides into a less bulky form.</span>")
|
||||
cut_overlays()
|
||||
set_light(0)
|
||||
return has_starlight
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
//Mech sensor: Activates when stepped on by a mech
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/mech
|
||||
name = "mech sensor"
|
||||
desc = "A thin plate of brass, barely visible but clearly distinct."
|
||||
clockwork_desc = "A trigger that will activate when a mech controlled by a non-servant runs across it."
|
||||
max_integrity = 5
|
||||
icon_state = "pressure_sensor"
|
||||
alpha = 75
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/mech/Crossed(atom/movable/AM)
|
||||
|
||||
if(!istype(AM,/obj/mecha/))
|
||||
return
|
||||
|
||||
var/obj/mecha/M = AM
|
||||
if(M.occupant && is_servant_of_ratvar(M.occupant))
|
||||
return
|
||||
audible_message("<i>*click*</i>")
|
||||
playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE)
|
||||
activate()
|
||||
@@ -68,7 +68,14 @@
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE //So players can interact with the tile it's on to pull them off
|
||||
buckle_mob(squirrel, TRUE)
|
||||
else
|
||||
visible_message("<span class='danger'>A massive brass spike erupts from the ground!</span>")
|
||||
var/obj/mecha/M = locate() in get_turf(src)
|
||||
if(M)
|
||||
M.take_damage(50,BRUTE,"melee")
|
||||
M.visible_message("<span class='danger'>A massive brass spike erupts from the ground, penetrating \the [M] and shattering the trap into pieces!</span>")
|
||||
addtimer(CALLBACK(src, .proc/take_damage, max_integrity), 1)
|
||||
else
|
||||
visible_message("<span class='danger'>A massive brass spike erupts from the ground!</span>")
|
||||
|
||||
playsound(src, 'sound/machines/clockcult/brass_skewer.ogg', 75, FALSE)
|
||||
icon_state = "[initial(icon_state)]_extended"
|
||||
density = TRUE //Skewers are one-use only
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/obj/structure/destructible/clockwork/trap/power_nullifier
|
||||
name = "power nullifier"
|
||||
desc = "A well hidden set of wires and connections."
|
||||
clockwork_desc = "When triggered, it sets off a 3x3 emp pulse with the center suffering a stronger pulse."
|
||||
icon_state = "electric_trap"
|
||||
break_message = "<span class='warning'>The power nullifier sparks, then slowly crumbles to debris!</span>"
|
||||
max_integrity = 40
|
||||
density = FALSE
|
||||
var/activated = FALSE
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/power_nullifier/activate()
|
||||
if(!activated)
|
||||
activated = TRUE
|
||||
empulse(get_turf(src),1,1,TRUE)
|
||||
|
||||
/obj/structure/destructible/clockwork/trap/power_nullifier/emp_act(var/strength=1)
|
||||
activate()
|
||||
@@ -211,8 +211,6 @@
|
||||
else
|
||||
return FALSE
|
||||
|
||||
|
||||
|
||||
/datum/action/innate/cult/spin2win
|
||||
name = "Geometer's Fury"
|
||||
desc = "You draw on the power of the sword's ancient runes, spinning it wildly around you as you become immune to most attacks."
|
||||
@@ -267,7 +265,6 @@
|
||||
return
|
||||
. = ..()
|
||||
|
||||
|
||||
/obj/item/clothing/head/culthood
|
||||
name = "ancient cultist hood"
|
||||
icon_state = "culthood"
|
||||
@@ -294,7 +291,6 @@
|
||||
heat_protection = CHEST|GROIN|LEGS|ARMS
|
||||
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
|
||||
|
||||
|
||||
/obj/item/clothing/head/culthood/alt
|
||||
name = "cultist hood"
|
||||
desc = "An armored hood worn by the followers of Nar'Sie."
|
||||
@@ -313,7 +309,6 @@
|
||||
/obj/item/clothing/suit/cultrobes/alt/ghost
|
||||
item_flags = NODROP | DROPDEL
|
||||
|
||||
|
||||
/obj/item/clothing/head/magus
|
||||
name = "magus helm"
|
||||
icon_state = "magus"
|
||||
@@ -529,7 +524,12 @@
|
||||
"The shuttle's custodian was found washing the windows with their own blood.",
|
||||
"A shuttle engineer began screaming 'DEATH IS NOT THE END' and ripped out wires until an arc flash seared off her flesh.",
|
||||
"A shuttle inspector started laughing madly over the radio and then threw herself into an engine turbine.",
|
||||
"An assistant was found on the shuttle.",
|
||||
"A medical officer was found pouring out several blood bags onto the shuttle's instrument panels, before slitting both wrists open and screaming 'DEATH IS NOT THE END'.",
|
||||
"A fuel technician was found replacing the fuel with his blood.",
|
||||
"All the lights aboard the shuttle turned a crimson red before blowing out..",
|
||||
"The shuttle dispatcher was found dead with bloody symbols carved into their flesh.",
|
||||
"An engine turbine began leaking blood when it was powered on.",
|
||||
"The shuttle's transponder is emitting the encoded message 'FEAR THE OLD BLOOD' in lieu of its assigned identification signal.")
|
||||
var/message = pick_n_take(curses)
|
||||
message += " The shuttle will be delayed by three minutes."
|
||||
|
||||
Reference in New Issue
Block a user