Adds fishing for real this time (#13622)

* Fishing

* test

* put fish in your damn hands

* fish types and bait types and

* fixing things

* Update rods.dm

* more stuff

* ok

* yes

* all this stuff

* Update _basemap.dm

* Update game_options.txt

* Apply suggestions from code review

Co-authored-by: tattax <71668564+tattax@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: tattax <71668564+tattax@users.noreply.github.com>

* component

* move fishing

* Update yogstation.dme

* new icons

* yeah does what tatax yeah

* um new fishing cloths

* working more

* Update fishingbonus.dm

* yeah

* yup

* um ok

* Update fish.dm

* Update fishing.dm

* yep

Co-authored-by: tattax <71668564+tattax@users.noreply.github.com>
This commit is contained in:
Byemoh
2022-06-11 07:45:56 -05:00
committed by GitHub
parent 66aa0623c4
commit c884a992ed
22 changed files with 488 additions and 1 deletions

View File

@@ -15,3 +15,12 @@
barefootstep = FOOTSTEP_WATER barefootstep = FOOTSTEP_WATER
clawfootstep = FOOTSTEP_WATER clawfootstep = FOOTSTEP_WATER
heavyfootstep = FOOTSTEP_WATER heavyfootstep = FOOTSTEP_WATER
/turf/open/water/safe
initial_gas_mix = OPENTURF_DEFAULT_ATMOS
planetary_atmos = FALSE
/turf/open/water/safe/Initialize(mapload)
. = ..()
AddComponent(/datum/component/fishable)

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

View File

@@ -3321,6 +3321,8 @@
#include "yogstation\code\datums\antagonists\vampire.dm" #include "yogstation\code\datums\antagonists\vampire.dm"
#include "yogstation\code\datums\components\crawl.dm" #include "yogstation\code\datums\components\crawl.dm"
#include "yogstation\code\datums\components\daniel.dm" #include "yogstation\code\datums\components\daniel.dm"
#include "yogstation\code\datums\components\fishable.dm"
#include "yogstation\code\datums\components\fishingbonus.dm"
#include "yogstation\code\datums\components\radioactive.dm" #include "yogstation\code\datums\components\radioactive.dm"
#include "yogstation\code\datums\components\randomcrits.dm" #include "yogstation\code\datums\components\randomcrits.dm"
#include "yogstation\code\datums\components\uplink.dm" #include "yogstation\code\datums\components\uplink.dm"
@@ -3433,6 +3435,9 @@
#include "yogstation\code\game\objects\items\devices\radio\encryptionkey.dm" #include "yogstation\code\game\objects\items\devices\radio\encryptionkey.dm"
#include "yogstation\code\game\objects\items\devices\radio\headset.dm" #include "yogstation\code\game\objects\items\devices\radio\headset.dm"
#include "yogstation\code\game\objects\items\devices\radio\radio.dm" #include "yogstation\code\game\objects\items\devices\radio\radio.dm"
#include "yogstation\code\game\objects\items\fishing\bait.dm"
#include "yogstation\code\game\objects\items\fishing\fish.dm"
#include "yogstation\code\game\objects\items\fishing\rods.dm"
#include "yogstation\code\game\objects\items\grenades\glitterbombs.dm" #include "yogstation\code\game\objects\items\grenades\glitterbombs.dm"
#include "yogstation\code\game\objects\items\holotool\holotool.dm" #include "yogstation\code\game\objects\items\holotool\holotool.dm"
#include "yogstation\code\game\objects\items\holotool\modes.dm" #include "yogstation\code\game\objects\items\holotool\modes.dm"
@@ -3567,6 +3572,7 @@
#include "yogstation\code\modules\clothing\chameleon.dm" #include "yogstation\code\modules\clothing\chameleon.dm"
#include "yogstation\code\modules\clothing\clothing.dm" #include "yogstation\code\modules\clothing\clothing.dm"
#include "yogstation\code\modules\clothing\donator.dm" #include "yogstation\code\modules\clothing\donator.dm"
#include "yogstation\code\modules\clothing\fishing.dm"
#include "yogstation\code\modules\clothing\head.dm" #include "yogstation\code\modules\clothing\head.dm"
#include "yogstation\code\modules\clothing\mask.dm" #include "yogstation\code\modules\clothing\mask.dm"
#include "yogstation\code\modules\clothing\shoe.dm" #include "yogstation\code\modules\clothing\shoe.dm"
@@ -3817,6 +3823,7 @@
#include "yogstation\code\modules\surgery\organs\lungs.dm" #include "yogstation\code\modules\surgery\organs\lungs.dm"
#include "yogstation\code\modules\surgery\organs\shadowling_organs.dm" #include "yogstation\code\modules\surgery\organs\shadowling_organs.dm"
#include "yogstation\code\modules\uplink\uplink_item.dm" #include "yogstation\code\modules\uplink\uplink_item.dm"
#include "yogstation\code\modules\vending\fishing.dm"
#include "yogstation\code\modules\webhook\webhook.dm" #include "yogstation\code\modules\webhook\webhook.dm"
#include "yogstation\code\modules\xenoarch\loot\gigadrill.dm" #include "yogstation\code\modules\xenoarch\loot\gigadrill.dm"
#include "yogstation\code\modules\xenoarch\loot\guns.dm" #include "yogstation\code\modules\xenoarch\loot\guns.dm"

View File

@@ -0,0 +1,28 @@
/datum/component/fishable
dupe_mode = COMPONENT_DUPE_UNIQUE
var/datum/fishing_loot/common_loot = new /datum/fishing_loot/water/common
/datum/component/fishable/proc/getCommonLoot()
return pick(common_loot.rewards)
/datum/component/fishable/Initialize()
if(!istype(parent, /turf))
return COMPONENT_INCOMPATIBLE
//LOOT TABLES
/datum/fishing_loot
var/list/rewards = list()
/datum/fishing_loot/water/common
rewards = list(
/obj/item/reagent_containers/food/snacks/fish/goldfish,
/obj/item/reagent_containers/food/snacks/fish/goldfish/giant,
/obj/item/reagent_containers/food/snacks/fish/salmon,
/obj/item/reagent_containers/food/snacks/fish/bass,
/obj/item/reagent_containers/food/snacks/fish/tuna,
/obj/item/reagent_containers/food/snacks/fish/shrimp,
/obj/item/reagent_containers/food/snacks/fish/squid,
/obj/item/reagent_containers/food/snacks/fish/puffer,
/obj/item/reagent_containers/food/snacks/bait/leech
)

View File

@@ -0,0 +1,24 @@
/datum/component/fishingbonus
dupe_mode = COMPONENT_DUPE_UNIQUE
var/fishing_bonus = 0
var/mob/living/carbon/wearer
/datum/component/fishingbonus/Initialize(fishing_bonus = 0)
if(!isclothing(parent))
return COMPONENT_INCOMPATIBLE
src.fishing_bonus = fishing_bonus
RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/OnEquip)
RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/OnUnequip)
/datum/component/fishingbonus/proc/OnEquip(datum/source, mob/living/carbon/equipper, slot)
var/obj/item/parent_item = parent
if(!parent_item)
return
if(parent_item.slot_flags == slotdefine2slotbit(slot))
equipper.fishing_power += fishing_bonus
wearer = equipper
/datum/component/fishingbonus/proc/OnUnequip(datum/source, mob/living/carbon/equipper, slot)
if(wearer)
equipper.fishing_power -= fishing_bonus
wearer = null

View File

@@ -0,0 +1,49 @@
/obj/item/reagent_containers/food/snacks/bait
name = "development bait"
desc = "if you see this, get help"
icon = 'yogstation/icons/obj/fishing/fishing.dmi'
icon_state = "bait_worm"
tastes = list("sour, rotten water" = 1)
foodtype = GROSS //probably dont eat it
var/fishing_power = 10
/obj/item/reagent_containers/food/snacks/bait/apprentice
name = "apprentice bait"
desc = "A basic bait for an aspiring fisherman"
icon_state = "bait_1"
fishing_power = 10
/obj/item/reagent_containers/food/snacks/bait/journeyman
name = "journeyman bait"
desc = "Advanced bait that only a skilled fisherman can use"
icon_state = "bait_2"
fishing_power = 20
/obj/item/reagent_containers/food/snacks/bait/master
name = "master bait"
desc = "A masterfully crafted bait that only a master in fishing can harness"
icon_state = "bait_3"
fishing_power = 30
/obj/item/reagent_containers/food/snacks/bait/master/Initialize(mapload) //HEE HEEE HAHAHAHAHH HEEHEH E E EHEEE
. = ..()
if(prob(1))
desc = "Don't you dare say it"
/obj/item/reagent_containers/food/snacks/bait/worm
name = "worm bait"
desc = "Might be able to catch a lizard with this..."
icon_state = "bait_worm"
fishing_power = 15
/obj/item/reagent_containers/food/snacks/bait/leech
name = "leech"
desc = "What isn't fun about a little recycling?"
icon_state = "leech"
fishing_power = 20
/obj/item/reagent_containers/food/snacks/bait/type
name = "type bait"
desc = "Are you talking to me?"
icon_state = "bait_t"
fishing_power = 25

View File

@@ -0,0 +1,144 @@
/obj/item/reagent_containers/food/snacks/fish
name = "development fish"
desc = "if you see this, get help"
icon = 'yogstation/icons/obj/fishing/fishing.dmi'
icon_state = "bass"
//food handling
tastes = list("fishy" = 1)
foodtype = MEAT | SEAFOOD
slice_path = /obj/item/reagent_containers/food/snacks/carpmeat/fish
//fish handling stuff
var/length = 0
var/weight = 0
var/min_length = 1
var/max_length = 10
var/min_weight = 1
var/max_weight = 15
throwforce = 10
var/mob/showoffer
var/mutable_appearance/showoff_overlay
/obj/item/reagent_containers/food/snacks/fish/Initialize(mapload)
. = ..()
length = rand(min_length,max_length)
weight = rand(min_weight,max_weight)
list_reagents = list(/datum/reagent/consumable/nutriment = (3 * slices_num), /datum/reagent/consumable/nutriment/vitamin = (2 * slices_num))
/obj/item/reagent_containers/food/snacks/fish/proc/GetChumValue()
return //not used yet
/obj/item/reagent_containers/food/snacks/fish/examine(mob/user)
. = ..()
. += "It's [length] inches and [weight] ounces!"
/obj/item/reagent_containers/food/snacks/fish/attack_self(mob/M)
if(showoff_overlay)
stop_overlay()
return
M.setDir(SOUTH)
showoff_overlay = mutable_appearance(icon,icon_state)
M.add_overlay(showoff_overlay)
showoffer = M
M.visible_message("[M] shows off [src]. It's [length] inches long and weighs [weight] ounces!", \
span_notice("You show off [src]. It's [length] inches long and weighs [weight] ounces!"))
RegisterSignal(M,COMSIG_ATOM_DIR_CHANGE,.proc/stop_overlay,TRUE)
/obj/item/reagent_containers/food/snacks/fish/proc/stop_overlay()
if(showoffer && showoff_overlay)
UnregisterSignal(showoffer,COMSIG_ATOM_DIR_CHANGE)
showoffer.cut_overlay(showoff_overlay)
showoffer = null
showoff_overlay = null
/obj/item/reagent_containers/food/snacks/fish/goldfish
name = "galactic goldfish"
desc = "it's so... small!"
icon_state = "fish_goldfish"
min_length = 1
max_length = 2
min_weight = 2
max_weight = 8
slices_num = 1
/obj/item/reagent_containers/food/snacks/fish/goldfish/giant
name = "giant galactic goldfish"
desc = "it's so... big!"
icon_state = "fish_goldfish_big"
min_length = 6
max_length = 19
min_weight = 24
max_weight = 144
slices_num = 2
/obj/item/reagent_containers/food/snacks/fish/salmon
name = "space salmon"
desc = "i thought they were supposed to be red"
icon_state = "fish_salmon"
min_length = 28
max_length = 32
min_weight = 8
max_weight = 12
slices_num = 3
/obj/item/reagent_containers/food/snacks/fish/bass
name = "big bang bass"
desc = "how am I supposed to play this thing?"
icon_state = "fish_bass"
min_length = 12
max_length = 32
min_weight = 128
max_weight = 192
slices_num = 3
/obj/item/reagent_containers/food/snacks/fish/tuna
name = "temporal tuna"
desc = "you can tune a piano but you can't tuna fish"
icon_state = "fish_tuna"
min_length = 15
max_length = 79
min_weight = 18
max_weight = 1000
slices_num = 3
/obj/item/reagent_containers/food/snacks/fish/shrimp
name = "space shrimp"
desc = "he looks a little shrimpy"
icon_state = "fish_shrimp"
min_length = 1
max_length = 6
min_weight = 1
max_weight = 3
slices_num = null //just eat as is
/obj/item/reagent_containers/food/snacks/fish/squid
name = "space squid"
desc = "like the game?"
icon_state = "fish_squid"
min_length = 18
max_length = 24
min_weight = 4
max_weight = 9
slices_num = 3
/obj/item/reagent_containers/food/snacks/fish/puffer
name = "plasma pufferfish"
desc = "it doesn't look like it's made of plasma..."
icon_state = "fish_puffer"
min_length = 1
max_length = 1.4
min_weight = 1
max_weight = 2
slices_num = 2
/obj/item/reagent_containers/food/snacks/carpmeat/fish //basic fish fillet (no carpotoxin) for fish butchering
name = "fish fillet"
desc = "A fillet of spess fish meat."
list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2)

View File

@@ -0,0 +1,156 @@
/obj/item/twohanded/fishingrod
name = "fishing rod"
desc = "A rod used for fishing. Despite ordinary appearances, fishing has evolved to suit the cosmos with various features, like auto-reeling."
icon = 'yogstation/icons/obj/fishing/fishing.dmi'
icon_state = "fishing_rod"
lefthand_file = 'icons/mob/inhands/equipment/fishing_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
usesound = 'sound/items/crowbar.ogg'
slot_flags = ITEM_SLOT_BACK
force = 2
throwforce = 5
w_class = WEIGHT_CLASS_NORMAL
materials = list(/datum/material/iron=50)
var/fishing_power = 10
var/obj/item/reagent_containers/food/snacks/bait/bait = null //what bait is attached to the rod
var/fishing = FALSE
var/bobber_image = 'yogstation/icons/obj/fishing/fishing.dmi'
var/bobber_icon_state = "bobber"
var/static/mutable_appearance/bobber = mutable_appearance('yogstation/icons/obj/fishing/fishing.dmi',"bobber")
var/datum/component/fishable/fishing_component
var/mob/fisher
var/bite = FALSE
/obj/item/twohanded/fishingrod/examine(mob/user)
. = ..()
. += "Its current fishing power is [fishing_power]."
/obj/item/twohanded/fishingrod/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
var/datum/component/fishable/fc = target.GetComponent(/datum/component/fishable)
if(!fc)
return ..()
if(!fishing)
if(!wielded)
to_chat(user, span_warning("You need to wield the rod in both hands before you can cast it!"))
return
cast(fc,user)
else
if(fc != fishing_component)
to_chat(user, span_warning("You are not fishing here!"))
return
reel_in() //intentionally able to reel in with one hand
/obj/item/twohanded/fishingrod/process()
if(!fishing)
return PROCESS_KILL
if(bite)
to_chat(fisher, span_warning("Whatever was on the line drifts back into the deep..."))
bite = FALSE
return
var/power = 0
if(iscarbon(fisher)) //sorry, non-carbons don't get to wear cool fishing outfits
var/mob/living/carbon/carbonfisher = fisher
power = carbonfisher.fishing_power
if(prob(fishing_power + power))
to_chat(fisher, span_boldnotice("Something bites! Reel it in!"))
bite = TRUE
do_fishing_alert(fisher)
/obj/item/twohanded/fishingrod/Destroy()
STOP_PROCESSING(SSobj,src)
return ..()
/obj/item/twohanded/fishingrod/proc/cast(datum/component/fishable/fc,mob/user)
fishing = TRUE
fishing_component = fc
var/turf/fishing_turf = fishing_component.parent
fishing_turf.add_overlay(bobber)
fisher = user
RegisterSignal(user,COMSIG_MOVABLE_MOVED, .proc/reel_in_forced,TRUE)
RegisterSignal(src,COMSIG_MOVABLE_MOVED, .proc/reel_in_forced,TRUE)
RegisterSignal(src,COMSIG_ITEM_DROPPED, .proc/reel_in_forced,TRUE)
START_PROCESSING(SSobj,src)
playsound(fishing_component, 'sound/effects/splash.ogg', 50, FALSE, -5)
to_chat(fisher, span_italics("You cast out your fishing rod..."))
/obj/item/twohanded/fishingrod/proc/reel_in(var/forced = FALSE)
if(!forced && bite) // we got something!!!
playsound(fishing_component, 'sound/effects/water_emerge.ogg', 50, FALSE, -5)
spawn_reward()
if(bait && prob(max(50 - bait.fishing_power,0))) //50 - bait.fishing_power% chance to lose your bait
to_chat(fisher, span_notice("Your [bait] is lost!"))
cut_overlays()
QDEL_NULL(bait)
recalculate_power()
else
playsound(fishing_component, 'sound/effects/splash.ogg', 50, FALSE, -5)
if(forced)
to_chat(fisher, span_boldnotice("The auto-reel on the fishing rod activates!"))
else
to_chat(fisher, span_italics("You reel in your fishing rod."))
fishing = FALSE
UnregisterSignal(fisher,COMSIG_MOVABLE_MOVED)
UnregisterSignal(src,COMSIG_MOVABLE_MOVED)
UnregisterSignal(src,COMSIG_ITEM_DROPPED)
fisher = null
STOP_PROCESSING(SSobj,src)
var/turf/fishing_turf = fishing_component.parent
fishing_turf.cut_overlay(bobber)
fishing_component = null
bite = FALSE //just to be safe
/obj/item/twohanded/fishingrod/proc/reel_in_forced()
reel_in(forced = TRUE)
/obj/item/twohanded/fishingrod/proc/do_fishing_alert(atom/A)
playsound(A.loc, 'sound/machines/chime.ogg', 50, FALSE, -5)
var/image/I = image('icons/obj/closet.dmi', A, "cardboard_special", A.layer+1)
flick_overlay_view(I, A, 8)
I.alpha = 0
animate(I, pixel_z = 32, alpha = 255, time = 2, easing = ELASTIC_EASING)
/obj/item/twohanded/fishingrod/proc/spawn_reward()
var/obj/picked_reward = fishing_component.getCommonLoot()
var/obj/reward_item = new picked_reward(fishing_component.parent)
reward_item.alpha = 0
reward_item.pixel_y = -12
animate(reward_item,time = 0.25 SECONDS,pixel_y = 0,alpha = 255,easing = SINE_EASING)
if(!fisher) //uh oh
return
fisher.visible_message(span_notice("[fisher] reels in a [reward_item]!"), span_notice("You reel in a [reward_item]!"))
if(fisher.Adjacent(fishing_component.parent))
unwield(fisher,show_message = FALSE)
if(fisher.put_in_hands(reward_item))
return
reward_item.throw_at(get_step(fishing_component,get_dir(fishing_component,fisher)),2,3,fisher) //whip it at them!
/obj/item/twohanded/fishingrod/attackby(obj/item/B, mob/user, params)
if(!istype(B,/obj/item/reagent_containers/food/snacks/bait))
return
if(bait)
user.put_in_hands(bait)
if(!user.transferItemToLoc(B,src))
return
bait = B
to_chat(user, span_notice("You attach the [bait] to the fishing rod."))
cut_overlays()
add_overlay("fishing_rod_[bait.icon_state]")
recalculate_power()
/obj/item/twohanded/fishingrod/AltClick(mob/living/user)
if(bait)
user.put_in_hands(bait)
to_chat(user, span_notice("You take the [bait] off the fishing rod."))
bait = null
recalculate_power()
/obj/item/twohanded/fishingrod/proc/recalculate_power()
fishing_power = initial(fishing_power)
if(bait)
fishing_power += bait.fishing_power

