Emitter: The Emitting (#92327)

## About The Pull Request
Adds Diode Disks, installable disks that when fitted into an emitter can
change its function.
* Healing
* Stamina damage, and heals the SM slightly at the cost of internal
energy
* Traitor engi only explosive that damages and supercharges the SM if
used that way. Firerate is halved.
* Incendiary that slightly damages the SM but has lots of energy
* Sanity damaging one that improves SM psi coeff
* Magnetic item attracting one that improves SM mol absorption.
## Why It's Good For The Game
Fun and unique ways for Engi to use excess power or improve their SM
setups. Could also lead to neat engi inventions such as, say, a circuit
device that aims and fires a healing emitter at anyone nearby who is
damaged. Should also incentivize the researching of useful techs, hence
why important medium tier techs are what lock the different disks.
## Changelog
🆑
add: New Diode Disks which allow you to configurate emitters with
special functions.
add: New Engi & CE exclusive traitor item, a diode disk that causes an
emitter to create low radius explosions when it hits things. Note that
this will reduce the fire-rate of your emitter.
/🆑

---------

Co-authored-by: ThrowawayUseless <notarealemail@emailservice.fake>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
This commit is contained in:
throwawayuseless
2025-08-12 17:42:53 -04:00
committed by GitHub
parent 06f0e4edfa
commit 2a7921d436
15 changed files with 383 additions and 5 deletions

View File

@@ -37,6 +37,26 @@
/obj/effect/projectile/impact/wormhole
icon_state = "wormhole_g"
/obj/effect/projectile/impact/laser/emitter/psy
name = "psychosiphoning impact"
icon_state = "impact_greyscale"
color = COLOR_PINK
/obj/effect/projectile/impact/laser/emitter/magnetic
name = "magnetogenerative impact"
icon_state = "impact_greyscale"
color = COLOR_SILVER
/obj/effect/projectile/impact/laser/emitter/quake
name = "seismodisintegrating impact"
icon_state = "impact_greyscale"
color = COLOR_BROWNER_BROWN
/obj/effect/projectile/impact/laser/emitter/blast
name = "hyperconcussive impact"
icon_state = "impact_greyscale"
color = COLOR_ORANGE
/obj/effect/projectile/impact/laser/emitter
name = "emitter impact"
icon_state = "impact_emitter"

View File

@@ -29,6 +29,26 @@
/obj/effect/projectile/muzzle/wormhole
icon_state = "wormhole_g"
/obj/effect/projectile/muzzle/laser/emitter/psy
name = "psychosiphoning flash"
icon_state = "muzzle_greyscale"
color = COLOR_PINK
/obj/effect/projectile/muzzle/laser/emitter/magnetic
name = "magnetogenerative flash"
icon_state = "muzzle_greyscale"
color = COLOR_SILVER
/obj/effect/projectile/muzzle/laser/emitter/quake
name = "seismodisintegrating flash"
icon_state = "muzzle_greyscale"
color = COLOR_BROWNER_BROWN
/obj/effect/projectile/muzzle/laser/emitter/blast
name = "hyperconcussive flash"
icon_state = "muzzle_greyscale"
color = COLOR_ORANGE
/obj/effect/projectile/muzzle/laser/emitter
name = "emitter flash"
icon_state = "muzzle_emitter"

View File

@@ -58,6 +58,38 @@
name = "emitter beam"
icon_state = "emitter"
/obj/effect/projectile/tracer/laser/emitter/bluelens
name = "electrodisruptive emitter beam"
icon_state = "u_laser"
/obj/effect/projectile/tracer/laser/emitter/redlens
name = "hyperenergetic emitter beam"
icon_state = "beam_heavy"
/obj/effect/projectile/tracer/laser/emitter/bioregen
name = "bioregenerative emitter beam"
icon_state = "solar"
/obj/effect/projectile/tracer/laser/emitter/psy
name = "psychosiphoning emitter beam"
icon_state = "tracer_greyscale"
color = COLOR_PINK
/obj/effect/projectile/tracer/laser/emitter/magnetic
name = "magnetogenerative emitter beam"
icon_state = "tracer_greyscale"
color = COLOR_SILVER
/obj/effect/projectile/tracer/laser/emitter/quake
name = "seismodisintegrating emitter beam"
icon_state = "tracer_greyscale"
color = COLOR_BROWNER_BROWN
/obj/effect/projectile/tracer/laser/emitter/blast
name = "hyperconcussive emitter beam"
icon_state = "tracer_greyscale"
color = COLOR_ORANGE
/obj/effect/projectile/tracer/sniper
icon_state = "sniper"

View File

@@ -27,6 +27,10 @@
var/maximum_fire_delay = 10 SECONDS
///Min delay before firing
var/minimum_fire_delay = 2 SECONDS
///Modifier to the preceeding two numbers
var/fire_rate_mod = 1
///Deactivates the "pause every 3 shots" system
var/no_shot_counter = FALSE
///When was the last shot
var/last_shot = 0
///Number of shots made (gets reset every few shots)
@@ -57,6 +61,8 @@
var/charge = 0
///stores the direction and orientation of the last projectile
var/last_projectile_params
//the disk in the gun
var/obj/item/emitter_disk/diskie
/obj/machinery/power/emitter/Initialize(mapload)
. = ..()
@@ -125,7 +131,7 @@
else if(!powered)
. += span_notice("Its status display is glowing faintly.")
else
. += span_notice("Its status display reads: Emitting one beam between <b>[DisplayTimeText(minimum_fire_delay)]</b> and <b>[DisplayTimeText(maximum_fire_delay)]</b>.")
. += span_notice("Its status display reads: Emitting one beam between <b>[DisplayTimeText(minimum_fire_delay * fire_rate_mod)]</b> and <b>[DisplayTimeText(maximum_fire_delay * fire_rate_mod)]</b>.")
. += span_notice("Power consumption at <b>[display_power(active_power_usage, convert = FALSE)]</b>.")
/obj/machinery/power/emitter/should_have_node()
@@ -246,11 +252,11 @@
projectile.fire(dir2angle(dir))
if(!manual)
last_shot = world.time
if(shot_number < 3)
fire_delay = 20
if(shot_number < 3 || no_shot_counter)
fire_delay = 20 * fire_rate_mod
shot_number ++
else
fire_delay = rand(minimum_fire_delay,maximum_fire_delay)
fire_delay = rand(minimum_fire_delay,maximum_fire_delay) * fire_rate_mod
shot_number = 0
return projectile
@@ -311,6 +317,8 @@
/obj/machinery/power/emitter/crowbar_act(mob/living/user, obj/item/item)
if(panel_open && gun)
return remove_gun(user)
if(panel_open && diskie)
return remove_disk(user)
default_deconstruction_crowbar(item)
return TRUE
@@ -343,8 +351,30 @@
wires.interact(user)
return
if(panel_open && !gun && istype(item,/obj/item/gun/energy))
if(diskie)
to_chat(user, span_warning("Remove the Diode Disk before inserting a gun."))
return
if(integrate(item,user))
return
if(panel_open && !gun && istype(item,/obj/item/emitter_disk))
var/obj/item/emitter_disk/config_disk = item
if(!user.transferItemToLoc(config_disk, src))
balloon_alert(user, "stuck in hand!")
return
if(diskie)
user.put_in_hands(diskie)
balloon_alert(user, "disks swapped!")
else
balloon_alert(user, "disk inserted")
diskie = config_disk
projectile_type = diskie.stored_proj
projectile_sound = diskie.stored_sound
fire_rate_mod = diskie.fire_rate_mod
no_shot_counter = diskie.no_shot_counter
playsound(src, 'sound/machines/card_slide.ogg', 50)
to_chat(user, span_notice("You update the [src]'s diode configuration with the [config_disk]."))
if(diskie.consumable)
qdel(diskie)
return ..()
@@ -371,6 +401,19 @@
set_projectile()
return TRUE
/obj/machinery/power/emitter/proc/remove_disk(mob/user)
if(!diskie)
return
if(diskie.consumed_on_removal)
qdel(diskie)
else
user.put_in_hands(diskie)
diskie = null
playsound(src, 'sound/machines/card_slide.ogg', 50, TRUE)
set_projectile()
return TRUE
/obj/machinery/power/emitter/proc/set_projectile()
if(LAZYLEN(gun_properties))
if(mode || !gun_properties["lethal_projectile"])
@@ -382,6 +425,8 @@
return
projectile_type = initial(projectile_type)
projectile_sound = initial(projectile_sound)
fire_rate_mod = initial(fire_rate_mod)
no_shot_counter = initial(no_shot_counter)
/obj/machinery/power/emitter/emag_act(mob/user, obj/item/card/emag/emag_card)
if(obj_flags & EMAGGED)
@@ -567,3 +612,58 @@
req_access = list("science")
welded = TRUE
use_power = NO_POWER_USE
/obj/item/emitter_disk
name = "/improper Diode Disk: Debugger"
desc = "This disk can be used on an emitter with an open panel to reset its projectile. Unless this was handed to you by an admin, you should report this on github."
icon = 'icons/obj/devices/circuitry_n_data.dmi'
icon_state = "datadisk6"
var/stored_proj = /obj/projectile/beam/emitter/hitscan
var/stored_sound = 'sound/items/weapons/emitter.ogg'
var/consumed_on_removal = TRUE
var/consumable = TRUE
var/fire_rate_mod = 1
var/no_shot_counter = FALSE
/obj/item/emitter_disk/stamina
name = "/improper Diode Disk: Electrodisruptive"
desc = "This disk can be used on an emitter with an open panel to make it shoot lasers which will increase the integrity of supermatter crystals and exhaust living creatures. The disk will be consumed in the process."
stored_proj = /obj/projectile/beam/emitter/hitscan/bluelens
consumed_on_removal = FALSE
consumable = FALSE
/obj/item/emitter_disk/healing
name = "/improper Diode Disk: Bioregenerative"
desc = "This disk can be installed into an emitter with an open panel to make it shoot lasers which will heal the physical damages of living creatures."
stored_proj = /obj/projectile/beam/emitter/hitscan/bioregen
consumed_on_removal = FALSE
consumable = FALSE
/obj/item/emitter_disk/incendiary
name = "/improper Diode Disk: Conflagratory"
desc = "This disk can be used on an emitter with an open panel to make it shoot lasers which will set living creatures ablaze."
stored_proj = /obj/projectile/beam/emitter/hitscan/incend
consumed_on_removal = FALSE
consumable = FALSE
/obj/item/emitter_disk/sanity
name = "/improper Diode Disk: Psychosiphoning"
desc = "This disk can be used on an emitter with an open panel to make it shoot lasers which will depress living creatures and calm supermatter crystals."
stored_proj = /obj/projectile/beam/emitter/hitscan/psy
consumed_on_removal = FALSE
consumable = FALSE
/obj/item/emitter_disk/magnetic
name = "/improper Diode Disk: Magnetogenerative"
desc = "This disk can be used on an emitter with an open panel to make it shoot lasers which will attract nearby objects."
stored_proj = /obj/projectile/beam/emitter/hitscan/magnetic
consumed_on_removal = FALSE
consumable = FALSE
/obj/item/emitter_disk/blast
name = "/improper Diode Disk: Hyperconcussive"
desc = "This disk, loaded with proprietary syndicate firmware, can be used on an emitter with an open panel to make it shoot beams of concussive force which will cause small explosions."
stored_proj = /obj/projectile/beam/emitter/hitscan/blast
consumed_on_removal = FALSE
consumable = FALSE
fire_rate_mod = 2

View File

@@ -366,6 +366,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
update_appearance()
delamination_strategy.lights(src)
delamination_strategy.filters(src)
absorption_ratio = clamp(absorption_ratio - 0.05, 0.15, 1)
return TRUE
// SupermatterMonitor UI for ghosts only. Inherited attack_ghost will call this.

View File

@@ -24,7 +24,6 @@
if(projectile.armor_flag != BULLET || kiss_power)
if(kiss_power)
psy_coeff = 1
external_power_immediate += projectile.damage * bullet_energy + kiss_power
log_activation(who = projectile.firer, how = projectile.fired_from)
else
external_damage_immediate += projectile.damage * bullet_energy * 0.1
@@ -34,6 +33,17 @@
if(damage_to_be > danger_point)
visible_message(span_notice("[src] compresses under stress, resisting further impacts!"))
playsound(src, 'sound/effects/supermatter.ogg', 50, TRUE)
if(istype(projectile, /obj/projectile/beam/emitter/hitscan))
var/obj/projectile/beam/emitter/hitscan/mahlaser = projectile
if(mahlaser?.integrity_heal)
damage = max(0, damage - mahlaser?.integrity_heal)
if(mahlaser?.energy_reduction)
internal_energy = max(0, internal_energy - mahlaser?.energy_reduction)
if(mahlaser?.psi_change)
psy_coeff = clamp(psy_coeff + mahlaser?.psi_change, 0, 1)
external_power_immediate += projectile.damage * bullet_energy + kiss_power
if(istype(projectile, /obj/projectile/beam/emitter/hitscan/magnetic))
absorption_ratio = clamp(absorption_ratio + 0.05, 0.15, 1)
qdel(projectile)
return COMPONENT_BULLET_BLOCKED

View File

@@ -243,6 +243,124 @@
impact_light_intensity = 7
impact_light_range = 2.5
impact_light_color_override = COLOR_LIME
// Subtract this from SM damage on hit for lasers
var/integrity_heal
// Subtract this from SM energy on hit for lasers
var/energy_reduction
// Add this to SM psi coefficient on hit for lasers
var/psi_change
/obj/projectile/beam/emitter/hitscan/bluelens
name = "electrodisruptive beam"
light_color = LIGHT_COLOR_BLUE
muzzle_type = /obj/effect/projectile/muzzle/pulse
tracer_type = /obj/effect/projectile/tracer/laser/emitter/bluelens
impact_type = /obj/effect/projectile/impact/pulse
hitscan_light_color_override = COLOR_BLUE_LIGHT
muzzle_flash_color_override = COLOR_BLUE_LIGHT
impact_light_color_override = COLOR_BLUE_LIGHT
damage_type = STAMINA
integrity_heal = 0.25
energy_reduction = 60
/obj/projectile/beam/emitter/hitscan/bioregen
name = "bioregenerative beam"
light_color = LIGHT_COLOR_BRIGHT_YELLOW
muzzle_type = /obj/effect/projectile/muzzle/solar
tracer_type = /obj/effect/projectile/tracer/laser/emitter/bioregen
impact_type = /obj/effect/projectile/impact/solar
hitscan_light_color_override = COLOR_LIGHT_YELLOW
muzzle_flash_color_override = COLOR_LIGHT_YELLOW
impact_light_color_override = COLOR_LIGHT_YELLOW
damage_type = STAMINA
damage = 0
var/healing_done = 5
/obj/projectile/beam/emitter/hitscan/bioregen/on_hit(atom/target, blocked, pierce_hit)
. = ..()
if(!iscarbon(target))
return
var/mob/living/carbon/healed_guy = target
healed_guy.heal_bodypart_damage(brute = healing_done, burn = healing_done, updating_health = FALSE)
/obj/projectile/beam/emitter/hitscan/incend
name = "conflagratory beam"
light_color = LIGHT_COLOR_ORANGE
muzzle_type = /obj/effect/projectile/muzzle/heavy_laser
tracer_type = /obj/effect/projectile/tracer/laser/emitter/redlens
impact_type = /obj/effect/projectile/impact/heavy_laser
hitscan_light_color_override = COLOR_ORANGE
muzzle_flash_color_override = COLOR_ORANGE
impact_light_color_override = COLOR_ORANGE
damage = 20
integrity_heal = -0.15
energy_reduction = -150
psi_change = -0.1
/obj/projectile/beam/emitter/hitscan/incend/on_hit(atom/target, blocked, pierce_hit)
. = ..()
if(!isliving(target))
return
var/mob/living/burnt_guy = target
burnt_guy.adjust_fire_stacks(5)
burnt_guy.ignite_mob()
/obj/projectile/beam/emitter/hitscan/psy
name = "psychosiphoning beam"
light_color = LIGHT_COLOR_PINK
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter/psy
tracer_type = /obj/effect/projectile/tracer/laser/emitter/psy
impact_type = /obj/effect/projectile/impact/laser/emitter/psy
hitscan_light_color_override = COLOR_BLUSH_PINK
muzzle_flash_color_override = COLOR_BLUSH_PINK
impact_light_color_override = COLOR_BLUSH_PINK
damage = 0
energy_reduction = -25
psi_change = 0.25
/obj/projectile/beam/emitter/hitscan/psy/on_hit(atom/target, blocked, pierce_hit)
. = ..()
if(!isliving(target))
return
var/mob/living/siphoned = target
siphoned.mob_mood.adjust_sanity(-25)
to_chat(siphoned, span_warning("Suddenly, everything feels just a little bit worse!"))
/obj/projectile/beam/emitter/hitscan/magnetic
name = "magnetogenerative beam"
light_color = COLOR_SILVER
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter/magnetic
tracer_type = /obj/effect/projectile/tracer/laser/emitter/magnetic
impact_type = /obj/effect/projectile/impact/laser/emitter/magnetic
hitscan_light_color_override = COLOR_SILVER
muzzle_flash_color_override = COLOR_SILVER
impact_light_color_override = COLOR_SILVER
damage = 0
/obj/projectile/beam/emitter/hitscan/magnetic/on_hit(atom/target, blocked, pierce_hit)
. = ..()
var/turf/turf_to_magnet = get_turf(target)
goonchem_vortex(turf_to_magnet, FALSE, 4)
/obj/projectile/beam/emitter/hitscan/blast
name = "hyperconcussive beam"
light_color = LIGHT_COLOR_ORANGE
muzzle_type = /obj/effect/projectile/muzzle/laser/emitter/magnetic
tracer_type = /obj/effect/projectile/tracer/laser/emitter/magnetic
impact_type = /obj/effect/projectile/impact/laser/emitter/magnetic
hitscan_light_color_override = COLOR_ORANGE
muzzle_flash_color_override = COLOR_ORANGE
impact_light_color_override = COLOR_ORANGE
damage = 0
integrity_heal = -2
energy_reduction = -500
/obj/projectile/beam/emitter/hitscan/blast/on_hit(atom/target, blocked, pierce_hit)
. = ..()
var/turf/turf_to_explode = get_turf(target)
explosion(turf_to_explode, 0, 1, 2)
/obj/projectile/beam/lasertag
name = "laser tag beam"

View File

@@ -212,3 +212,68 @@
RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_TURBINE
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING
/datum/design/diode_disk_stamina
name = "Electrodisruptive Diode Disk"
desc = "A stamina damaging and supermatter crystal healing Diode Disk."
id = "diode_disk_stamina"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass =SMALL_MATERIAL_AMOUNT, /datum/material/gold =SMALL_MATERIAL_AMOUNT)
construction_time = 0.5 SECONDS
build_path = /obj/item/emitter_disk/stamina
category = list(
RND_CATEGORY_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design/diode_disk_healing
name = "Bioregenerative Diode Disk"
desc = "A living creature healing Diode Disk."
id = "diode_disk_healing"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass =SMALL_MATERIAL_AMOUNT, /datum/material/silver =SMALL_MATERIAL_AMOUNT) //silver is medical metal. Why? who knows.
construction_time = 0.5 SECONDS
build_path = /obj/item/emitter_disk/healing
category = list(
RND_CATEGORY_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design/diode_disk_incendiary
name = "Conflagratory Diode Disk"
desc = "A high energy incendiary Diode Disk."
id = "diode_disk_incendiary"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass =SMALL_MATERIAL_AMOUNT, /datum/material/diamond =SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma =SMALL_MATERIAL_AMOUNT * 2)
construction_time = 0.5 SECONDS
build_path = /obj/item/emitter_disk/incendiary
category = list(
RND_CATEGORY_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design/diode_disk_sanity
name = "Psychosiphoning Diode Disk"
desc = "An supermatter comforting creature depressing Diode Disk."
id = "diode_disk_sanity"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass =SMALL_MATERIAL_AMOUNT, /datum/material/uranium =SMALL_MATERIAL_AMOUNT * 0.5) //Uranium, the metal of love and warmth (from decay heat).
construction_time = 0.5 SECONDS
build_path = /obj/item/emitter_disk/sanity
category = list(
RND_CATEGORY_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
/datum/design/diode_disk_magnetic
name = "Magnetogenerative Diode Disk"
desc = "A mol absorbing item attracting Diode Disk."
id = "diode_disk_magnetic"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass =SMALL_MATERIAL_AMOUNT, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 0.5)
construction_time = 0.5 SECONDS
build_path = /obj/item/emitter_disk/magnetic
category = list(
RND_CATEGORY_EQUIPMENT
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING

View File

@@ -63,6 +63,7 @@
"pacman",
"mech_generator",
"plasmacutter",
"diode_disk_incendiary",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
discount_experiments = list(/datum/experiment/ordnance/gaseous/plasma = TECHWEB_TIER_2_POINTS)

View File

@@ -179,6 +179,7 @@
"welding_goggles",
"tray_goggles",
"geigercounter",
"diode_disk_stamina"
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
announce_channels = list(RADIO_CHANNEL_ENGINEERING)
@@ -227,6 +228,7 @@
"modular_shield_charger",
"modular_shield_well",
"modular_shield_console",
"diode_disk_magnetic",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)

View File

@@ -81,6 +81,8 @@
"defibmount",
"medicalbed_emergency",
"piercesyringe",
"diode_disk_healing",
"diode_disk_sanity",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
required_experiments = list(/datum/experiment/scanning/reagent/haloperidol)

View File

@@ -397,3 +397,10 @@
progression_minimum = 30 MINUTES
purchasable_from = parent_type::purchasable_from & ~UPLINK_SPY
/datum/uplink_item/role_restricted/concussivedisk
name = "Hyperconcussive Diode Disk"
desc = "A diode configuration disk that allows an emitter to shoot potent explosive lasers. \
Please note that this will halve the fire-rate of the emitter."
item = /obj/item/emitter_disk/blast
cost = 5
restricted_roles = list(JOB_STATION_ENGINEER, JOB_CHIEF_ENGINEER)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB