Repack sheets the client is too skinny to sample; add blobDance
A texture skinnier than 16:1 draws nothing at all. Confirmed in-game with one crop shape across two sheets: ratJAM (32x512) renders, modCheck (32x1024) is blank. The earlier 2048 repack fixed those sheets by accident - two columns took them from 64:1 to 16:1, not by getting under the 1024 cap as its commit message claimed. Twenty-seven sheets were still at 32:1 and had never rendered: modCheck, meow, BOOBA, rooRave, Aware, Thinkge, alert and the rest. All repacked to 64x512, same frames in the same order, with their crops and metadata updated. Verified across all 112 animated sheets: none over 1024 or skinnier than 16:1, declared sizes match the files, frame counts fit their grids, and every repacked frame still matches what its sheet held at that index. add_emote.py learns the same limit, and resamples the source timeline at a constant rate instead of expanding holds into repeats: a hold repeats, a source faster than the ~30fps ticker drops frames, and the loop keeps its duration either way. blobDance is 50fps at source, so the old code stretched its 0.74s loop to 1.23s. Also drops the atoi note from BuildFrameString - ParseField uses atof and tolerates decimals, so that was never the failure it described.
@@ -3631,7 +3631,7 @@ defaultpack={
|
||||
["HiveDiver"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HiveDiver.tga:28:28",
|
||||
["catJAM"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\catJAM.tga:28:28:0:0:64:1024:0:32:0:32",
|
||||
["ratJAM"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ratJAM.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["modCheck"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\modCheck.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["modCheck"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\modCheck.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["CatMad"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\CatMad.tga:28:28",
|
||||
["freddyW"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\freddyW.tga:28:28",
|
||||
["freddyLUL"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\freddyLUL.tga:28:28",
|
||||
@@ -3656,7 +3656,7 @@ defaultpack={
|
||||
["channWeen"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\channWeen.tga:28:28",
|
||||
["Lole"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Lole.tga:28:28",
|
||||
["GasmChamp"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\GasmChamp.tga:28:28",
|
||||
["DonoWall"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DonoWall.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["DonoWall"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DonoWall.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["sameEnergy"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\sameEnergy.tga:28:28",
|
||||
["intjdreaming"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\intjdreaming.tga:28:28",
|
||||
["intjXD1"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\intjXD1.tga:28:28",
|
||||
@@ -3710,7 +3710,7 @@ defaultpack={
|
||||
["AbdulPls"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\AbdulPls.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["PunkChamp"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\PunkChamp.tga:28:28",
|
||||
["batBrah"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\batBrah.tga:28:28",
|
||||
[":Aware:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Aware.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
[":Aware:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Aware.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":Concerned:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Concerned.tga:28:28",
|
||||
["HmmTodayIWill"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HmmTodayIWill.tga:28:28",
|
||||
["NoBitches"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\NoBitches.tga:28:28",
|
||||
@@ -3725,8 +3725,8 @@ defaultpack={
|
||||
["Catablepon"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Catablepon.tga:28:28",
|
||||
["HUH"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HUH.tga:28:28",
|
||||
["jewdai"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\jewdai.tga:28:28",
|
||||
["YodaSip"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\YodaSip.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["billyReady"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\billyReady.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["YodaSip"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\YodaSip.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["billyReady"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\billyReady.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":soy:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\soy.tga:28:28:0:0:32:128:0:32:0:32",
|
||||
["ICANT"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ICANT.tga:28:28",
|
||||
["megaflushed"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\megaflushed.tga:28:28",
|
||||
@@ -3734,34 +3734,34 @@ defaultpack={
|
||||
["Sussy"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Sussy.tga:28:28:0:0:32:256:0:32:0:32",
|
||||
["worryFat"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\worryFat.tga:28:28",
|
||||
["WrathChest"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\WrathChest.tga:28:28",
|
||||
["MoneySniff"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\MoneySniff.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["GAMING"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\GAMING.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["RAGEY"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RAGEY.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["MoneySniff"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\MoneySniff.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["GAMING"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\GAMING.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["RAGEY"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RAGEY.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["hehecat"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\hehecat.tga:28:28",
|
||||
["TeaTime"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\TeaTime.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["TeaTime"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\TeaTime.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":WM:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\WM.tga:28:28",
|
||||
[":noted:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\noted.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
[":noted:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\noted.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["YOGGERS"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\YOGGERS.tga:28:28",
|
||||
["HYPERYOGGERS"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HYPERYOGGERS.tga:28:28:0:0:32:64:0:32:0:32",
|
||||
[":xdd:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\xdd.tga:28:28",
|
||||
[":meow:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\meow.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
[":meow:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\meow.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["HUHH"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HUHH.tga:28:28:0:0:64:1024:0:32:0:32",
|
||||
["RIPBOZO"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RIPBOZO.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["RIPBOZO"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RIPBOZO.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["evilcat"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\evilcat.tga:28:28",
|
||||
["bufeY"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\bufeY.tga:28:28",
|
||||
["deanWink"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\deanWink.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["DocLeave"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocLeave.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["DocArrive"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocArrive.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["DocLeave"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocLeave.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["DocArrive"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocArrive.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":alarm:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\alarm.tga:28:28",
|
||||
["angrybear"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\angrybear.tga:28:28",
|
||||
["docmeat"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\docmeat.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["politeCatWTF"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\politeCatWTF.tga:28:28",
|
||||
["SNIFFA"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\SNIFFA.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["SNIFFA"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\SNIFFA.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":kissing:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Kiss.tga:28:28:0:0:64:1024:0:32:0:32",
|
||||
["bidenBlast"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\bidenBlast.tga:28:28",
|
||||
[":om:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\om.tga:28:28:0:0:32:128:0:32:0:32",
|
||||
[":Classic:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Classic.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
[":yo:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\yo.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
[":Classic:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Classic.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":yo:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\yo.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["bange"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\bange.tga:28:28",
|
||||
[":kms:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\kms.tga:28:28",
|
||||
["headBang"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\headBang.tga:28:28:0:0:32:256:0:32:0:32",
|
||||
@@ -3774,11 +3774,11 @@ defaultpack={
|
||||
["Kekflap"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Kekflap.tga:28:28:0:0:32:64:0:32:0:32",
|
||||
["businesscat"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\businesscat.tga:28:28",
|
||||
["LETHIMCOOK"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\LETHIMCOOK.tga:28:28",
|
||||
["ChipiChipi"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ChipiChipi.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["ChipiChipi"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ChipiChipi.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":horror:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\horror.tga:28:28",
|
||||
["MikeSmug"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\MikeSmug.tga:28:28",
|
||||
["BedgeMorgan"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\BedgeMorgan.tga:28:28",
|
||||
[":alert:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\alert.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
[":alert:"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\alert.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":groove:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\groove.tga:28:28",
|
||||
["LETSGOOO"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\LETSGOOO.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["pedro"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\pedro.tga:28:28:0:0:64:1024:0:32:0:32",
|
||||
@@ -3976,7 +3976,7 @@ defaultpack={
|
||||
["PepePuke"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepePuke.tga:28:28",
|
||||
["PepegaHammer"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepegaHammer.tga:28:28",
|
||||
["Sadga"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Sadga.tga:28:28",
|
||||
["BOOBA"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\BOOBA.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["BOOBA"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\BOOBA.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["COCKA"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\COCKA.tga:28:28:0:0:32:256:0:32:0:32",
|
||||
["FUTA"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FUTA.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["BOOFA"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\BOOFA.tga:28:28",
|
||||
@@ -4021,7 +4021,7 @@ defaultpack={
|
||||
["soupchamp"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\soupchamp.tga:28:28",
|
||||
["Starege"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Starege.tga:28:28",
|
||||
["Hmmmge"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Hmmmge.tga:28:28",
|
||||
["lovehug"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\lovehug.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["lovehug"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\lovehug.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["Madgee"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Madgee.tga:28:28",
|
||||
["Clownge"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Clownge.tga:28:28",
|
||||
["ehWTF"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\ehWTF.tga:28:28",
|
||||
@@ -4063,7 +4063,7 @@ defaultpack={
|
||||
["FeelsLateMan"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsLateMan.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["CROGGERS"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\CROGGERS.tga:28:28",
|
||||
["DinkDonk"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\DinkDonk.tga:28:28:0:0:32:64:0:32:0:32",
|
||||
["Thinkge"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Thinkge.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["Thinkge"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Thinkge.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
[":fml:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\fml.tga:28:28",
|
||||
["binocs"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\binocs.tga:28:28",
|
||||
["PepePlan"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepePlan.tga:28:28",
|
||||
@@ -4089,7 +4089,7 @@ defaultpack={
|
||||
["Readge"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Readge.tga:28:28",
|
||||
["peepoChop"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoChop.tga:28:28:0:0:32:256:0:32:0:32",
|
||||
["monkaSteer"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\monkaSteer.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["ppHop"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\ppHop.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["ppHop"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\ppHop.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["FeelsWeakMan"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsWeakMan.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["PepegaCredit"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepegaCredit.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["PepeNOOO"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepeNOOO.tga:28:28:0:0:32:256:0:32:0:32",
|
||||
@@ -4104,7 +4104,7 @@ defaultpack={
|
||||
["sadgers"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\sadgers.tga:28:28",
|
||||
["gladgers"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\gladgers.tga:28:28",
|
||||
["Voidge"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Voidge.tga:28:28",
|
||||
["peepoGhost"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoGhost.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["peepoGhost"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoGhost.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["Smoge"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Smoge.tga:28:28",
|
||||
["NeedCopium"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\NeedCopiumPepe.tga:28:28",
|
||||
["Bedges"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Bedges.tga:28:28",
|
||||
@@ -4192,7 +4192,7 @@ defaultpack={
|
||||
["PogOff"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\PogOff.tga:28:28",
|
||||
["Pausey"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\Pausey.tga:28:28",
|
||||
["RowSalt"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\RowSalt.tga:56:56",
|
||||
["PogTasty"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\PogTasty.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["PogTasty"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\PogTasty.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["TriTasty"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\TriTasty.tga:28:28",
|
||||
[":twoofakind:"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\Maya.tga:28:28",
|
||||
["RowFish"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\RowFish.tga:28:28",
|
||||
@@ -4230,7 +4230,7 @@ defaultpack={
|
||||
["rooC"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooC.tga:28:28",
|
||||
["rooComfy"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooComfy.tga:28:28",
|
||||
["rooMadSlam"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooMadSlam.tga:28:28:0:0:32:512:0:32:0:32",
|
||||
["rooRave"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooRave.tga:28:28:0:0:32:1024:0:32:0:32",
|
||||
["rooRave"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooRave.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
["drxCozy"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Drainerx\\drxCozy.tga:28:28",
|
||||
["drxLUL"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Drainerx\\drxLUL.tga:28:28",
|
||||
["drxHappy"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\Drainerx\\drxHappy.tga:28:28",
|
||||
@@ -4255,6 +4255,7 @@ defaultpack={
|
||||
["typegYIP"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\typeg\\typegYIP.tga:28:28",
|
||||
["typegChill"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\typeg\\typegChill.tga:28:28",
|
||||
["typegBricked"] = "Interface\\AddOns\\TwitchEmotes\\Emotes\\typeg\\typegBricked.tga:28:28",
|
||||
["blobDance"]="Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\blobDance.tga:28:28:0:0:64:512:0:32:0:32",
|
||||
|
||||
};
|
||||
emoticons={
|
||||
@@ -8920,12 +8921,13 @@ defaultpack={
|
||||
["typegChill"] = "typegChill",
|
||||
["typegBricked"] = "typegBricked",
|
||||
[":twoofakind:"]=":twoofakind:",
|
||||
["blobDance"]="blobDance",
|
||||
|
||||
};
|
||||
|
||||
TwitchEmotes_animation_metadata = {
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Clap.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 6},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\modCheck.tga"] = {["nFrames"] = 28, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 9},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\modCheck.tga"] = {["nFrames"] = 28, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 9},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\goinginsane.tga"] = {["nFrames"] = 47, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 25},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\catJAM.tga"] = {["nFrames"] = 60, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ratJAM.tga"] = {["nFrames"] = 16, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
@@ -8936,9 +8938,9 @@ TwitchEmotes_animation_metadata = {
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\worryPopcorn.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 26},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\worryExcite.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 26},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\AbdulPls.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 24},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\lovehug.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\lovehug.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\monkaX.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 11},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\BOOBA.tga"] = {["nFrames"] = 27, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 16},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\BOOBA.tga"] = {["nFrames"] = 27, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 16},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\MadgeRightNow.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\shy.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 4},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\DinkDonk.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 20},
|
||||
@@ -8949,7 +8951,7 @@ TwitchEmotes_animation_metadata = {
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FUTA.tga"] = {["nFrames"] = 12, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\NODDERS.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\NOPERS.tga"] = {["nFrames"] = 8, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DonoWall.tga"] = {["nFrames"] = 24, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 8},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DonoWall.tga"] = {["nFrames"] = 24, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 8},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\WICKEDSTEER.tga"] = {["nFrames"] = 15, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 16},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\WICKED.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 16},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\ClownHypers.tga"] = {["nFrames"] = 6, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 6},
|
||||
@@ -8957,7 +8959,7 @@ TwitchEmotes_animation_metadata = {
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\CatDance.tga"] = {["nFrames"] = 8, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsLoveMan.tga"] = {["nFrames"] = 12, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooMadSlam.tga"] = {["nFrames"] = 11, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooRave.tga"] = {["nFrames"] = 25, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 24},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\AdmiralBahroo\\rooRave.tga"] = {["nFrames"] = 25, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 24},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\worryStick.tga"] = {["nFrames"] = 12, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepeJAM.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoSmash.tga"] = {["nFrames"] = 8, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 12},
|
||||
@@ -8965,56 +8967,56 @@ TwitchEmotes_animation_metadata = {
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Chatting.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoGiggle.tga"] = {["nFrames"] = 6, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsRainMan.tga"] = {["nFrames"] = 14, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 25},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoPat.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoPat.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoEhm.tga"] = {["nFrames"] = 6, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 1},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\monkaInsane.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 60},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsLateMan.tga"] = {["nFrames"] = 16, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 8},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\SadCatWave.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Aware.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Aware.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsNzoth.tga"] = {["nFrames"] = 9, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Thinkge.tga"] = {["nFrames"] = 28, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Thinkge.tga"] = {["nFrames"] = 28, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsIllidanMan.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 18},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\BTTV+FFZ\\gachiBASS.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\BTTV+FFZ\\pokiBASS.tga"] = {["nFrames"] = 8, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 30},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\YodaSip.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\billyReady.tga"] = {["nFrames"] = 18, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\YodaSip.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\billyReady.tga"] = {["nFrames"] = 18, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\soy.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Sussy.tga"] = {["nFrames"] = 5, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoChop.tga"] = {["nFrames"] = 5, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\monkaSteer.tga"] = {["nFrames"] = 13, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\ppHop.tga"] = {["nFrames"] = 19, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\ppHop.tga"] = {["nFrames"] = 19, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsWeakMan.tga"] = {["nFrames"] = 15, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepegaCredit.tga"] = {["nFrames"] = 15, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 16},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\MoneySniff.tga"] = {["nFrames"] = 25, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\GAMING.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\MoneySniff.tga"] = {["nFrames"] = 25, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\GAMING.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepeNOOO.tga"] = {["nFrames"] = 7, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\PepeSith.tga"] = {["nFrames"] = 12, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\POGGIES.tga"] = {["nFrames"] = 8, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RAGEY.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\TeaTime.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\PogTasty.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 13},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\noted.tga"] = {["nFrames"] = 30, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RAGEY.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\TeaTime.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\GuildEmotes\\PogTasty.tga"] = {["nFrames"] = 31, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 13},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\noted.tga"] = {["nFrames"] = 30, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\HYPEROMEGAPOGGERSCRAZY.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\meow.tga"] = {["nFrames"] = 24, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 11},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\meow.tga"] = {["nFrames"] = 24, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 11},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HUHH.tga"] = {["nFrames"] = 47, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RIPBOZO.tga"] = {["nFrames"] = 28, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 13},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\RIPBOZO.tga"] = {["nFrames"] = 28, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 13},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoStrong.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 14},["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoHorse.tga"] = {["nFrames"] = 13, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoPolice.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\HYPERYOGGERS.tga"] = {["nFrames"] = 2,["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\deanWink.tga"] = {["nFrames"] = 14, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoGhost.tga"] = {["nFrames"] = 25, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocLeave.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocArrive.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoGhost.tga"] = {["nFrames"] = 25, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocLeave.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\DocArrive.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\MadgeClap.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\FeelsQueueMan.tga"] = {["nFrames"] = 11, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 8},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\docmeat.tga"] = {["nFrames"] = 16, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\YEPPERS.tga"] = {["nFrames"] = 12, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\SNIFFA.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\SNIFFA.tga"] = {["nFrames"] = 20, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Kiss.tga"] = {["nFrames"] = 38, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\om.tga"] = {["nFrames"] = 4, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 14},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Classic.tga"] = {["nFrames"] = 26, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Classic.tga"] = {["nFrames"] = 26, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\binocsSpin.tga"] = {["nFrames"] = 5, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\yo.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\yo.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepoShake.tga"] = {["nFrames"] = 5, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\headBang.tga"] = {["nFrames"] = 6, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 25},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\BLUBBERS.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 12},
|
||||
@@ -9026,10 +9028,11 @@ TwitchEmotes_animation_metadata = {
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\typeg\\typegLoad.tga"] = {["nFrames"] = 8, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=256, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\typeg\\typegPaul.tga"] = {["nFrames"] = 10, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 15},["Interface\\AddOns\\TwitchEmotes\\Emotes\\typeg\\hyperjoy.tga"] = {["nFrames"] = 9, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Kekflap.tga"] = {["nFrames"] = 2, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=64, ["framerate"] = 15},["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\Awoken.tga"] = {["nFrames"] = 38, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ChipiChipi.tga"] = {["nFrames"] = 24, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 25},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\alert.tga"] = {["nFrames"] = 17, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=1024, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\ChipiChipi.tga"] = {["nFrames"] = 24, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 25},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\alert.tga"] = {["nFrames"] = 17, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 40},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\LETSGOOO.tga"] = {["nFrames"] = 11, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=512, ["framerate"] = 20},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\pedro.tga"] = {["nFrames"] = 48, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 10},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\peepofeet.tga"] = {["nFrames"] = 3, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=32, ["imageHeight"]=128, ["framerate"] = 15},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Nerdge.tga"] = {["nFrames"] = 36, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 11},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Pepes\\Nerdge.tga"] = {["nFrames"] = 37, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=1024, ["framerate"] = 12},
|
||||
["Interface\\AddOns\\TwitchEmotes\\Emotes\\Custom\\blobDance.tga"] = {["nFrames"] = 22, ["frameWidth"] = 32, ["frameHeight"] = 32, ["imageWidth"]=64, ["imageHeight"]=512, ["framerate"] = 30},
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
@@ -71,7 +71,7 @@ Emoticons_Settings={
|
||||
[1]= {"Asmongold","asmon1","asmon2","asmon3","asmon4","asmonBoi","asmonC","asmonCD","asmonD","asmonDad","asmonDaze","asmonDegen","asmonE","asmonE1","asmonE2","asmonE3","asmonE4","asmonFiend","asmonG","asmonGASM","asmonGet","asmonHide","asmonL","asmonLFR","asmonLong1","asmonLong2","asmonLong3","asmonLong4","asmonLove","asmonM","asmonOcean","asmonOrc","asmonP","asmonPower","asmonPray","asmonPrime","asmonR","asmonREE","asmonSad","asmonStare","asmonTar","asmonTiger","asmonUH","asmonW","asmonWHAT","asmonWHATR","asmonWOW"},
|
||||
[2]= {"Preachlfw","pgeBan","pgeBen","pgeBrian","pgeCheese","pgeChick","pgeClub","pgeCrisp","pgeDrama","pgeEdge","pgeEmma","pgeFish","pgeGhost","pgeHmm","pgeNem","pgeNoob","pgeOhno","pgeOhno2","pgePog","pgePug","pgeRay","pgeScience","pgeShame","pgeSherry"},
|
||||
[3]= {"BTTV+FFZ","4Head","ANELE","AngelThump","BabyRage","BBona","BibleThump","BlessRNG","BloodTrail","bUrself","cmonBrother","cmonBrug","cmonBruh","ConcernDoge","ConcernFroge","D:","DansGame","DatSheffy","DD:","DogeWitIt","EleGiggle","eShrug","FacePalm","FailFish","FrankerZ","GabeN","gachiBASS","gachiGASM","gachiHYPER","GivePLZ","haHAA","HandsUp","HeyGuys","HotPokket","HYPERBRUG","HYPERLUL","HYPERTHONK","Jebaited","Kapp","Kappa","KappaPride","Keepo","KKomrade","Kreygasm","LUL","LULE","LULW","MegaLUL","MingLee","MingLUL","MrDestructoid","NickyQ","NotLike","NotLikeThis","o_O","OhMyDog","OpieOP","PagMan","PartyTime","pokiBASS","PotFriend","PowerUpL","PowerUpR","RCool","ResidentSleeper","RFrown","RGasp","RHeart","RMeh","RPatch","RSmile","RSmiling","RTired","RTongue","RWink","RWinkTongue","SeemsGood","smileC","smileW","SMOrc","Squid1","Squid2","Squid3","Squid4","SwiftRage","TakeNRG","Thonk","tooDank","TriHard","weSmart","WideHard","WinnerWinner","WTFF","Wut","WutFace","ZULOL","ZULUL"},
|
||||
[4]= {"Custom","4Play","4WeirdBusiness",":alarm:",":alert:",":Aware:",":Awoken:",":blinking:",":Classic:",":Clueless:",":Concerned:",":cringe:",":doo:",":empty:",":ew:",":groove:",":hehe:",":hehesip:",":horror:",":jons:",":kissing:",":kms:",":mc:",":meow:",":misery:",":mo:",":noted:",":om:",":penguin:",":pls:",":queen:",":quest:",":sitch:",":soy:",":torment:",":waiting:",":WM:",":xdd:",":yo:","AbdulPls","AMAZIN","ANEBruh","angrybear","arnoldHalt","AYAYA","bange","batBrah","BedgeMorgan","bidenBlast","bign","billyReady","bjornoVV","bjornoVVona","BOGGED","bruggaroniNcheese","bufeY","businesscat","Catablepon","CatDance","catJAM","CatMad","CatPop","channMies","channWeen","ChipiChipi","chompy","chupBro","chupDerp","chupHappy","ciaciuu","ciaciuWorried","Clap","Cluegi","cmon","confuseddoggo","cptfriHE","CUNGUS","deanWink","Del","Depresstiny","DestiSenpaii","Disgustiny","DocArrive","DocLeave","docmeat","DogeKek","DonoWall","ednasly","Eggroll","endANELE","endBomb","endDawg","endFrench","endHarambe","endKyori","endNotLikeThis","endRP","endTrump","evilcat","fentL","FlipThis","FLOOSHED","flushdoggo","foxsus","freddyCREEP","freddyFINGER","freddyLUL","freddyW","FrogPog","fruitBug","GAMING","GasmChamp","GigaChad","GODSTINY","goinginsane","HappyMerchant","headBang","hehecat","HiveDiver","HmmStiny","HmmTodayIWill","HowSleeper","HUH","HUHH","HyperAngryMerchant","HYPERYOGGERS","ICANT","intjCaught","intjdreaming","intjGlad","intjIdk","intjMad","intjReallyMad","intjSad","intjSalute","intjShake","intjSmile","intjSus","intjWoa","intjXD1","intjXD2","jerryWhat","jewdai","jillzoMallet","jinL","Jons","Joy2","Kekflap","KEKok","KEKWait","KermitScream","KKonaS","Klappa","KomodoHype","Krug","LaurGasm","LeoHug","LeRuse","LETHIMCOOK","LETSGOOO","lockOmegatayys","LockStone","Lole","LOLW","marcithDerp","marcithMath","mastahFloor","megaflushed","MikeSmug","modCheck","MoneySniff","monkeyS","MooCowGold","MooCowW","moWait","MrStark","NeckBeard","NoAnime","NoBitches","NOBULLY","NoTears","OKKona","oldmorDim","OMEGAKEKMAN","OMEGALOL","OverRustle","PatrickMad","PatrickPray","pedro","peepoVW","PEPE","PogCena","PogT","poki1","poki2","pokiW","politeCatWTF","Popoga","PunkChamp","RAGEY","ratJAM","REE","RIPBOZO","sameEnergy","selyihHEY","SNIFFA","StareBruh","Stonks","SuicideThinking","sunglassesflushed","SURPRISE","susfox","Sussy","SWEATSTINY","TeaTime","ThisIsFine","ThumbsUp","totekatze","TrollDespair","TrollLaugh","VoHiYo","WeirdAYAYA","worryChocolate","worryCool","worryExcite","worryFat","worryHug","worryHugged","worryLove","worryPopcorn","worryStick","worryWave","WrathChest","yacubgasm","YEE","yeshoney","YodaSip","YOGGERS","YoshiBlush","ZOINKS"},
|
||||
[4]= {"Custom","4Play","4WeirdBusiness",":alarm:",":alert:",":Aware:",":Awoken:",":blinking:",":Classic:",":Clueless:",":Concerned:",":cringe:",":doo:",":empty:",":ew:",":groove:",":hehe:",":hehesip:",":horror:",":jons:",":kissing:",":kms:",":mc:",":meow:",":misery:",":mo:",":noted:",":om:",":penguin:",":pls:",":queen:",":quest:",":sitch:",":soy:",":torment:",":waiting:",":WM:",":xdd:",":yo:","AbdulPls","AMAZIN","ANEBruh","angrybear","arnoldHalt","AYAYA","bange","batBrah","BedgeMorgan","bidenBlast","bign","billyReady","bjornoVV","bjornoVVona","blobDance","BOGGED","bruggaroniNcheese","bufeY","businesscat","Catablepon","CatDance","catJAM","CatMad","CatPop","channMies","channWeen","ChipiChipi","chompy","chupBro","chupDerp","chupHappy","ciaciuu","ciaciuWorried","Clap","Cluegi","cmon","confuseddoggo","cptfriHE","CUNGUS","deanWink","Del","Depresstiny","DestiSenpaii","Disgustiny","DocArrive","DocLeave","docmeat","DogeKek","DonoWall","ednasly","Eggroll","endANELE","endBomb","endDawg","endFrench","endHarambe","endKyori","endNotLikeThis","endRP","endTrump","evilcat","fentL","FlipThis","FLOOSHED","flushdoggo","foxsus","freddyCREEP","freddyFINGER","freddyLUL","freddyW","FrogPog","fruitBug","GAMING","GasmChamp","GigaChad","GODSTINY","goinginsane","HappyMerchant","headBang","hehecat","HiveDiver","HmmStiny","HmmTodayIWill","HowSleeper","HUH","HUHH","HyperAngryMerchant","HYPERYOGGERS","ICANT","intjCaught","intjdreaming","intjGlad","intjIdk","intjMad","intjReallyMad","intjSad","intjSalute","intjShake","intjSmile","intjSus","intjWoa","intjXD1","intjXD2","jerryWhat","jewdai","jillzoMallet","jinL","Jons","Joy2","Kekflap","KEKok","KEKWait","KermitScream","KKonaS","Klappa","KomodoHype","Krug","LaurGasm","LeoHug","LeRuse","LETHIMCOOK","LETSGOOO","lockOmegatayys","LockStone","Lole","LOLW","marcithDerp","marcithMath","mastahFloor","megaflushed","MikeSmug","modCheck","MoneySniff","monkeyS","MooCowGold","MooCowW","moWait","MrStark","NeckBeard","NoAnime","NoBitches","NOBULLY","NoTears","OKKona","oldmorDim","OMEGAKEKMAN","OMEGALOL","OverRustle","PatrickMad","PatrickPray","pedro","peepoVW","PEPE","PogCena","PogT","poki1","poki2","pokiW","politeCatWTF","Popoga","PunkChamp","RAGEY","ratJAM","REE","RIPBOZO","sameEnergy","selyihHEY","SNIFFA","StareBruh","Stonks","SuicideThinking","sunglassesflushed","SURPRISE","susfox","Sussy","SWEATSTINY","TeaTime","ThisIsFine","ThumbsUp","totekatze","TrollDespair","TrollLaugh","VoHiYo","WeirdAYAYA","worryChocolate","worryCool","worryExcite","worryFat","worryHug","worryHugged","worryLove","worryPopcorn","worryStick","worryWave","WrathChest","yacubgasm","YEE","yeshoney","YodaSip","YOGGERS","YoshiBlush","ZOINKS"},
|
||||
[5]= {"Greekgodx","greekA","greekBrow","greekDiet","greekGirl","greekGordo","greekGweek","greekHard","greekHYPERP","greekJoy","greekKek","greekM","greekMlady","greekOi","greekP","greekPVC","greekSad","greekSheep","greekSleeper","greekSquad","greekT","greekThink","greekTilt","greekWC","greekWhy","greekWtf","greekYikes"},
|
||||
[6]= {"nymn","nymn0","nymn1","nymn158","nymn2","nymn2x","nymn3","nymnA","nymnAww","nymnB","nymnBee","nymnBenis","nymnBiggus","nymnBridge","nymnC","nymnCaptain","nymnCC","nymnCD","nymnCozy","nymnCREB","nymnCringe","nymnCry","nymnDab","nymnDeer","nymnE","nymnElf","nymnEU","nymnEZ","nymnFEEDME","nymnFlag","nymnFlick","nymnFood","nymnG","nymnGasm","nymnGasp","nymnGnome","nymnGold","nymnGolden","nymnGun","nymnH","nymnHammer","nymnHmm","nymnHonk","nymnHydra","nymnJoy","nymnK","nymnKek","nymnKing","nymnKomrade","nymnL","nymnM","nymnNA","nymnNo","nymnNormie","nymnOkay","nymnP","nymnPains","nymnPog","nymnPuke","nymnR","nymnRaffle","nymnRupert","nymnS","nymnSad","nymnScuffed","nymnSleeper","nymnSmart","nymnSmol","nymnSmug","nymnSon","nymnSoy","nymnSpurdo","nymnStrong","nymnThink","nymnTransparent","nymnU","nymnV","nymnW","nymnWhy","nymnXD","nymnY","nymnZ"},
|
||||
[7]= {"Drainerx","drxBrain","drxCozy","drxCri","drxCS","drxD","drxDict","drxED","drxED2","drxEyes","drxFE","drxFE1","drxFEED","drxGlad","drxGod","drxHappy","drxHey","drxKEK","drxLewd","drxLit","drxLUL","drxMad","drxmonkaEYES","drxPog","drxR","drxSad","drxSmart","drxSmile","drxSpace","drxSSJ","drxThink","drxW","drxWeird","drxWink"},
|
||||
|
||||
@@ -21,10 +21,11 @@ local function GetCurrentFrameNum(animdata)
|
||||
return math.floor((TWITCHEMOTES_T * animdata.framerate) % animdata.nFrames)
|
||||
end
|
||||
|
||||
-- Frames run row-major across however many columns the sheet is wide. The
|
||||
-- client caps a texture at 1024px in either dimension (nothing in its own art
|
||||
-- exceeds it) and squeezes anything larger on load, so the longest animations
|
||||
-- are packed as two 32px columns rather than one over-tall strip.
|
||||
-- Frames run row-major across however many columns the sheet is wide. Two
|
||||
-- client limits force that: no texture side may exceed 1024, and a texture
|
||||
-- skinnier than 16:1 doesn't draw at all -- a 32x1024 strip renders nothing,
|
||||
-- while the same frames as 64x512 render fine. So a run longer than 16 frames
|
||||
-- is packed in columns rather than as one tall strip.
|
||||
local function GetFrameRect(animdata, framenum)
|
||||
local cols = math.floor(animdata.imageWidth / animdata.frameWidth)
|
||||
if cols < 1 then cols = 1 end
|
||||
@@ -40,9 +41,8 @@ local function CropToCurrentFrame(tex, animdata)
|
||||
top / animdata.imageHeight, bottom / animdata.imageHeight)
|
||||
end
|
||||
|
||||
-- The engine splits the payload on ':' and atoi's each field, so a coordinate
|
||||
-- carrying a decimal point silently truncates and crops the wrong rect (a
|
||||
-- fractional framerate is enough to leak one in). Format them as integers.
|
||||
-- The crop bounds are texel offsets, so emit them as integers rather than
|
||||
-- letting a float from the frame maths stringify into the payload.
|
||||
local function BuildFrameString(imagepath, animdata, framenum, w, h)
|
||||
local left, right, top, bottom = GetFrameRect(animdata, framenum)
|
||||
return ("|T%s:%d:%d:0:0:%d:%d:%d:%d:%d:%d|t"):format(imagepath, w, h,
|
||||
|
||||
@@ -13,12 +13,14 @@ Two client constraints drive the conversion:
|
||||
longer than 32 frames is packed row-major across several 32px columns
|
||||
rather than one over-tall strip. TwitchEmotesAnimator derives the column
|
||||
count from imageWidth / frameWidth.
|
||||
* The animator plays frames at one constant rate, but GIFs hold individual
|
||||
frames for different lengths. Uneven delays are expanded into repeated
|
||||
frames at whichever integer rate reproduces the original timing most
|
||||
closely within the frame budget.
|
||||
* The animator plays frames at one constant rate off a ~30fps ticker, but a
|
||||
GIF holds each frame for as long as it likes. The source timeline is
|
||||
resampled at a constant rate instead: a long hold repeats, and a source
|
||||
faster than the ticker (or too long for the frame budget) drops frames.
|
||||
The loop keeps its original duration either way.
|
||||
"""
|
||||
import argparse
|
||||
import bisect
|
||||
import os
|
||||
import re
|
||||
import struct
|
||||
@@ -30,6 +32,7 @@ from PIL import Image, ImageSequence
|
||||
CDN = 'https://cdn.betterttv.net/emote/%s/%s'
|
||||
FRAME = 32 # frame size in the sheet; emotes render at 28x28
|
||||
MAX_TEXTURE = 1024 # client cap, per side
|
||||
MAX_ASPECT = 16 # see layout(): skinnier than this and nothing draws
|
||||
MAX_COLS = 4 # 4 * 32 = 128px wide, 128 frames at most
|
||||
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
@@ -69,44 +72,59 @@ def load_frames(blob):
|
||||
return frames, durations
|
||||
|
||||
|
||||
TIMING_TOLERANCE = 0.05 # 5% drift over a loop is not perceptible
|
||||
TICKER_FPS = 30 # TwitchEmotesAnimator advances frames on a ~30fps ticker
|
||||
|
||||
|
||||
def pick_framerate(durations, budget):
|
||||
"""Integer fps whose repeated frames reproduce the source timing.
|
||||
def resample(durations, budget):
|
||||
"""Sample the source timeline at a constant rate the animator can play.
|
||||
|
||||
Returns (fps, repeats). Every frame is shown at least once, so a rate too
|
||||
slow to represent the shortest delay simply rounds it up. Among the rates
|
||||
that hold the loop length within tolerance, the one needing the fewest
|
||||
frames wins - a faster rate can always match the duration more exactly, but
|
||||
it pays for that in texture size.
|
||||
Returns (fps, indices): which source frame to show on each tick. Sampling
|
||||
handles both directions - a frame held longer than a tick repeats, and a
|
||||
source faster than the ticker (or too long for the frame budget) drops
|
||||
frames. Either way the loop keeps the source's duration, which matters more
|
||||
than showing every frame: nothing above the ticker rate can be displayed
|
||||
anyway.
|
||||
"""
|
||||
total = sum(durations) / 1000.0
|
||||
candidates = []
|
||||
for fps in range(1, 31):
|
||||
repeats = [max(1, int(round(d * fps / 1000.0))) for d in durations]
|
||||
if sum(repeats) > budget:
|
||||
continue
|
||||
error = abs(sum(repeats) / float(fps) - total)
|
||||
candidates.append((error, sum(repeats), fps, repeats))
|
||||
if not candidates:
|
||||
total = sum(durations)
|
||||
if not total:
|
||||
sys.exit('animation has no frame delays to time it by')
|
||||
shortest = min(d for d in durations if d > 0)
|
||||
fps = min(TICKER_FPS, max(1, int(round(1000.0 / shortest))))
|
||||
while fps > 1 and int(round(total * fps / 1000.0)) > budget:
|
||||
fps -= 1
|
||||
count = max(1, int(round(total * fps / 1000.0)))
|
||||
if count > budget:
|
||||
sys.exit('animation does not fit in %d frames' % budget)
|
||||
tolerance = max(total * TIMING_TOLERANCE, 0.05)
|
||||
within = [c for c in candidates if c[0] <= tolerance]
|
||||
best = min(within or candidates, key=lambda c: (c[1], c[0]))
|
||||
return best[2], best[3]
|
||||
|
||||
ends, acc = [], 0
|
||||
for d in durations:
|
||||
acc += d
|
||||
ends.append(acc)
|
||||
indices = []
|
||||
for tick in range(count):
|
||||
at = (tick + 0.5) * total / count # middle of the tick
|
||||
indices.append(min(bisect.bisect_left(ends, at), len(durations) - 1))
|
||||
return fps, indices
|
||||
|
||||
|
||||
def layout(count):
|
||||
"""Smallest column count whose rows fit the texture cap."""
|
||||
"""Smallest column count giving a texture the client can actually sample.
|
||||
|
||||
Two limits, both found the hard way: no side may exceed 1024, and the sheet
|
||||
may not be skinnier than 16:1 - a 32x1024 strip (32:1) draws nothing at all,
|
||||
while the same frames as 64x512 draw fine. So a run longer than 16 frames
|
||||
goes to two columns rather than growing the strip.
|
||||
"""
|
||||
for cols in (1, 2, 4):
|
||||
width = cols * FRAME
|
||||
rows = -(-count // cols)
|
||||
if rows * FRAME <= MAX_TEXTURE:
|
||||
height = FRAME
|
||||
while height < rows * FRAME:
|
||||
height *= 2
|
||||
height = FRAME
|
||||
while height < rows * FRAME:
|
||||
height *= 2
|
||||
if height <= MAX_TEXTURE and height <= width * MAX_ASPECT:
|
||||
return cols, height
|
||||
sys.exit('%d frames exceed the %dpx texture cap' % (count, MAX_TEXTURE))
|
||||
sys.exit('%d frames do not fit a sheet within %dpx and %d:1'
|
||||
% (count, MAX_TEXTURE, MAX_ASPECT))
|
||||
|
||||
|
||||
def write_tga(im, path):
|
||||
@@ -120,10 +138,8 @@ def write_tga(im, path):
|
||||
f.write(Image.merge('RGBA', (b, g, r, a)).tobytes())
|
||||
|
||||
|
||||
def build_sheet(frames, repeats):
|
||||
expanded = []
|
||||
for frame, n in zip(frames, repeats):
|
||||
expanded.extend([frame] * n)
|
||||
def build_sheet(frames, indices):
|
||||
expanded = [frames[i] for i in indices]
|
||||
cols, height = layout(len(expanded))
|
||||
sheet = Image.new('RGBA', (cols * FRAME, height), (0, 0, 0, 0))
|
||||
for i, frame in enumerate(expanded):
|
||||
@@ -227,13 +243,13 @@ def main():
|
||||
sheet, info = frames[0], None
|
||||
print('%s: static 32x32' % args.name)
|
||||
else:
|
||||
fps, repeats = pick_framerate(durations, MAX_COLS * (MAX_TEXTURE // FRAME))
|
||||
sheet, nframes, cols, height = build_sheet(frames, repeats)
|
||||
fps, indices = resample(durations, MAX_COLS * (MAX_TEXTURE // FRAME))
|
||||
sheet, nframes, cols, height = build_sheet(frames, indices)
|
||||
info = (nframes, cols, height, fps)
|
||||
print('%s: %d source frames (%.2fs) -> %d frames at %dfps (%.2fs), '
|
||||
'%dx%d sheet in %d column(s)' %
|
||||
print('%s: %d source frames (%.2fs) -> %d frames at %dfps (%.2fs, '
|
||||
'%d of the source frames kept), %dx%d sheet in %d column(s)' %
|
||||
(args.name, len(frames), sum(durations) / 1000.0, nframes, fps,
|
||||
nframes / float(fps), cols * FRAME, height, cols))
|
||||
nframes / float(fps), len(set(indices)), cols * FRAME, height, cols))
|
||||
|
||||
if args.dry_run:
|
||||
print('dry run: would write %s' % os.path.relpath(tga, ROOT))
|
||||
|
||||