View File

@@ -0,0 +1,47 @@
/obj/item/clothing/head/fishing
name = "fishing cap"
desc = "She said she's down to fish!"
icon_state = "fishing_cap"
item_state = "fishing_cap"
alternate_worn_icon = 'yogstation/icons/mob/head.dmi'
icon = 'yogstation/icons/obj/clothing/hats.dmi'
/obj/item/clothing/head/fishingcap/Initialize()
. = ..()
AddComponent(/datum/component/fishingbonus,5)
/obj/item/clothing/suit/fishing
name = "fishing vest"
desc = "As she banging my line, she wastin my time."
icon_state = "fishing_vest"
item_state = "fishing_vest"
alternate_worn_icon = 'yogstation/icons/mob/suit.dmi'
icon = 'yogstation/icons/obj/clothing/suits.dmi'
/obj/item/clothing/suit/fishing/Initialize()
. = ..()
AddComponent(/datum/component/fishingbonus,10)
/obj/item/clothing/gloves/fishing
name = "fishing gloves"
desc = "Packin my tackle box down by the brook."
icon_state = "fishing_gloves"
item_state = "fishing_gloves"
alternate_worn_icon = 'yogstation/icons/mob/hands.dmi'
icon = 'yogstation/icons/obj/clothing/gloves.dmi'
/obj/item/clothing/gloves/fishing/Initialize()
. = ..()
AddComponent(/datum/component/fishingbonus,5)
/obj/item/clothing/shoes/fishing
name = "fishing sandals"
desc = "We livin' the life, if we ain't going fishing then don't waste my time."
icon_state = "fishing_sandals"
item_state = "fishing_sandals"
alternate_worn_icon = 'yogstation/icons/mob/feet.dmi'
icon = 'yogstation/icons/obj/clothing/shoes.dmi'
/obj/item/clothing/shoes/fishing/Initialize()
. = ..()
AddComponent(/datum/component/fishingbonus,5)

View File

@@ -1,2 +1,3 @@
/mob/living/carbon /mob/living/carbon
var/list/stomach_contents = list() // Holds the vore-y contents of this thing's stomach. (Supposedly) only really for alien usage. var/list/stomach_contents = list() // Holds the vore-y contents of this thing's stomach. (Supposedly) only really for alien usage.
var/fishing_power = 0 //all carbons can fish!! yipeee!!!!!!!

View File

@@ -0,0 +1,22 @@
/obj/machinery/vending/fishing
name = "\improper Tackle Box 2000"
desc = "Fishing peaked in 2000!"
icon = 'yogstation/icons/obj/vending.dmi'
icon_state = "fishing"
icon_deny = "fishing-deny"
product_slogans = "Don't tell my wife which bank I went to!;Fish fear me. Women love me.;If you want me to listen to you... talk about FISHING!;Good things come to those who bait.;Why did the lizard cross the road?"
vend_reply = "Go get 'em, tiger!"
products = list(/obj/item/twohanded/fishingrod = 3,
/obj/item/reagent_containers/food/snacks/bait/apprentice = 15,
/obj/item/reagent_containers/food/snacks/bait/journeyman = 10,
/obj/item/clothing/head/fishing = 3,
/obj/item/clothing/suit/fishing = 3,
/obj/item/clothing/gloves/fishing = 3,
/obj/item/clothing/shoes/fishing = 3
)
contraband = list(/obj/item/reagent_containers/food/snacks/bait/type = 3)
premium = list(/obj/item/reagent_containers/food/snacks/bait/master = 5)
default_price = 50
extra_price = 75
payment_department = ACCOUNT_SRV

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 608 B

After

Width:  |  Height:  |  Size: 728 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB