Merge remote-tracking branch 'upstream/master' into tg_machinery_port
@@ -118,5 +118,8 @@
|
||||
#define SPLASHSCREEN_LAYER 23
|
||||
#define SPLASHSCREEN_PLANE 23
|
||||
|
||||
// This should always be on top.
|
||||
#define HUD_PLANE_BUILDMODE 30
|
||||
|
||||
///Plane master controller keys
|
||||
#define PLANE_MASTERS_GAME "plane_masters_game"
|
||||
|
||||
@@ -176,8 +176,3 @@
|
||||
//1 = standard hud
|
||||
//2 = reduced hud (just hands and intent switcher)
|
||||
//3 = no hud (for screenshots)
|
||||
|
||||
|
||||
#define HUD_LAYER_SCREEN 20
|
||||
|
||||
#define HUD_LAYER_BUILDMODE 30
|
||||
|
||||
@@ -62,7 +62,7 @@ SUBSYSTEM_DEF(mapping)
|
||||
log_startup_progress("Populating lavaland...")
|
||||
var/lavaland_setup_timer = start_watch()
|
||||
seedRuins(list(level_name_to_num(MINING)), GLOB.configuration.ruins.lavaland_ruin_budget, /area/lavaland/surface/outdoors/unexplored, GLOB.lava_ruins_templates)
|
||||
spawn_rivers(list(level_name_to_num(MINING)))
|
||||
spawn_rivers(level_name_to_num(MINING))
|
||||
log_startup_progress("Successfully populated lavaland in [stop_watch(lavaland_setup_timer)]s.")
|
||||
|
||||
// Now we make a list of areas for teleport locs
|
||||
|
||||
@@ -36,6 +36,14 @@
|
||||
if(prob(2))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up butterflies!</span>", \
|
||||
"<span class='userdanger'>You cough up butterflies!</span>")
|
||||
new /mob/living/simple_animal/butterfly(affected_mob.loc)
|
||||
new /mob/living/simple_animal/butterfly(affected_mob.loc)
|
||||
return
|
||||
for(var/i in 1 to 2)
|
||||
var/mob/living/simple_animal/butterfly/B = new(affected_mob.loc)
|
||||
addtimer(CALLBACK(B, /mob/living/simple_animal/butterfly/.proc/decompose), rand(5, 25) SECONDS)
|
||||
|
||||
/**
|
||||
* Made so severe anxiety does not overload the SSmob while keeping it's effect
|
||||
*/
|
||||
/mob/living/simple_animal/butterfly/proc/decompose()
|
||||
visible_message("<span class='notice'>[src] decomposes due to being outside of its original habitat for too long!</span>",
|
||||
"<span class='userdanger'>You decompose for being too long out of your habitat!</span>")
|
||||
melt()
|
||||
|
||||
@@ -49,6 +49,18 @@
|
||||
..()
|
||||
D.set_light(4)
|
||||
|
||||
/datum/dog_fashion/head/hardhat
|
||||
name = "Engineer REAL_NAME"
|
||||
desc = "Trust him, he's an engineer."
|
||||
|
||||
/datum/dog_fashion/head/hardhat/white
|
||||
name = "Chief engineer REAL_NAME"
|
||||
desc = "Hasn't delamed the engine once."
|
||||
|
||||
/datum/dog_fashion/head/hardhat/red
|
||||
name = "Fire chief REAL_NAME"
|
||||
desc = "Some days you're the dog, some days you're the hydrant."
|
||||
|
||||
/datum/dog_fashion/head/helmet
|
||||
name = "Sergeant REAL_NAME"
|
||||
desc = "The ever-loyal, the ever-vigilant."
|
||||
|
||||
@@ -558,11 +558,12 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
||||
if(((!user.mind) || !(src in user.mind.spell_list)) && !(src in user.mob_spell_list))
|
||||
if(show_message)
|
||||
to_chat(user, "<span class='warning'>You shouldn't have this spell! Something's wrong.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
if(is_admin_level(T.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel
|
||||
return 0
|
||||
if(!centcom_cancast) //Certain spells are not allowed on the centcom zlevel
|
||||
var/turf/T = get_turf(user)
|
||||
if(T && is_admin_level(T.z))
|
||||
return FALSE
|
||||
|
||||
if(!holy_area_cancast && user.holy_check())
|
||||
return FALSE
|
||||
@@ -573,21 +574,21 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell))
|
||||
if(charge_counter < charge_max)
|
||||
if(show_message)
|
||||
to_chat(user, still_recharging_msg)
|
||||
return 0
|
||||
return FALSE
|
||||
if("charges")
|
||||
if(!charge_counter)
|
||||
if(show_message)
|
||||
to_chat(user, "<span class='notice'>[name] has no charges left.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!ghost)
|
||||
if(user.stat && !stat_allowed)
|
||||
if(show_message)
|
||||
to_chat(user, "<span class='notice'>You can't cast this spell while incapacitated.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(ishuman(user) && (invocation_type == "whisper" || invocation_type == "shout") && user.is_muzzled())
|
||||
if(show_message)
|
||||
to_chat(user, "Mmmf mrrfff!")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -56,8 +56,7 @@
|
||||
qdel(holder)
|
||||
if(!QDELETED(target))
|
||||
if(mobloc.density)
|
||||
for(var/direction in GLOB.alldirs)
|
||||
var/turf/T = get_step(mobloc, direction)
|
||||
for(var/turf/T in orange(7))
|
||||
if(T)
|
||||
if(target.Move(T))
|
||||
break
|
||||
|
||||
@@ -948,11 +948,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
V.Grant(ghost)
|
||||
//GM.Grant(ghost)
|
||||
while(!QDELETED(user))
|
||||
if(!(user in T))
|
||||
user.visible_message("<span class='warning'>A spectral tendril wraps around [user] and pulls [user.p_them()] back to the rune!</span>")
|
||||
Beam(user, icon_state = "drainbeam", time = 2)
|
||||
user.forceMove(get_turf(src)) //NO ESCAPE :^)
|
||||
if(user.key)
|
||||
if(user.key || QDELETED(src))
|
||||
user.visible_message("<span class='warning'>[user] slowly relaxes, the glow around [user.p_them()] dimming.</span>",
|
||||
"<span class='danger'>You are re-united with your physical form. [src] releases its hold over you.</span>")
|
||||
user.Weaken(3)
|
||||
@@ -960,12 +956,16 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
if(user.health <= 10)
|
||||
to_chat(ghost, "<span class='cultitalic'>Your body can no longer sustain the connection!</span>")
|
||||
break
|
||||
if(!(user in T))
|
||||
user.visible_message("<span class='warning'>A spectral tendril wraps around [user] and pulls [user.p_them()] back to the rune!</span>")
|
||||
Beam(user, icon_state = "drainbeam", time = 2)
|
||||
user.forceMove(get_turf(src)) //NO ESCAPE :^)
|
||||
sleep(5)
|
||||
CM.Remove(ghost)
|
||||
V.Remove(ghost)
|
||||
//GM.Remove(ghost)
|
||||
if(user.grab_ghost())
|
||||
CM.Remove(ghost)
|
||||
V.Remove(ghost)
|
||||
//GM.Remove(ghost)
|
||||
user.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED)
|
||||
user.grab_ghost()
|
||||
user = null
|
||||
rune_in_use = FALSE
|
||||
|
||||
|
||||
@@ -123,7 +123,7 @@ Made by Xhuis
|
||||
..()
|
||||
|
||||
/datum/game_mode/proc/greet_shadow(datum/mind/shadow)
|
||||
to_chat(shadow.current, "<b>Currently, you are disguised as an employee aboard [world.name].</b>")
|
||||
to_chat(shadow.current, "<b>Currently, you are disguised as an employee aboard [station_name()].</b>")
|
||||
to_chat(shadow.current, "<b>In your limited state, you have two abilities: Hatch and Shadowling Hivemind (:8).</b>")
|
||||
to_chat(shadow.current, "<b>Any other shadowlings are your allies. You must assist them as they shall assist you.</b>")
|
||||
to_chat(shadow.current, "<span class='motd'>For more information, check the wiki page: ([GLOB.configuration.url.wiki_url]/index.php/Shadowling)</span>")
|
||||
|
||||
@@ -145,8 +145,8 @@
|
||||
/datum/theft_objective/supermatter_sliver
|
||||
name = "a supermatter sliver"
|
||||
typepath = /obj/item/nuke_core/supermatter_sliver
|
||||
protected_jobs = list("Chief Engineer", "Engineer", "Atmospheric Technician") //Unlike other steal objectives, all jobs in the department have easy access, and would not be noticed at all stealing this
|
||||
location_override = "Engineering. You can use the box and instructions provided to harvest the sliver"
|
||||
protected_jobs = list("Chief Engineer", "Station Engineer", "Life Support Specialist") //Unlike other steal objectives, all jobs in the department have easy access, and would not be noticed at all stealing this
|
||||
location_override = "Engineering. You can use the box and instructions provided to harvest the sliver."
|
||||
special_equipment = /obj/item/storage/box/syndie_kit/supermatter
|
||||
job_possession = FALSE //The CE / engineers / atmos techs do not carry around supermater slivers.
|
||||
|
||||
|
||||
@@ -218,9 +218,13 @@
|
||||
|
||||
/obj/effect/proc_holder/spell/vampire/mob_aoe/glare/cast(list/targets, mob/user = usr)
|
||||
user.visible_message("<span class='warning'>[user]'s eyes emit a blinding flash!</span>")
|
||||
if(istype(user:glasses, /obj/item/clothing/glasses/sunglasses/blindfold))
|
||||
to_chat(user, "<span class='warning'>You're blindfolded!</span>")
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/sunglasses/blindfold))
|
||||
var/obj/item/clothing/glasses/sunglasses/blindfold/B = H.glasses
|
||||
if(B.tint)
|
||||
to_chat(user, "<span class='warning'>You're blindfolded!</span>")
|
||||
return
|
||||
for(var/mob/living/target in targets)
|
||||
if(!affects(target))
|
||||
continue
|
||||
@@ -453,8 +457,7 @@
|
||||
flick("mist_reappear", animation)
|
||||
sleep(5)
|
||||
if(!user.Move(mobloc))
|
||||
for(var/direction in list(1,2,4,8,5,6,9,10))
|
||||
var/turf/T = get_step(mobloc, direction)
|
||||
for(var/turf/T in orange(7, mobloc))
|
||||
if(T)
|
||||
if(user.Move(T))
|
||||
break
|
||||
|
||||
@@ -851,10 +851,16 @@ About the new airlock wires panel:
|
||||
/obj/machinery/door/airlock/proc/toggle_bolt(mob/user)
|
||||
if(wires.is_cut(WIRE_DOOR_BOLTS))
|
||||
to_chat(user, "<span class='warning'>The door bolt control wire has been cut - Door bolts permanently dropped.</span>")
|
||||
else if(lock())
|
||||
to_chat(user, "<span class='notice'>The door bolts have been dropped.</span>")
|
||||
else if(unlock())
|
||||
return
|
||||
|
||||
if(unlock()) // Trying to unbolt
|
||||
to_chat(user, "<span class='notice'>The door bolts have been raised.</span>")
|
||||
return
|
||||
|
||||
if(lock()) // Trying to bolt
|
||||
to_chat(user, "<span class='notice'>The door bolts have been dropped.</span>")
|
||||
user.create_log(MISC_LOG, "Bolted", src)
|
||||
add_hiddenprint(user)
|
||||
|
||||
/obj/machinery/door/airlock/proc/toggle_emergency_status(mob/user)
|
||||
emergency = !emergency
|
||||
|
||||
@@ -16,12 +16,21 @@
|
||||
GLOBAL_LIST_INIT(metal_recipes, list(
|
||||
new /datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("barstool", /obj/structure/chair/stool/bar, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("chair (dark)", /obj/structure/chair, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("chair (light)", /obj/structure/chair/light, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("shuttle seat", /obj/structure/chair/comfy/shuttle, 2, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe_list("sofas", list(
|
||||
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, 1, one_per_turf = TRUE, on_floor = TRUE)
|
||||
)), \
|
||||
new /datum/stack_recipe_list("corporate sofas", list( \
|
||||
new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa/corp, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/corp/left, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/corp/right, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corp/corner, 1, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
)), \
|
||||
new /datum/stack_recipe("barber chair", /obj/structure/chair/barber, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("wheelchair", /obj/structure/chair/wheelchair, 15, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = 1, on_floor = 1),
|
||||
@@ -176,6 +185,11 @@ GLOBAL_LIST_INIT(wood_recipes, list(
|
||||
new /datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20),
|
||||
new /datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 10), \
|
||||
new /datum/stack_recipe("wooden chair", /obj/structure/chair/wood, 3, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe_list("pews", list(
|
||||
new /datum/stack_recipe("pew (middle)", /obj/structure/chair/sofa/pew, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("pew (left)", /obj/structure/chair/sofa/pew/left, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
new /datum/stack_recipe("pew (right)", /obj/structure/chair/sofa/pew/right, 1, one_per_turf = TRUE, on_floor = TRUE),
|
||||
)), \
|
||||
new /datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("dresser", /obj/structure/dresser, 30, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
@@ -241,6 +255,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
|
||||
new/datum/stack_recipe("white beanie", /obj/item/clothing/head/beanie, 2), \
|
||||
null, \
|
||||
new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 3), \
|
||||
new/datum/stack_recipe("tattered blindfold", /obj/item/clothing/glasses/sunglasses/blindfold/fake, 2), \
|
||||
))
|
||||
|
||||
/obj/item/stack/sheet/cloth
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
item_state = "plutoniumcore"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
flags_2 = RAD_NO_CONTAMINATE_2 //Don't have the item itself become irradiated when it makes radiation.
|
||||
var/pulse = 0
|
||||
var/cooldown = 0
|
||||
var/pulseicon = "plutonium_core_pulse"
|
||||
|
||||
@@ -49,14 +48,42 @@
|
||||
icon = 'icons/obj/nuke_tools.dmi'
|
||||
icon_state = "core_container_empty"
|
||||
item_state = "metal"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //Don't want people trying to break it open with acid, then destroying the core.
|
||||
var/obj/item/nuke_core/plutonium/core
|
||||
var/dented = FALSE
|
||||
var/cracked = FALSE
|
||||
|
||||
/obj/item/nuke_core_container/Destroy()
|
||||
QDEL_NULL(core)
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/ex_act(severity)
|
||||
switch(severity)
|
||||
if(EXPLODE_DEVASTATE)
|
||||
if(!cracked)
|
||||
crack_open()
|
||||
if(EXPLODE_HEAVY)
|
||||
if(!dented)
|
||||
dented = TRUE
|
||||
|
||||
/obj/item/nuke_core_container/examine(mob/user)
|
||||
. = ..()
|
||||
if(cracked) // Cracked open.
|
||||
. += "<span class='warning'>It is broken, and can no longer store objects safely.</span>"
|
||||
else if(dented) // Not cracked, but dented.
|
||||
. += "<span class='notice'>[src] looks dented. Perhaps a bigger explosion may break it.</span>"
|
||||
else // Not cracked or dented.
|
||||
. += "Fine print on the box reads \"Cybersun Industries secure container, guaranteed thermite proof, assistant proof, and explosive resistant.\""
|
||||
|
||||
/obj/item/nuke_core_container/attack_hand(mob/user)
|
||||
if(cracked && core)
|
||||
unload(user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/nuke_core_container/proc/load(obj/item/nuke_core/plutonium/new_core, mob/user)
|
||||
if(core || !istype(new_core))
|
||||
if(core || !istype(new_core) || cracked)
|
||||
return
|
||||
new_core.forceMove(src)
|
||||
core = new_core
|
||||
@@ -64,6 +91,12 @@
|
||||
to_chat(user, "<span class='warning'>Container is sealing...</span>")
|
||||
addtimer(CALLBACK(src, .proc/seal), 10 SECONDS)
|
||||
|
||||
/obj/item/nuke_core_container/proc/unload(mob/user)
|
||||
core.add_fingerprint(user)
|
||||
user.put_in_active_hand(core)
|
||||
core = null
|
||||
icon_state = "core_container_cracked_empty"
|
||||
|
||||
/obj/item/nuke_core_container/proc/seal()
|
||||
if(!QDELETED(core))
|
||||
STOP_PROCESSING(SSobj, core)
|
||||
@@ -73,7 +106,7 @@
|
||||
to_chat(loc, "<span class='warning'>[src] is permanently sealed, [core]'s radiation is contained.</span>")
|
||||
|
||||
/obj/item/nuke_core_container/attackby(obj/item/nuke_core/plutonium/core, mob/user)
|
||||
if(!istype(core))
|
||||
if(!istype(core) || cracked)
|
||||
return ..()
|
||||
|
||||
if(!user.drop_item())
|
||||
@@ -82,9 +115,20 @@
|
||||
else
|
||||
load(core, user)
|
||||
|
||||
/obj/item/nuke_core_container/proc/crack_open()
|
||||
visible_message("<span class='boldnotice'>[src] bursts open!</span>")
|
||||
if(core)
|
||||
START_PROCESSING(SSobj, core)
|
||||
icon_state = "core_container_cracked_loaded"
|
||||
else
|
||||
icon_state = "core_container_cracked_empty"
|
||||
name = "broken nuke core container"
|
||||
cracked = TRUE
|
||||
|
||||
/obj/item/paper/guides/antag/nuke_instructions
|
||||
info = "How to break into a Nanotrasen nuclear device and remove its plutonium core:<br>\
|
||||
<ul>\
|
||||
<li>Acquire some clothing that protects you from radiation, due to the radioactivity of the core.</li>\
|
||||
<li>Use a screwdriver with a very thin tip (provided) to unscrew the terminal's front panel.</li>\
|
||||
<li>Dislodge and remove the front panel with a crowbar.</li>\
|
||||
<li>Cut the inner metal plate with a welding tool.</li>\
|
||||
@@ -99,7 +143,7 @@
|
||||
/obj/item/paper/guides/antag/supermatter_sliver
|
||||
info = "How to safely extract a supermatter sliver:<br>\
|
||||
<ul>\
|
||||
<li>Approach an active supermatter crystal with radiation shielded personal protective equipment. DO NOT MAKE PHYSICAL CONTACT.</li>\
|
||||
<li>Approach an active supermatter crystal with radiation shielded personal protective equipment, and active magboots. DO NOT MAKE PHYSICAL CONTACT.</li>\
|
||||
<li>Use a supermatter scalpel (provided) to slice off a sliver of the crystal.</li>\
|
||||
<li>Use supermatter extraction tongs (also provided) to safely pick up the sliver you sliced off.</li>\
|
||||
<li>Physical contact of any object with the sliver will dust the object, as well as yourself.</li>\
|
||||
@@ -183,7 +227,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/load(obj/item/retractor/supermatter/I, mob/user)
|
||||
if(!istype(I) || !I.sliver)
|
||||
if(!istype(I) || !I.sliver || sliver)
|
||||
return
|
||||
I.sliver.forceMove(src)
|
||||
sliver = I.sliver
|
||||
@@ -202,13 +246,56 @@
|
||||
if(ismob(loc))
|
||||
to_chat(loc, "<span class='warning'>[src] is permanently sealed, [sliver] is safely contained.</span>")
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/unload(obj/item/retractor/supermatter/I, mob/user)
|
||||
if(!istype(I) || I.sliver)
|
||||
return
|
||||
sliver.forceMove(I)
|
||||
I.sliver = sliver
|
||||
sliver = null
|
||||
I.icon_state = "supermatter_tongs_loaded"
|
||||
I.item_state = "supermatter_tongs_loaded"
|
||||
icon_state = "core_container_cracked_empty"
|
||||
to_chat(user, "<span class='notice'>You carefully pick up [I.sliver] with [I].</span>")
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/attackby(obj/item/retractor/supermatter/tongs, mob/user)
|
||||
if(istype(tongs))
|
||||
//try to load shard into core
|
||||
load(tongs, user)
|
||||
if(cracked)
|
||||
//lets take that shard out
|
||||
unload(tongs, user)
|
||||
else
|
||||
//try to load shard into core
|
||||
load(tongs, user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/attack_hand(mob/user)
|
||||
if(cracked && sliver) //What did we say about touching the shard...
|
||||
if(!isliving(user) || user.status_flags & GODMODE)
|
||||
return FALSE
|
||||
user.visible_message("<span class='danger'>[user] reaches out and tries to pick up [sliver]. [user.p_their()] body starts to glow and bursts into flames before flashing into dust!</span>",
|
||||
"<span class='userdanger'>You reach for [sliver] with your hands. That was dumb.</span>",
|
||||
"<span class='italics'>Everything suddenly goes silent.</span>")
|
||||
radiation_pulse(user, 500, 2)
|
||||
playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE)
|
||||
message_admins("[sliver] has consumed [key_name_admin(user)] [ADMIN_JMP(src)].")
|
||||
investigate_log("has consumed [key_name(user)].", "supermatter")
|
||||
user.dust()
|
||||
icon_state = "core_container_cracked_empty"
|
||||
qdel(sliver)
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/nuke_core_container/supermatter/crack_open()
|
||||
visible_message("<span class='boldnotice'>[src] bursts open!</span>")
|
||||
if(sliver)
|
||||
START_PROCESSING(SSobj, sliver)
|
||||
icon_state = "supermatter_container_cracked_loaded"
|
||||
else
|
||||
icon_state = "core_container_cracked_empty"
|
||||
name = "broken supermatter bin"
|
||||
cracked = TRUE
|
||||
|
||||
/obj/item/scalpel/supermatter
|
||||
name = "supermatter scalpel"
|
||||
desc = "A scalpel with a fragile tip of condensed hyper-noblium gas, searingly cold to the touch, that can safely shave a sliver off a supermatter crystal."
|
||||
@@ -267,6 +354,8 @@
|
||||
investigate_log("has irradiated [key_name(victim)].", "supermatter")
|
||||
else if(istype(AM, /obj/singularity))
|
||||
return
|
||||
else if(istype(AM, /obj/item/nuke_core_container))
|
||||
return
|
||||
else
|
||||
investigate_log("has consumed [AM].", "supermatter")
|
||||
qdel(AM)
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
/obj/item/storage/firstaid/toxin/Initialize(mapload)
|
||||
. = ..()
|
||||
icon_state = pick("antitoxin", "antitoxfirstaid", "antitoxfirstaid2", "antitoxfirstaid3")
|
||||
icon_state = pick("antitoxin", "antitoxfirstaid", "antitoxfirstaid2")
|
||||
|
||||
/obj/item/storage/firstaid/toxin/populate_contents()
|
||||
for(var/I in 1 to 3)
|
||||
|
||||
@@ -137,6 +137,12 @@
|
||||
rotate()
|
||||
|
||||
// Chair types
|
||||
/obj/structure/chair/light
|
||||
name = "chair"
|
||||
icon_state = "chair_greyscale"
|
||||
resistance_flags = FLAMMABLE
|
||||
item_chair = /obj/item/chair/light
|
||||
|
||||
/obj/structure/chair/wood
|
||||
name = "wooden chair"
|
||||
desc = "Old is never too old to not be in fashion."
|
||||
@@ -268,6 +274,33 @@
|
||||
anchored = TRUE
|
||||
item_chair = null
|
||||
buildstackamount = 1
|
||||
var/image/armrest = null
|
||||
|
||||
/obj/structure/chair/sofa/Initialize(mapload)
|
||||
armrest = GetArmrest()
|
||||
armrest.layer = ABOVE_MOB_LAYER
|
||||
return ..()
|
||||
|
||||
/obj/structure/chair/sofa/proc/GetArmrest()
|
||||
return mutable_appearance('icons/obj/chairs.dmi', "[icon_state]_armrest")
|
||||
|
||||
/obj/structure/chair/sofa/Destroy()
|
||||
QDEL_NULL(armrest)
|
||||
return ..()
|
||||
|
||||
/obj/structure/chair/sofa/post_buckle_mob(mob/living/M)
|
||||
. = ..()
|
||||
update_armrest()
|
||||
|
||||
/obj/structure/chair/sofa/post_unbuckle_mob(mob/living/M)
|
||||
. = ..()
|
||||
update_armrest()
|
||||
|
||||
/obj/structure/chair/sofa/proc/update_armrest()
|
||||
if(has_buckled_mobs())
|
||||
add_overlay(armrest)
|
||||
else
|
||||
cut_overlay(armrest)
|
||||
|
||||
/obj/structure/chair/sofa/left
|
||||
icon_state = "sofaend_left"
|
||||
@@ -278,6 +311,31 @@
|
||||
/obj/structure/chair/sofa/corner
|
||||
icon_state = "sofacorner"
|
||||
|
||||
/obj/structure/chair/sofa/corp
|
||||
name = "sofa"
|
||||
desc = "Soft and cushy."
|
||||
icon_state = "corp_sofamiddle"
|
||||
|
||||
/obj/structure/chair/sofa/corp/left
|
||||
icon_state = "corp_sofaend_left"
|
||||
|
||||
/obj/structure/chair/sofa/corp/right
|
||||
icon_state = "corp_sofaend_right"
|
||||
|
||||
/obj/structure/chair/sofa/corp/corner
|
||||
icon_state = "corp_sofacorner"
|
||||
|
||||
/obj/structure/chair/sofa/pew
|
||||
name = "pew"
|
||||
desc = "Rigid and uncomfortable, perfect for keeping you awake and alert."
|
||||
icon_state = "pewmiddle"
|
||||
|
||||
/obj/structure/chair/sofa/pew/left
|
||||
icon_state = "pewend_left"
|
||||
|
||||
/obj/structure/chair/sofa/pew/right
|
||||
icon_state = "pewend_right"
|
||||
|
||||
/obj/structure/chair/stool
|
||||
name = "stool"
|
||||
desc = "Apply butt."
|
||||
@@ -309,6 +367,10 @@
|
||||
var/break_chance = 5 //Likely hood of smashing the chair.
|
||||
var/obj/structure/chair/origin_type = /obj/structure/chair
|
||||
|
||||
/obj/item/chair/light
|
||||
icon_state = "chair_greyscale_toppled"
|
||||
origin_type = /obj/structure/chair/light
|
||||
|
||||
/obj/item/chair/stool
|
||||
name = "stool"
|
||||
icon = 'icons/obj/chairs.dmi'
|
||||
|
||||
@@ -408,6 +408,10 @@
|
||||
return
|
||||
if(!isliving(AM))
|
||||
return
|
||||
var/mob/living/L = AM
|
||||
if(L.incorporeal_move || L.flying || L.floating)
|
||||
return
|
||||
|
||||
// Don't break if they're just flying past
|
||||
if(AM.throwing)
|
||||
addtimer(CALLBACK(src, .proc/throw_check, AM), 5)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/screen/buildmode
|
||||
icon = 'icons/misc/buildmode.dmi'
|
||||
var/datum/click_intercept/buildmode/bd
|
||||
layer = HUD_LAYER_BUILDMODE
|
||||
plane = HUD_PLANE_BUILDMODE
|
||||
|
||||
/obj/screen/buildmode/New(bld)
|
||||
bd = bld
|
||||
|
||||
@@ -395,6 +395,12 @@
|
||||
tint = 3 //to make them blind
|
||||
prescription_upgradable = 0
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/blindfold/fake
|
||||
name = "tattered blindfold"
|
||||
desc = "A see-through blindfold perfect for cheating at games like pin the stunbaton on the clown."
|
||||
flash_protect = 0
|
||||
tint = 0
|
||||
|
||||
/obj/item/clothing/glasses/sunglasses/prescription
|
||||
prescription = 1
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
desc = "WARNING! Offers no real protection, or luminosity, but it is damn fancy!"
|
||||
icon_state = "hardhat0_yellow"
|
||||
item_state = "hardhat0_yellow"
|
||||
dog_fashion = /datum/dog_fashion/head
|
||||
dog_fashion = /datum/dog_fashion/head/hardhat
|
||||
|
||||
/obj/item/clothing/head/collectable/HoS
|
||||
name = "collectable HoS hat"
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
dog_fashion = /datum/dog_fashion/head/hardhat/red
|
||||
|
||||
/obj/item/clothing/head/hardhat/white
|
||||
icon_state = "hardhat0_white"
|
||||
@@ -76,7 +77,7 @@
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
dog_fashion = /datum/dog_fashion/head/hardhat
|
||||
dog_fashion = /datum/dog_fashion/head/hardhat/white
|
||||
|
||||
/obj/item/clothing/head/hardhat/dblue
|
||||
icon_state = "hardhat0_dblue"
|
||||
|
||||
@@ -166,7 +166,7 @@
|
||||
flags = BLOCKHAIR
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
|
||||
dog_fashion = null
|
||||
|
||||
sprite_sheets = list(
|
||||
"Grey" = 'icons/mob/species/grey/head.dmi'
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
name = "meatbread slice"
|
||||
desc = "A slice of delicious meatbread."
|
||||
icon_state = "meatbreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FF7575"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/xenomeatbread
|
||||
@@ -34,7 +33,6 @@
|
||||
name = "xenomeatbread slice"
|
||||
desc = "A slice of delicious meatbread. Extra Heretical."
|
||||
icon_state = "xenobreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#8AFF75"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/spidermeatbread
|
||||
@@ -49,8 +47,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/spidermeatbreadslice
|
||||
name = "spider meat bread slice"
|
||||
desc = "A slice of meatloaf made from an animal that most likely still wants you dead."
|
||||
icon_state = "xenobreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
icon_state = "spidermeatslice"
|
||||
list_reagents = list("toxin" = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/bananabread
|
||||
@@ -67,7 +64,6 @@
|
||||
name = "banana-nut bread slice"
|
||||
desc = "A slice of delicious banana bread."
|
||||
icon_state = "bananabreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#EDE5AD"
|
||||
tastes = list("bread" = 10)
|
||||
|
||||
@@ -85,7 +81,6 @@
|
||||
name = "tofubread slice"
|
||||
desc = "A slice of delicious tofubread."
|
||||
icon_state = "tofubreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#F7FFE0"
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/sliceable/bread
|
||||
@@ -102,7 +97,6 @@
|
||||
name = "bread slice"
|
||||
desc = "A slice of home."
|
||||
icon_state = "breadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#D27332"
|
||||
list_reagents = list("nutriment" = 2, "bread" = 5)
|
||||
tastes = list("bread" = 10)
|
||||
@@ -121,7 +115,6 @@
|
||||
name = "cream cheese bread slice"
|
||||
desc = "A slice of yum!"
|
||||
icon_state = "creamcheesebreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#FFF896"
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
tastes = list("bread" = 10, "cheese" = 10)
|
||||
@@ -140,7 +133,6 @@
|
||||
name = "banarnarbread slice"
|
||||
desc = "A slice of delicious mah'weyh pleggh at e'ntrath!"
|
||||
icon_state = "banarnarbreadslice"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#6F0000"
|
||||
list_reagents = list("nutriment" = 4, "vitamin" = 1)
|
||||
tastes = list("heresy" = 10, "banana" = 10)
|
||||
@@ -171,6 +163,8 @@
|
||||
name = "baguette"
|
||||
desc = "Bon appetit!"
|
||||
icon_state = "baguette"
|
||||
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
||||
filling_color = "#E3D796"
|
||||
bitesize = 3
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
@@ -198,7 +192,6 @@
|
||||
name = "jellied toast"
|
||||
desc = "A slice of bread covered with delicious jam."
|
||||
icon_state = "jellytoast"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#B572AB"
|
||||
bitesize = 3
|
||||
tastes = list("toast" = 1, "jelly" = 1)
|
||||
|
||||
@@ -165,7 +165,6 @@
|
||||
name = "sandwich"
|
||||
desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud."
|
||||
icon_state = "sandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 6, "vitamin" = 1)
|
||||
tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1)
|
||||
@@ -174,7 +173,6 @@
|
||||
name = "toasted sandwich"
|
||||
desc = "Now if you only had a pepper bar."
|
||||
icon_state = "toastedsandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 6, "carbon" = 2)
|
||||
tastes = list("toast" = 1)
|
||||
@@ -183,7 +181,6 @@
|
||||
name = "grilled cheese sandwich"
|
||||
desc = "Goes great with tomato soup!"
|
||||
icon_state = "toastedsandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#D9BE29"
|
||||
list_reagents = list("nutriment" = 7, "vitamin" = 1) //why make a regualr sandwhich when you can make grilled cheese, with this nutriment value?
|
||||
tastes = list("toast" = 1, "grilled cheese" = 1)
|
||||
@@ -192,7 +189,6 @@
|
||||
name = "jelly sandwich"
|
||||
desc = "You wish you had some peanut butter to go with this..."
|
||||
icon_state = "jellysandwich"
|
||||
trash = /obj/item/trash/plate
|
||||
filling_color = "#9E3A78"
|
||||
bitesize = 3
|
||||
tastes = list("toast" = 1, "jelly" = 1)
|
||||
|
||||
@@ -10,6 +10,7 @@ GLOBAL_LIST_EMPTY(fax_blacklist)
|
||||
icon = 'icons/obj/library.dmi'
|
||||
icon_state = "fax"
|
||||
insert_anim = "faxsend"
|
||||
var/receive_anim = "faxsend"
|
||||
pass_flags = PASSTABLE
|
||||
var/fax_network = "Local Fax Network"
|
||||
/// If true, prevents fax machine from sending messages to NT machines
|
||||
@@ -51,11 +52,17 @@ GLOBAL_LIST_EMPTY(fax_blacklist)
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/longrange
|
||||
name = "long range fax machine"
|
||||
icon_state = "longfax"
|
||||
insert_anim = "longfaxsend"
|
||||
receive_anim = "longfaxreceive"
|
||||
fax_network = "Central Command Quantum Entanglement Network"
|
||||
long_range_enabled = TRUE
|
||||
|
||||
/obj/machinery/photocopier/faxmachine/longrange/syndie
|
||||
name = "syndicate long range fax machine"
|
||||
icon_state = "fax"
|
||||
insert_anim = "faxsend"
|
||||
receive_anim = "faxsend"
|
||||
emagged = TRUE
|
||||
syndie_restricted = TRUE
|
||||
req_one_access = list(ACCESS_SYNDICATE)
|
||||
@@ -293,7 +300,7 @@ GLOBAL_LIST_EMPTY(fax_blacklist)
|
||||
if(department == "Unknown")
|
||||
return FALSE //You can't send faxes to "Unknown"
|
||||
|
||||
flick("faxreceive", src)
|
||||
flick(receive_anim, src)
|
||||
|
||||
playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
|
||||
|
||||
|
||||
@@ -471,7 +471,7 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
// Definitions
|
||||
////////////////////////////////
|
||||
|
||||
GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restraints", /obj/item/restraints/handcuffs/cable, 15)))
|
||||
GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restraints("cable restraints", /obj/item/restraints/handcuffs/cable, 15)))
|
||||
|
||||
/obj/item/stack/cable_coil
|
||||
name = "cable coil"
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
var/recharge_counter = 0
|
||||
var/hackedcheck = FALSE
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/image/icon_beaker = null //cached overlay
|
||||
var/list/dispensable_reagents = list("hydrogen", "lithium", "carbon", "nitrogen", "oxygen", "fluorine",
|
||||
"sodium", "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "potassium", "iron",
|
||||
"copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "iodine", "bromine", "silver", "chromium")
|
||||
@@ -130,6 +129,15 @@
|
||||
else
|
||||
stat |= NOPOWER
|
||||
|
||||
/obj/machinery/chem_dispenser/update_icon()
|
||||
if(panel_open)
|
||||
icon_state = "[initial(icon_state)]-o"
|
||||
return
|
||||
if(!powered() && !is_drink)
|
||||
icon_state = "dispenser_nopower"
|
||||
return
|
||||
icon_state = "[initial(icon_state)][beaker ? "_working" : ""]"
|
||||
|
||||
/obj/machinery/chem_dispenser/ex_act(severity)
|
||||
if(severity < 3)
|
||||
if(beaker)
|
||||
@@ -140,7 +148,6 @@
|
||||
..()
|
||||
if(A == beaker)
|
||||
beaker = null
|
||||
overlays.Cut()
|
||||
|
||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
@@ -204,11 +211,6 @@
|
||||
atom_say("Not enough energy to complete operation!")
|
||||
return
|
||||
R.add_reagent(params["reagent"], actual)
|
||||
overlays.Cut()
|
||||
if(!icon_beaker)
|
||||
icon_beaker = mutable_appearance('icons/obj/chemical.dmi', "disp_beaker") //randomize beaker overlay position.
|
||||
icon_beaker.pixel_x = rand(-10, 5)
|
||||
overlays += icon_beaker
|
||||
if("remove")
|
||||
var/amount = text2num(params["amount"])
|
||||
if(!beaker || !amount)
|
||||
@@ -226,7 +228,7 @@
|
||||
if(Adjacent(usr) && !issilicon(usr))
|
||||
usr.put_in_hands(beaker)
|
||||
beaker = null
|
||||
overlays.Cut()
|
||||
update_icon()
|
||||
else
|
||||
return FALSE
|
||||
|
||||
@@ -255,10 +257,7 @@
|
||||
I.forceMove(src)
|
||||
to_chat(user, "<span class='notice'>You set [I] on the machine.</span>")
|
||||
SStgui.update_uis(src) // update all UIs attached to src
|
||||
if(!icon_beaker)
|
||||
icon_beaker = mutable_appearance('icons/obj/chemical.dmi', "disp_beaker") //randomize beaker overlay position.
|
||||
icon_beaker.pixel_x = rand(-10, 5)
|
||||
overlays += icon_beaker
|
||||
update_icon()
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
underlays += filling
|
||||
|
||||
if(!is_open_container())
|
||||
var/image/lid = image(icon, src, "lid_bottle")
|
||||
var/image/lid = image(icon, src, "lid_[icon_state]")
|
||||
overlays += lid
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/decompile_act(obj/item/matter_decompiler/C, mob/user)
|
||||
|
||||
|
Before Width: | Height: | Size: 677 KiB After Width: | Height: | Size: 680 KiB |
|
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 171 KiB After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 507 B After Width: | Height: | Size: 428 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 575 B |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 6.4 KiB |
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 991 B |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |