Addition Ratvar conversion effects and related changes
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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(..())
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"])
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 422 KiB After Width: | Height: | Size: 427 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 882 B |
|
After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |