Addition Ratvar conversion effects and related changes

This commit is contained in:
Nerd Lord
2016-06-03 23:19:13 -04:00
parent b6e61c0cf5
commit 3793e6187a
39 changed files with 422 additions and 104 deletions
+1
View File
@@ -21,6 +21,7 @@
#define CLOSED_DOOR_LAYER 3.1
#define CLOSED_FIREDOOR_LAYER 3.11
#define ABOVE_OBJ_LAYER 3.2
#define ABOVE_WINDOW_LAYER 3.3
#define SIGN_LAYER 3.4
#define HIGH_OBJ_LAYER 3.5
+3
View File
@@ -368,6 +368,9 @@ var/list/blood_splatter_icons = list()
/atom/proc/narsie_act()
return
/atom/proc/ratvar_act()
return
/atom/proc/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
return 0
+80 -25
View File
@@ -526,6 +526,7 @@
item_state = "resonator_u"
w_class = 3
force = 5
flags = NOBLUDGEON
var/stored_alloy = 0 //Requires this to function; each chunk of replicant alloy provides 10 charge
var/max_alloy = 100
var/uses_alloy = TRUE
@@ -551,10 +552,10 @@
else
return ..()
/obj/item/clockwork/clockwork_proselytizer/afterattack(atom/target, mob/living/user, flag, params)
if(!target || !user)
/obj/item/clockwork/clockwork_proselytizer/afterattack(atom/target, mob/living/user, proximity_flag, params)
if(!target || !user || !proximity_flag)
return 0
if(user.a_intent == "harm" || !user.Adjacent(target) || !is_servant_of_ratvar(user))
if(user.a_intent == "harm" || !is_servant_of_ratvar(user))
return ..()
proselytize(target, user)
@@ -571,21 +572,62 @@
var/new_obj_type //The path of the new type of object to replace the old
var/alloy_cost = 0
var/valid_target = FALSE //If the proselytizer will actually function on the object
if(istype(target, /turf/closed/wall) && !istype(target, /turf/closed/wall/r_wall) && !istype(target, /turf/closed/wall/clockwork)) //This looks sloppy, but it's the only way
if(istype(target, /turf/closed/wall/clockwork))
operation_time = 80
new_obj_type = /turf/open/floor/clockwork
alloy_cost = -4
valid_target = TRUE
else if(istype(target, /turf/open/floor/clockwork))
operation_time = 80
new_obj_type = /turf/closed/wall/clockwork
alloy_cost = 4
valid_target = TRUE
else if(istype(target, /turf/closed/wall) && !istype(target, /turf/closed/wall/r_wall))
operation_time = 50
new_obj_type = /turf/closed/wall/clockwork
alloy_cost = 5
valid_target = TRUE //Need to change valid_target to 1 or TRUE in each check so that it doesn't return an invalid value
else if(istype(src, /turf/open/floor) && !istype(target, /turf/open/floor/clockwork))
else if(istype(target, /turf/open/floor))
operation_time = 30
new_obj_type = /turf/open/floor/clockwork
alloy_cost = 1
valid_target = TRUE
else if(istype(src, /obj/machinery/door/airlock) && !istype(src, /obj/machinery/door/airlock/clockwork))
else if(istype(target, /obj/machinery/door/airlock) && !istype(target, /obj/machinery/door/airlock/clockwork))
operation_time = 40
new_obj_type = /obj/machinery/door/airlock/clockwork
var/obj/machinery/door/airlock/A = target
if(A.glass)
new_obj_type = /obj/machinery/door/airlock/clockwork/brass
else
new_obj_type = /obj/machinery/door/airlock/clockwork
alloy_cost = 5
valid_target = TRUE
else if(istype(target, /obj/structure/window) && !istype(target, /obj/structure/window/reinforced/clockwork))
var/obj/structure/window/W = target
if(W.fulltile)
new_obj_type = /obj/structure/window/reinforced/clockwork/fulltile
operation_time = 20
alloy_cost = 5
valid_target = TRUE
else if(istype(target, /obj/structure/grille) && !istype(target, /obj/structure/grille/ratvar))
var/obj/structure/grille/G = target
if(G.destroyed)
new_obj_type = /obj/structure/grille/ratvar/broken
operation_time = 10
else
new_obj_type = /obj/structure/grille/ratvar
operation_time = 15
alloy_cost = 0
valid_target = TRUE
else if(istype(target, /obj/structure/clockwork/wall_gear))
operation_time = 30
new_obj_type = /obj/item/clockwork/component/replicant_alloy
alloy_cost = 6
valid_target = TRUE
else if(istype(target, /obj/item/clockwork/alloy_shards))
operation_time = 30
new_obj_type = /obj/item/clockwork/component/replicant_alloy
alloy_cost = 7
valid_target = TRUE
if(!uses_alloy)
alloy_cost = 0
if(!valid_target)
@@ -597,12 +639,17 @@
if(stored_alloy - alloy_cost < 0)
user << "<span class='warning'>You need [alloy_cost] replicant alloy to proselytize [target]!</span>"
return 0
if(stored_alloy - alloy_cost > 100)
user << "<span class='warning'>You have too much replicant alloy stored to proselytize [target]!</span>"
return 0
user.visible_message("<span class='warning'>[user]'s [src] begins tearing apart [target]!</span>", "<span class='brass'>You begin proselytizing [target]...</span>")
playsound(target, 'sound/machines/click.ogg', 50, 1)
if(!do_after(user, operation_time, target = target))
return 0
if(stored_alloy - alloy_cost < 0) //Check again to prevent bypassing via spamclick
return 0
if(stored_alloy - alloy_cost > 100)
return 0
user.visible_message("<span class='warning'>[user]'s [name] disgorges a chunk of metal and shapes it over what's left of [target]!</span>", \
"<span class='brass'>You proselytize [target].</span>")
playsound(target, 'sound/items/Deconstruct.ogg', 50, 1)
@@ -640,6 +687,7 @@
spawn(300) //5 minutes
if(src)
visible_message("<span class='warning'>[src] cracks in two and fades away!</span>")
PoolOrNew(/obj/effect/overlay/temp/ratvar/spearbreak, get_turf(src))
qdel(src)
/obj/item/clockwork/ratvarian_spear/afterattack(atom/target, mob/living/user, flag, params)
@@ -669,6 +717,7 @@
L.Stun(3)
L.Weaken(3)
visible_message("<span class='warning'>[src] snaps in two and dematerializes!</span>")
PoolOrNew(/obj/effect/overlay/temp/ratvar/spearbreak, get_turf(L))
qdel(src)
/obj/item/device/mmi/posibrain/soul_vessel //Soul vessel: An ancient positronic brain with a lawset catered to serving Ratvar.
@@ -784,6 +833,15 @@
cultist_message = "The eye gives you an intensely hateful glare."
servant_of_ratvar_messages = list("\"...\"", "For a moment, your mind is flooded with extremely violent thoughts.")
/obj/item/clockwork/component/belligerent_eye/blind_eye
name = "blind eye"
desc = "A heavy brass eye, its red iris fallen dark."
clockwork_desc = "A smashed ocular warden covered in dents. Might still be serviceable as a substitute for a belligerent eye."
icon_state = "blind_eye"
cultist_message = "The eye flickers at you with intense hate before falling dark."
servant_of_ratvar_messages = list("The eye flickers before falling dark.", "You feel watched.")
w_class = 3
/obj/item/clockwork/component/vanguard_cogwheel
name = "vanguard cogwheel"
desc = "A sturdy brass cog with a faintly glowing blue gem in its center."
@@ -792,6 +850,15 @@
cultist_message = "\"Pray to your god that we never meet.\""
servant_of_ratvar_messages = list("\"Be safe, child.\"", "You feel unexplainably comforted.", "\"Never forget: pain is temporary. The Justiciar's glory is eternal.\"")
/obj/item/clockwork/component/vanguard_cogwheel/pinion_lock
name = "pinion lock"
desc = "A dented and scratched gear. It's very heavy."
clockwork_desc = "A broken gear lock for pinion airlocks. Might still be serviceable as a substitute for a vanguard cogwheel."
icon_state = "pinion_lock"
cultist_message = "The gear grows warm in your hands."
servant_of_ratvar_messages = list("The lock isn't getting any lighter.")
w_class = 3
/obj/item/clockwork/component/guvax_capacitor
name = "guvax capacitor"
desc = "A curiously cold brass doodad. It seems as though it really doesn't appreciate being held."
@@ -826,24 +893,6 @@
servant_of_ratvar_messages = list("A piece of armor hovers away from the others for a moment.", "Red flame appears in the cuirass before sputtering out.")
w_class = 3
/obj/item/clockwork/component/replicant_alloy/blind_eye
name = "blind eye"
desc = "A heavy brass eye, its red iris fallen dark."
clockwork_desc = "A smashed ocular warden covered in dents. Might still be serviceable as a substitute for replicant alloy."
icon_state = "blind_eye"
cultist_message = "The eye flickers at you with intense hate before falling dark."
servant_of_ratvar_messages = list("The eye flickers before falling dark.", "You feel watched.")
w_class = 3
/obj/item/clockwork/component/replicant_alloy/pinion_lock
name = "pinion lock"
desc = "A dented and scratched gear. It's very heavy."
clockwork_desc = "A broken gear lock for pinion airlocks. Might still be serviceable as a substitute for replicant alloy."
icon_state = "pinion_lock"
cultist_message = "The gear grows warm in your hands."
servant_of_ratvar_messages = list("The lock isn't getting any lighter.")
w_class = 3
/obj/item/clockwork/component/hierophant_ansible
name = "hierophant ansible"
desc = "Some sort of transmitter? It seems as though it's trying to say something."
@@ -851,3 +900,9 @@
component_id = "hierophant_ansible"
cultist_message = "\"Gur obff nlf vg'f abg ntnvafg gur ehyrf gb xvyy lbh.\""
servant_of_ratvar_messages = list("\"Rkvyr vf fhpu n'ober. Gurer'f abguvat v'pna uhag va urer.\"", "\"Jung'f xrrcvat lbh? V'jnag gb tb xvyy fbzrguvat.\"", "\"HEHEHEHEHEHEH!\"")
/obj/item/clockwork/alloy_shards
name = "replicant alloy shards"
desc = "Broken shards of some oddly malleable metal. They occasionally move and seem to glow."
clockwork_desc = "Broken shards of replicant alloy. Could probably be proselytized into replicant alloy, though there's not much left."
icon_state = "alloy_shards"
+4 -45
View File
@@ -151,7 +151,7 @@
/obj/structure/clockwork/massive/ratvar/attack_ghost(mob/dead/observer/O)
if(alert(O, "Embrace the Justiciar's light? You can no longer be cloned!",,"Yes", "No") == "No" || !O)
return 0
var/mob/living/simple_animal/hostile/clockwork_reclaimer/R = new(get_turf(O))
var/mob/living/simple_animal/hostile/clockwork_reclaimer/R = new(get_turf(src))
R.visible_message("<span class='warning'>[R] forms and hums to life!</span>")
R.key = O.key
@@ -192,8 +192,10 @@
world << "<span class='heavy_brass'><font size=5>\"[pick("BLOOD GOD!!!", "NAR-SIE!!!", "AT LAST, YOUR TIME HAS COME!")]\"</font></span>"
world << "<span class='cult'><font size=5>\"<b>Ratvar?! How?!</b>\"</font></span>"
for(var/obj/singularity/narsie/N in range(15, src))
clash_of_the_titans(N) //IT'S TIME FOR THE BATTLE OF THE AGES
if(N.clashing)
continue
N.clashing = TRUE
clash_of_the_titans(N) //IT'S TIME FOR THE BATTLE OF THE AGES
break
return 1
@@ -243,46 +245,3 @@
narsie.clashing = FALSE
qdel(src)
return 1
/atom/proc/ratvar_act() //Called on everything near Ratvar
return
/turf/closed/wall/ratvar_act() //Walls and floors are changed to their clockwork variants
if(prob(20))
ChangeTurf(/turf/closed/wall/clockwork)
/turf/closed/wall/clockwork/ratvar_act()
return 0
/turf/open/floor/ratvar_act()
if(prob(20))
ChangeTurf(/turf/open/floor/clockwork)
/turf/open/floor/clockwork/ratvar_act()
return 0
/obj/structure/window/ratvar_act() //Windows turn into Ratvarian windows
if(!fulltile)
new/obj/structure/window/reinforced/clockwork(get_turf(src), dir)
else
new/obj/structure/window/reinforced/clockwork/fulltile(get_turf(src))
qdel(src)
/obj/structure/window/reinforced/clockwork/ratvar_act()
return 0
/obj/machinery/door/airlock/ratvar_act() //Airlocks become pinion airlocks that only allow servants
new/obj/machinery/door/airlock/clockwork(get_turf(src))
qdel(src)
/obj/machinery/door/airlock/clockwork/ratvar_act()
return 0
/mob/living/ratvar_act()
if(!add_servant_of_ratvar(src) && !is_servant_of_ratvar(src))
src << "<span class='userdanger'>A blinding light boils you alive! <i>Run!</i></span>"
adjustFireLoss(35)
if(src)
adjust_fire_stacks(1)
IgniteMob()
/mob/dead/observer/ratvar_act() //Ghosts flash yellow for a second
var/old_color = color
color = rgb(75, 53, 0)
animate(src, color = old_color, time = 10)
@@ -32,25 +32,22 @@
/obj/structure/clockwork/proc/destroyed()
if(!takes_damage)
return 0
for(var/obj/item/I in debris)
for(var/I in debris)
new I (get_turf(src))
visible_message(break_message)
playsound(src, break_sound, 50, 1)
qdel(src)
return 1
/obj/structure/clockwork/proc/damaged(mob/living/user, obj/item/I, amount, taip)
if(!amount || !taip || !taip in list(BRUTE, BURN))
/obj/structure/clockwork/proc/damaged(mob/living/user, amount, damage_type)
if(!amount || !damage_type || !damage_type in list(BRUTE, BURN))
return 0
if(user.a_intent == "harm" && user.canUseTopic(I) && I.force && takes_damage)
user.visible_message("<span class='warning'>[user] strikes [src] with [I]!</span>", "<span class='danger'>You strike [src] with [I]!</span>")
playsound(src, I.hitsound, 50, 1)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
health = max(0, health - I.force)
if(takes_damage)
health = max(0, health - amount)
if(!health)
destroyed()
return 1
return 1
return 0
/obj/structure/clockwork/ex_act(severity)
if(takes_damage)
@@ -72,11 +69,34 @@
..()
desc = initial(desc)
/obj/structure/clockwork/proc/attack_generic(mob/user, damage = 0, damage_type = BRUTE) //used by attack_alien, attack_animal, and attack_slime
user.do_attack_animation(src)
user.changeNext_move(CLICK_CD_MELEE)
user.visible_message("<span class='danger'>[user] smashes into [src]!</span>")
take_damage(damage, damage_type)
/obj/structure/clockwork/attack_alien(mob/living/user)
attack_generic(user, 15)
/obj/structure/clockwork/attack_animal(mob/living/simple_animal/M)
if(!M.melee_damage_upper)
return
attack_generic(M, M.melee_damage_upper, M.melee_damage_type)
/obj/structure/clockwork/attack_slime(mob/living/simple_animal/slime/user)
if(!user.is_adult)
return
attack_generic(user, rand(10, 15))
/obj/structure/clockwork/attacked_by(obj/item/I, mob/living/user)
if(user.a_intent == "harm" && user.Adjacent(I) && I.force && takes_damage)
damaged(user, I, I.force, I.damtype)
else
return ..()
if(I.force && takes_damage)
damaged(user, I.force, I.damtype)
playsound(src, I.hitsound, 50, 1)
return ..()
/obj/structure/clockwork/mech_melee_attack(obj/mecha/M)
if(..())
take_damage(M.force, M.damtype)
/obj/structure/clockwork/cache //Tinkerer's cache: Stores components for later use.
name = "tinkerer's cache"
@@ -207,7 +227,7 @@
max_health = 25
construction_value = 15
break_message = "<span class='warning'>The warden's eye gives a glare of utter hate before falling dark!</span>"
debris = list(/obj/item/clockwork/component/replicant_alloy/blind_eye)
debris = list(/obj/item/clockwork/component/belligerent_eye/blind_eye)
var/damage_per_tick = 3
var/sight_range = 3
var/mob/living/target
@@ -472,6 +492,23 @@
else
icon_state = "[initial(icon_state)]_inactive"
/obj/structure/clockwork/wall_gear
name = "massive gear"
icon_state = "wall_gear"
climbable = TRUE
desc = "A massive brass gear."
clockwork_desc = "A massive brass gear that could possibly be proselytized into replicant alloy."
break_message = "<span class='warning'>The gear breaks apart into shards of alloy!</span>"
debris = list(/obj/item/clockwork/alloy_shards)
/obj/structure/clockwork/wall_gear/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/wrench))
anchored = !anchored
user.visible_message("<span class='notice'>[user] [anchored ? "":"un"]anchors [src] from the floor.</span>", \
"<span class='notice'>You [anchored ? "":"un"]anchors [src] from the floor.</span>")
return 1
return ..()
///////////////////////
// CLOCKWORK EFFECTS //
///////////////////////
@@ -672,7 +709,7 @@
desc = "A strange set of markings drawn on the ground."
clockwork_desc = "A sigil of some purpose."
icon_state = "sigil"
alpha = 25
alpha = 30
var/affects_servants = FALSE
/obj/effect/clockwork/sigil/attack_hand(mob/user)
@@ -698,6 +735,7 @@
desc = "A dull, barely-visible golden sigil. It's as though light was carved into the ground."
icon = 'icons/effects/clockwork_effects.dmi'
clockwork_desc = "A sigil that will stun the first non-servant to cross it. Nar-Sie's dogs will be knocked down."
icon_state = "sigildull"
color = rgb(255, 255, 0)
/obj/effect/clockwork/sigil/transgression/sigil_effects(mob/living/L)
@@ -712,6 +750,7 @@
L.adjustBruteLoss(10)
L.Weaken(5)
L.Stun(5)
PoolOrNew(/obj/effect/overlay/temp/ratvar/transgression, get_turf(src))
qdel(src)
return 1
@@ -719,8 +758,9 @@
name = "ominous sigil"
desc = "A brilliant golden sigil. Something about it really bothers you."
clockwork_desc = "A sigil that will enslave the first person to cross it, provided they do not move and they stand still for a brief time."
icon_state = "sigilsubmission"
color = rgb(255, 255, 0)
alpha = 75
alpha = 100
/obj/effect/clockwork/sigil/submission/sigil_effects(mob/living/L)
visible_message("<span class='warning'>[src] begins to glow a piercing magenta!</span>")
@@ -746,8 +786,9 @@
name = "suspicious sigil"
desc = "A barely-visible sigil. Things seem a bit quieter around it."
clockwork_desc = "A sigil that will listen for and transmit anything it hears."
icon_state = "sigiltransmission"
color = rgb(75, 75, 75)
alpha = 50
alpha = 60
flags = HEAR
languages = ALL
+1
View File
@@ -4,6 +4,7 @@
icon_state = "arcade"
icon_keyboard = null
icon_screen = "invaders"
clockwork = TRUE //it'd look weird
var/list/prizes = list(
/obj/item/weapon/storage/box/snappops = 2,
/obj/item/toy/talking/AI = 2,
+2
View File
@@ -147,6 +147,7 @@
network = list("thunder")
density = 0
circuit = null
clockwork = TRUE //it'd look very weird
/obj/machinery/computer/security/telescreen/update_icon()
icon_state = initial(icon_state)
@@ -169,6 +170,7 @@
icon_state = "television"
icon_keyboard = null
icon_screen = "detective_tv"
clockwork = TRUE //it'd look weird
/obj/machinery/computer/security/mining
+17 -1
View File
@@ -13,6 +13,7 @@
var/icon_keyboard = "generic_key"
var/icon_screen = "generic"
var/computer_health = 25
var/clockwork = FALSE
/obj/machinery/computer/New(location, obj/item/weapon/circuitboard/C)
..(location)
@@ -53,6 +54,21 @@
if(3)
take_damage(rand(10,30), BRUTE, 0)
/obj/machinery/computer/ratvar_act()
if(!clockwork && prob(20))
clockwork = TRUE
icon_screen = "ratvar[rand(1, 4)]"
icon_keyboard = "ratvar_key[rand(1, 6)]"
icon_state = "ratvarcomputer[rand(1, 4)]"
update_icon()
/obj/machinery/computer/narsie_act()
if(clockwork && clockwork != initial(clockwork) && prob(20)) //if it's clockwork but isn't normally clockwork
clockwork = FALSE
icon_screen = initial(icon_screen)
icon_keyboard = initial(icon_keyboard)
icon_state = initial(icon_state)
update_icon()
/obj/machinery/computer/bullet_act(obj/item/projectile/P)
take_damage(P.damage, P.damage_type, 0)
@@ -84,7 +100,7 @@
user << "<span class='notice'> You start to disconnect the monitor...</span>"
if(do_after(user, 20/I.toolspeed, target = src))
deconstruction()
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer( src.loc )
var/obj/structure/frame/computer/A = new /obj/structure/frame/computer(src.loc)
A.circuit = circuit
A.anchored = 1
circuit = null
+1
View File
@@ -609,3 +609,4 @@
icon_state = "laptop"
icon_screen = "medlaptop"
icon_keyboard = "laptop_key"
clockwork = TRUE //it'd look weird
@@ -8,6 +8,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F
icon_state = "tcstation"
icon_keyboard = "tcstation_key"
icon_screen = "syndie"
clockwork = TRUE //it'd look weird, at least if ratvar ever got there
/////////////////////////////////////////////
/obj/machinery/computer/telecrystals/uplinker
+8
View File
@@ -122,6 +122,14 @@ var/list/airlock_overlays = list()
PoolOrNew(/obj/effect/overlay/temp/cult/door/unruned, T)
qdel(src)
/obj/machinery/door/airlock/ratvar_act() //Airlocks become pinion airlocks that only allow servants
if(prob(20))
if(glass)
new/obj/machinery/door/airlock/clockwork/brass(get_turf(src))
else
new/obj/machinery/door/airlock/clockwork(get_turf(src))
qdel(src)
/obj/machinery/door/airlock/Destroy()
qdel(wires)
wires = null
+8 -1
View File
@@ -395,6 +395,9 @@
PoolOrNew(/obj/effect/overlay/temp/ratvar/door, T)
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/door, T)
/obj/machinery/door/airlock/clockwork/ratvar_act()
return 0
/obj/machinery/door/airlock/clockwork/attackby(obj/item/I, mob/living/user, params)
if(!attempt_construction(I, user))
return ..()
@@ -461,11 +464,15 @@
apart!</span>")
playsound(src, 'sound/items/Deconstruct.ogg', 50, 1)
new/obj/item/clockwork/component/replicant_alloy(get_turf(src))
new/obj/item/clockwork/component/replicant_alloy/pinion_lock(get_turf(src))
new/obj/item/clockwork/component/vanguard_cogwheel/pinion_lock(get_turf(src))
qdel(src)
return 1
return 0
/obj/machinery/door/airlock/clockwork/brass
glass = 1
opacity = 0
#undef GEAR_SECURE
#undef GEAR_UNFASTENED
#undef GEAR_LOOSE
+3
View File
@@ -186,6 +186,9 @@
/obj/machinery/door/window/narsie_act()
color = "#7D1919"
/obj/machinery/door/window/ratvar_act()
qdel(src) //TODO clockwork windoors
/obj/machinery/door/window/bullet_act(obj/item/projectile/P)
. = ..()
take_damage(round(P.damage / 2), P.damage_type, 0)
+32 -1
View File
@@ -148,6 +148,12 @@
/obj/effect/overlay/temp/ratvar/beam/door
layer = CLOSED_FIREDOOR_LAYER //above closed doors
/obj/effect/overlay/temp/ratvar/beam/grille
layer = LOW_ITEM_LAYER //above grilles
/obj/effect/overlay/temp/ratvar/beam/itemconsume
layer = HIGH_OBJ_LAYER
/obj/effect/overlay/temp/ratvar/wall
icon_state = "ratvarwallglow"
@@ -156,11 +162,36 @@
/obj/effect/overlay/temp/ratvar/window
icon_state = "ratvarwindowglow"
layer = ABOVE_OBJ_LAYER //To be above the window it creates
layer = ABOVE_WINDOW_LAYER //above windows
/obj/effect/overlay/temp/ratvar/grille
icon_state = "ratvargrilleglow"
layer = LOW_ITEM_LAYER //above grilles
/obj/effect/overlay/temp/ratvar/grille/broken
icon_state = "ratvarbrokengrilleglow"
/obj/effect/overlay/temp/ratvar/window/single
icon_state = "ratvarwindowglow_s"
/obj/effect/overlay/temp/ratvar/spearbreak
icon = 'icons/effects/64x64.dmi'
icon_state = "ratvarspearbreak"
pixel_y = -16
pixel_x = -16
/obj/effect/overlay/temp/ratvar/transgression
icon = 'icons/effects/clockwork_effects.dmi'
icon_state = "sigildull"
color = "#FAE48C"
duration = 40
/obj/effect/overlay/temp/ratvar/transgression/New()
..()
var/oldtransform = transform
animate(src, transform = matrix()*2, time = 5)
animate(transform = oldtransform, alpha = 0, time = 25)
/obj/effect/overlay/temp/revenant
name = "spooky lights"
icon_state = "purplesparkles"
+43 -4
View File
@@ -23,6 +23,13 @@
else
take_damage(rand(5,10), BRUTE, 0)
/obj/structure/grille/ratvar_act()
if(destroyed)
new /obj/structure/grille/ratvar/broken(src.loc)
else
new /obj/structure/grille/ratvar(src.loc)
qdel(src)
/obj/structure/grille/blob_act(obj/effect/blob/B)
qdel(src)
@@ -113,7 +120,7 @@
..()
/obj/structure/grille/proc/Break()
icon_state = "brokengrille"
icon_state = "broken[initial(icon_state)]"
density = 0
destroyed = 1
stored.amount = 1
@@ -143,7 +150,7 @@
health = 10
density = 1
destroyed = 0
icon_state = "grille"
icon_state = initial(icon_state)
R.use(1)
return
@@ -260,11 +267,43 @@
return 0
/obj/structure/grille/broken // Pre-broken grilles for map placement
icon_state = "brokengrille"
density = 0
health = 0
destroyed = 1
/obj/structure/grille/broken/New()
..()
stored.amount = 1
stored.amount = 1
icon_state = "brokengrille"
/obj/structure/grille/ratvar
icon_state = "ratvargrille"
desc = "A strangely-shaped grille."
/obj/structure/grille/ratvar/New()
..()
if(destroyed)
PoolOrNew(/obj/effect/overlay/temp/ratvar/grille/broken, get_turf(src))
else
PoolOrNew(/obj/effect/overlay/temp/ratvar/grille, get_turf(src))
PoolOrNew(/obj/effect/overlay/temp/ratvar/beam/grille, get_turf(src))
/obj/structure/grille/ratvar/narsie_act()
take_damage(rand(2, 7), BURN)
if(src)
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
/obj/structure/grille/ratvar/ratvar_act()
return
/obj/structure/grille/ratvar/broken
density = 0
health = 0
destroyed = 1
/obj/structure/grille/ratvar/broken/New()
..()
stored.amount = 1
icon_state = "brokenratvargrille"
@@ -73,6 +73,16 @@
else
return ..()
/obj/structure/table_frame/narsie_act()
if(prob(20))
new /obj/structure/table_frame/wood(src.loc)
qdel(src)
/obj/structure/table_frame/ratvar_act()
if(prob(20))
new /obj/structure/table_frame/brass(src.loc)
qdel(src)
/*
* Wooden Frames
*/
@@ -109,3 +119,16 @@
qdel(src)
else
return ..()
/obj/structure/table_frame/brass
name = "brass table frame"
desc = "Four pieces of brass arranged in a square. It's slightly warm to the touch."
icon_state = "brass_frame"
framestackamount = 0
/obj/structure/table_frame/brass/narsie_act()
..()
if(src) //do we still exist?
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
@@ -61,6 +61,10 @@
if(prob(20))
new /obj/structure/table/wood(src.loc)
/obj/structure/table/ratvar_act()
if(prob(20))
new /obj/structure/table/reinforced/brass(src.loc)
/obj/structure/table/mech_melee_attack(obj/mecha/M)
playsound(src.loc, 'sound/weapons/punch4.ogg', 50, 1)
visible_message("<span class='danger'>[M.name] smashes [src]!</span>")
@@ -366,6 +370,27 @@
else
return ..()
/obj/structure/table/reinforced/brass
name = "brass table"
desc = "A solid, slightly beveled brass table."
icon = 'icons/obj/smooth_structures/brass_table.dmi'
icon_state = "brass_table"
frame = /obj/structure/table_frame/brass
canSmoothWith = list(/obj/structure/table/reinforced/brass)
/obj/structure/table/reinforced/brass/table_destroy()
qdel(src)
/obj/structure/table/reinforced/brass/narsie_act()
..()
if(src) //do we still exist?
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
/obj/structure/table/reinforced/brass/ratvar_act()
health = initial(health)
return
/*
* Surgery Tables
+23 -2
View File
@@ -73,6 +73,13 @@
for(var/obj/item/weapon/shard/shard in debris)
shard.color = NARSIE_WINDOW_COLOUR
/obj/structure/window/ratvar_act()
if(!fulltile)
new/obj/structure/window/reinforced/clockwork(get_turf(src), dir)
else
new/obj/structure/window/reinforced/clockwork/fulltile(get_turf(src))
qdel(src)
/obj/structure/window/singularity_pull(S, current_size)
if(current_size >= STAGE_FIVE)
shatter()
@@ -492,10 +499,11 @@
opacity = TRUE
/obj/structure/window/reinforced/clockwork
name = "ratvarian window"
name = "brass window"
desc = "A paper-thin pane of translucent yet reinforced brass."
icon = 'icons/obj/clockwork_objects.dmi'
icon = 'icons/obj/smooth_structures/clockwork_window.dmi'
icon_state = "clockwork_window_single"
maxhealth = 100
/obj/structure/window/reinforced/clockwork/New(loc, direct)
..()
@@ -511,9 +519,22 @@
qdel(I)
debris += new/obj/item/clockwork/component/vanguard_cogwheel(src)
/obj/structure/window/reinforced/clockwork/ratvar_act()
health = maxhealth
update_icon()
return 0
/obj/structure/window/reinforced/clockwork/narsie_act()
take_damage(rand(15, 45), BURN)
if(src)
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
/obj/structure/window/reinforced/clockwork/fulltile
icon_state = "clockwork_window"
smooth = SMOOTH_TRUE
canSmoothWith = null
fulltile = 1
dir = 5
maxhealth = 150
+4
View File
@@ -180,6 +180,10 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
if(prob(20))
ChangeTurf(/turf/open/floor/engine/cult)
/turf/open/floor/ratvar_act()
if(prob(20))
ChangeTurf(/turf/open/floor/clockwork)
/turf/open/floor/can_have_cabling()
return !burnt && !broken
@@ -147,3 +147,13 @@
make_plating()
return 1
return ..()
/turf/open/floor/clockwork/ratvar_act()
return 0
/turf/open/floor/clockwork/narsie_act()
..()
if(istype(src, /turf/open/floor/clockwork)) //if we haven't changed type
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
@@ -159,6 +159,13 @@
/turf/open/floor/engine/cult/narsie_act()
return
/turf/open/floor/engine/cult/ratvar_act()
..()
if(istype(src, /turf/open/floor/engine/cult)) //if we haven't changed type
var/previouscolor = color
color = "#FAE48C"
animate(src, color = previouscolor, time = 8)
/turf/open/floor/engine/singularity_pull(S, current_size)
if(current_size >= STAGE_FIVE)
if(builtin_tile)
+4
View File
@@ -255,5 +255,9 @@
if(prob(20))
ChangeTurf(/turf/closed/wall/mineral/cult)
/turf/closed/wall/ratvar_act()
if(prob(20))
ChangeTurf(/turf/closed/wall/clockwork)
/turf/closed/wall/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user)
return 0
+39 -4
View File
@@ -21,6 +21,13 @@
/turf/closed/wall/mineral/cult/narsie_act()
return
/turf/closed/wall/mineral/cult/ratvar_act()
..()
if(istype(src, /turf/closed/wall/mineral/cult)) //if we haven't changed type
var/previouscolor = color
color = "#FAE48C"
animate(src, color = previouscolor, time = 8)
/turf/closed/wall/mineral/cult/artificer
name = "runed stone wall"
desc = "A cold stone wall engraved with indecipherable symbols. Studying them causes your head to pound."
@@ -72,16 +79,44 @@
if(!WT.remove_fuel(1, user))
return 0
user.visible_message("<span class='notice'>[user] breaks apart [src]!</span>", "<span class='notice'>You break apart [src]!</span>")
break_wall()
dismantle_wall()
return 1
return ..()
/turf/closed/wall/clockwork/ratvar_act()
return 0
/turf/closed/wall/clockwork/narsie_act()
..()
if(istype(src, /turf/closed/wall/clockwork)) //if we haven't changed type
var/previouscolor = color
color = "#960000"
animate(src, color = previouscolor, time = 8)
/turf/closed/wall/clockwork/dismantle_wall(devastated=0, explode=0)
if(devastated)
devastate_wall()
ChangeTurf(/turf/open/floor/plating)
else
playsound(src, 'sound/items/Welder.ogg', 100, 1)
var/newgirder = break_wall()
if(newgirder) //maybe we don't /want/ a girder!
transfer_fingerprints_to(newgirder)
ChangeTurf(/turf/open/floor/clockwork)
for(var/obj/O in src.contents) //Eject contents!
if(istype(O,/obj/structure/sign/poster))
var/obj/structure/sign/poster/P = O
P.roll_and_drop(src)
else
O.loc = src
/turf/closed/wall/clockwork/break_wall()
new/obj/item/clockwork/component/replicant_alloy(get_turf(src))
return(new /obj/structure/girder(src))
return new/obj/structure/clockwork/wall_gear(src)
/turf/closed/wall/clockwork/devastate_wall()
return break_wall()
new/obj/item/clockwork/alloy_shards(src)
/turf/closed/wall/vault
icon = 'icons/turf/walls.dmi'
+1
View File
@@ -25,6 +25,7 @@
var/category = "Any"
var/author
var/SQLquery
clockwork = TRUE //it'd look weird
/obj/machinery/computer/libraryconsole/attack_hand(mob/user)
if(..())
+13 -3
View File
@@ -109,19 +109,29 @@ var/list/image/ghost_images_simple = list() //this is a list of all ghost images
animate(src, pixel_y = 2, time = 10, loop = -1)
..()
/mob/dead/observer/narsie_act()
var/old_color = color
color = "#96000"
animate(src, color = old_color, time = 10)
/mob/dead/observer/ratvar_act()
var/old_color = color
color = "#FAE48C"
animate(src, color = old_color, time = 10)
/mob/dead/observer/Destroy()
ghost_images_full -= ghostimage
qdel(ghostimage)
ghostimage = null
ghost_images_default -= ghostimage_default
qdel(ghostimage_default)
ghostimage_default = null
ghost_images_simple -= ghostimage_simple
qdel(ghostimage_simple)
ghostimage_simple = null
updateallghostimages()
return ..()
+7
View File
@@ -787,6 +787,13 @@ Sorry Giacom. Please don't be mad :(
gib()
return
/mob/living/ratvar_act()
if(!add_servant_of_ratvar(src) && !is_servant_of_ratvar(src))
src << "<span class='userdanger'>A blinding light boils you alive! <i>Run!</i></span>"
adjustFireLoss(35)
if(src)
adjust_fire_stacks(1)
IgniteMob()
/atom/movable/proc/do_attack_animation(atom/A, end_pixel_y)
var/pixel_x_diff = 0
+1
View File
@@ -369,6 +369,7 @@
icon = 'icons/obj/terminals.dmi'
icon_state = "dorm_available"
density = 0
clockwork = TRUE //it'd look weird
/obj/machinery/computer/shuttle/pod/update_icon()
return
+1
View File
@@ -28,6 +28,7 @@
req_access = list(access_syndicate)
shuttleId = "steel_rain"
possible_destinations = null
clockwork = TRUE //it'd look weird
/obj/machinery/computer/shuttle/syndicate/drop_pod/Topic(href, href_list)
if(href_list["move"])
+1
View File
@@ -6,6 +6,7 @@
icon_keyboard = "no_keyboard"
var/logged_in = "Cargo Department"
var/vmode = 1
clockwork = TRUE //it'd look weird
/obj/machinery/computer/stockexchange/New()
..()
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

After

Width:  |  Height:  |  Size: 427 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

After

Width:  |  Height:  |  Size: 116 KiB