From 60565537adcc40df7ec6547cfe92236aec038f49 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Fri, 17 Sep 2021 22:10:25 -0500 Subject: [PATCH 01/10] Use the fonts that are already in our resources folder --- toontown/toonbase/TTLocalizerEnglish.py | 42 ++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/toontown/toonbase/TTLocalizerEnglish.py b/toontown/toonbase/TTLocalizerEnglish.py index 41cbd7b..2df80b7 100644 --- a/toontown/toonbase/TTLocalizerEnglish.py +++ b/toontown/toonbase/TTLocalizerEnglish.py @@ -1,23 +1,23 @@ -InterfaceFont = 'phase_3/models/fonts/ImpressBT.ttf' -ToonFont = 'phase_3/models/fonts/ImpressBT.ttf' -SuitFont = 'phase_3/models/fonts/vtRemingtonPortable.ttf' -SignFont = 'phase_3/models/fonts/MickeyFont' -MinnieFont = 'phase_3/models/fonts/MinnieFont' -FancyFont = 'phase_3/models/fonts/Comedy' -NametagFonts = ('phase_3/models/fonts/AnimGothic', #0 * - 'phase_3/models/fonts/Aftershock', #1 * - 'phase_3/models/fonts/JiggeryPokery', #2 * - 'phase_3/models/fonts/Ironwork', #3 * - 'phase_3/models/fonts/HastyPudding', #4 * - 'phase_3/models/fonts/Comedy', #5 * - 'phase_3/models/fonts/Humanist', #6 * - 'phase_3/models/fonts/Portago', #7 * - 'phase_3/models/fonts/Musicals', #8 * - 'phase_3/models/fonts/Scurlock', #9 * - 'phase_3/models/fonts/Danger', #10 * - 'phase_3/models/fonts/Alie', #11 * - 'phase_3/models/fonts/OysterBar', #12 * - 'phase_3/models/fonts/RedDogSaloon', #13 * +InterfaceFont = 'fonts/ToonFont.ttf' +ToonFont = 'fonts/ToonFont.ttf' +SuitFont = 'fonts/vtRemingtonPortable.ttf' +SignFont = 'fonts/MickeyFont' +MinnieFont = 'fonts/MinnieFont' +FancyFont = 'fonts/Comedy' +NametagFonts = ('fonts/AnimGothic', #0 * + 'fonts/Aftershock', #1 * + 'fonts/JiggeryPokery', #2 * + 'fonts/Ironwork', #3 * + 'fonts/HastyPudding', #4 * + 'fonts/Comedy', #5 * + 'fonts/Humanist', #6 * + 'fonts/Portago', #7 * + 'fonts/Musicals', #8 * + 'fonts/Scurlock', #9 * + 'fonts/Danger', #10 * + 'fonts/Alie', #11 * + 'fonts/OysterBar', #12 * + 'fonts/RedDogSaloon', #13 * ) NametagFontNames = ('Member', #0 * 'Shivering', #1 * @@ -39,7 +39,7 @@ UnpaidNameTag = "Basic" -BuildingNametagFont = 'phase_3/models/fonts/MickeyFont' +BuildingNametagFont = 'fonts/MickeyFont' BuildingNametagShadow = None # Product prefix From 416c5869e545332a12ff2c7816ffaf303b0e257e Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Fri, 17 Sep 2021 23:23:47 -0500 Subject: [PATCH 02/10] Revert "Use the fonts that are already in our resources folder" This reverts commit 60565537adcc40df7ec6547cfe92236aec038f49. --- toontown/toonbase/TTLocalizerEnglish.py | 42 ++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/toontown/toonbase/TTLocalizerEnglish.py b/toontown/toonbase/TTLocalizerEnglish.py index 2df80b7..41cbd7b 100644 --- a/toontown/toonbase/TTLocalizerEnglish.py +++ b/toontown/toonbase/TTLocalizerEnglish.py @@ -1,23 +1,23 @@ -InterfaceFont = 'fonts/ToonFont.ttf' -ToonFont = 'fonts/ToonFont.ttf' -SuitFont = 'fonts/vtRemingtonPortable.ttf' -SignFont = 'fonts/MickeyFont' -MinnieFont = 'fonts/MinnieFont' -FancyFont = 'fonts/Comedy' -NametagFonts = ('fonts/AnimGothic', #0 * - 'fonts/Aftershock', #1 * - 'fonts/JiggeryPokery', #2 * - 'fonts/Ironwork', #3 * - 'fonts/HastyPudding', #4 * - 'fonts/Comedy', #5 * - 'fonts/Humanist', #6 * - 'fonts/Portago', #7 * - 'fonts/Musicals', #8 * - 'fonts/Scurlock', #9 * - 'fonts/Danger', #10 * - 'fonts/Alie', #11 * - 'fonts/OysterBar', #12 * - 'fonts/RedDogSaloon', #13 * +InterfaceFont = 'phase_3/models/fonts/ImpressBT.ttf' +ToonFont = 'phase_3/models/fonts/ImpressBT.ttf' +SuitFont = 'phase_3/models/fonts/vtRemingtonPortable.ttf' +SignFont = 'phase_3/models/fonts/MickeyFont' +MinnieFont = 'phase_3/models/fonts/MinnieFont' +FancyFont = 'phase_3/models/fonts/Comedy' +NametagFonts = ('phase_3/models/fonts/AnimGothic', #0 * + 'phase_3/models/fonts/Aftershock', #1 * + 'phase_3/models/fonts/JiggeryPokery', #2 * + 'phase_3/models/fonts/Ironwork', #3 * + 'phase_3/models/fonts/HastyPudding', #4 * + 'phase_3/models/fonts/Comedy', #5 * + 'phase_3/models/fonts/Humanist', #6 * + 'phase_3/models/fonts/Portago', #7 * + 'phase_3/models/fonts/Musicals', #8 * + 'phase_3/models/fonts/Scurlock', #9 * + 'phase_3/models/fonts/Danger', #10 * + 'phase_3/models/fonts/Alie', #11 * + 'phase_3/models/fonts/OysterBar', #12 * + 'phase_3/models/fonts/RedDogSaloon', #13 * ) NametagFontNames = ('Member', #0 * 'Shivering', #1 * @@ -39,7 +39,7 @@ UnpaidNameTag = "Basic" -BuildingNametagFont = 'fonts/MickeyFont' +BuildingNametagFont = 'phase_3/models/fonts/MickeyFont' BuildingNametagShadow = None # Product prefix From b7cebf95b0ac467ae55826d8ff8cb9d32a25d405 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Sat, 18 Sep 2021 01:17:41 -0500 Subject: [PATCH 03/10] eye colors now work finally --- toontown/toon/RobotToonManager.py | 10 +- toontown/toon/Toon.py | 4 + toontown/toon/ToonDNA.py | 609 +++++++++++++++--------------- toontown/toon/ToonHead.py | 35 +- 4 files changed, 337 insertions(+), 321 deletions(-) diff --git a/toontown/toon/RobotToonManager.py b/toontown/toon/RobotToonManager.py index 809ede0..c50dd94 100644 --- a/toontown/toon/RobotToonManager.py +++ b/toontown/toon/RobotToonManager.py @@ -910,6 +910,7 @@ def parseAvatarProperties(self, line): gloveColor = int(line[i]);i+=1 legColor = int(line[i]);i+=1 headColor = int(line[i]);i+=1 + eyeColor = int(line[i]);i+=1 topTexture = int(line[i]);i+=1 topTextureColor = int(line[i]);i+=1 sleeveTexture = int(line[i]);i+=1 @@ -917,7 +918,7 @@ def parseAvatarProperties(self, line): bottomTexture = int(line[i]);i+=1 bottomTextureColor = int(line[i]);i+=1 props = [head, torso, legs, gender, - armColor, gloveColor, legColor, headColor, + armColor, gloveColor, legColor, headColor, eyeColor, topTexture, topTextureColor, sleeveTexture, sleeveTextureColor, bottomTexture, bottomTextureColor] @@ -1728,6 +1729,11 @@ def createInterface(self): self.colorMode, 'head', None, help = 'Set head color', side = LEFT) + self.newCreateRadiobutton( + colorModeFrame, 'ColorMode', 'Eyes', + self.colorMode, 'eyes', None, + help = 'Set eye color', + side = LEFT) colorModeFrame.pack(fill = X, expand = 0) # COLOR TABLETS @@ -2837,6 +2843,8 @@ def setToonColor(self, colorIndex): dna.legColor = colorIndex elif cm == 'head': dna.headColor = colorIndex + elif cm == 'eyes': + dna.eyeColor = colorIndex st.swapToonColor(dna) def updateToonInfo(self): diff --git a/toontown/toon/Toon.py b/toontown/toon/Toon.py index a08000d..4a03ff2 100644 --- a/toontown/toon/Toon.py +++ b/toontown/toon/Toon.py @@ -1247,6 +1247,10 @@ def generateToonLegs(self, copy = 1): self.loadAnims(LegsAnimDict[legStyle], "legs", "1000") self.loadAnims(LegsAnimDict[legStyle], "legs", "500") self.loadAnims(LegsAnimDict[legStyle], "legs", "250") + #get rid of the shoes bc we dont need them rn + self.findAllMatches('**/boots_short').stash() + self.findAllMatches('**/boots_long').stash() + self.findAllMatches('**/shoes').stash() def swapToonLegs(self, legStyle, copy = 1): """swapToonLegs(self, string, bool = 1) diff --git a/toontown/toon/ToonDNA.py b/toontown/toon/ToonDNA.py index 81b8e7f..4cc46f1 100644 --- a/toontown/toon/ToonDNA.py +++ b/toontown/toon/ToonDNA.py @@ -126,154 +126,154 @@ def getSpeciesName(head): toonLegTypes = [ "s", "m", "l" ] # Short, Medium, Long. Shirts = [ - "phase_3/maps/desat_shirt_1.jpg", # 0 solid - "phase_3/maps/desat_shirt_2.jpg", # 1 single stripe - "phase_3/maps/desat_shirt_3.jpg", # 2 collar - "phase_3/maps/desat_shirt_4.jpg", # 3 double stripe - "phase_3/maps/desat_shirt_5.jpg", # 4 multiple stripes (boy) - "phase_3/maps/desat_shirt_6.jpg", # 5 collar w/ pocket - "phase_3/maps/desat_shirt_7.jpg", # 6 flower print (girl) - "phase_3/maps/desat_shirt_8.jpg", # 7 special, flower trim (girl) - "phase_3/maps/desat_shirt_9.jpg", # 8 hawaiian (boy) - "phase_3/maps/desat_shirt_10.jpg", # 9 collar w/ 2 pockets - "phase_3/maps/desat_shirt_11.jpg", # 10 bowling shirt - "phase_3/maps/desat_shirt_12.jpg", # 11 special, vest (boy) - "phase_3/maps/desat_shirt_13.jpg", # 12 special (no color), denim vest (girl) - "phase_3/maps/desat_shirt_14.jpg", # 13 peasant (girl) - "phase_3/maps/desat_shirt_15.jpg", # 14 collar w/ ruffles - "phase_3/maps/desat_shirt_16.jpg", # 15 peasant w/ mid stripe (girl) - "phase_3/maps/desat_shirt_17.jpg", # 16 special (no color), soccer jersey - "phase_3/maps/desat_shirt_18.jpg", # 17 special, lightning bolt - "phase_3/maps/desat_shirt_19.jpg", # 18 special, jersey 19 (boy) - "phase_3/maps/desat_shirt_20.jpg", # 19 guayavera (boy) - "phase_3/maps/desat_shirt_21.jpg", # 20 hearts (girl) - "phase_3/maps/desat_shirt_22.jpg", # 21 special, stars (girl) - "phase_3/maps/desat_shirt_23.jpg", # 22 flower (girl) + "phase_3/maps/desat_shirt_1.png", # 0 solid + "phase_3/maps/desat_shirt_2.png", # 1 single stripe + "phase_3/maps/desat_shirt_3.png", # 2 collar + "phase_3/maps/desat_shirt_4.png", # 3 double stripe + "phase_3/maps/desat_shirt_5.png", # 4 multiple stripes (boy) + "phase_3/maps/desat_shirt_6.png", # 5 collar w/ pocket + "phase_3/maps/desat_shirt_7.png", # 6 flower print (girl) + "phase_3/maps/desat_shirt_8.png", # 7 special, flower trim (girl) + "phase_3/maps/desat_shirt_9.png", # 8 hawaiian (boy) + "phase_3/maps/desat_shirt_10.png", # 9 collar w/ 2 pockets + "phase_3/maps/desat_shirt_11.png", # 10 bowling shirt + "phase_3/maps/desat_shirt_12.png", # 11 special, vest (boy) + "phase_3/maps/desat_shirt_13.png", # 12 special (no color), denim vest (girl) + "phase_3/maps/desat_shirt_14.png", # 13 peasant (girl) + "phase_3/maps/desat_shirt_15.png", # 14 collar w/ ruffles + "phase_3/maps/desat_shirt_16.png", # 15 peasant w/ mid stripe (girl) + "phase_3/maps/desat_shirt_17.png", # 16 special (no color), soccer jersey + "phase_3/maps/desat_shirt_18.png", # 17 special, lightning bolt + "phase_3/maps/desat_shirt_19.png", # 18 special, jersey 19 (boy) + "phase_3/maps/desat_shirt_20.png", # 19 guayavera (boy) + "phase_3/maps/desat_shirt_21.png", # 20 hearts (girl) + "phase_3/maps/desat_shirt_22.png", # 21 special, stars (girl) + "phase_3/maps/desat_shirt_23.png", # 22 flower (girl) # Catalog exclusive shirts - "phase_4/maps/female_shirt1b.jpg", # 23 blue with 3 yellow stripes - "phase_4/maps/female_shirt2.jpg", # 24 pink and beige with flower - "phase_4/maps/female_shirt3.jpg", # 25 yellow hooded sweatshirt (also for boys) - "phase_4/maps/male_shirt1.jpg", # 26 blue stripes - "phase_4/maps/male_shirt2_palm.jpg", # 27 yellow with palm tree - "phase_4/maps/male_shirt3c.jpg", # 28 orange + "phase_4/maps/female_shirt1b.png", # 23 blue with 3 yellow stripes + "phase_4/maps/female_shirt2.png", # 24 pink and beige with flower + "phase_4/maps/female_shirt3.png", # 25 yellow hooded sweatshirt (also for boys) + "phase_4/maps/male_shirt1.png", # 26 blue stripes + "phase_4/maps/male_shirt2_palm.png", # 27 yellow with palm tree + "phase_4/maps/male_shirt3c.png", # 28 orange # Halloween - "phase_4/maps/shirt_ghost.jpg", # 29 ghost (Halloween) - "phase_4/maps/shirt_pumkin.jpg", # 30 pumpkin (Halloween) + "phase_4/maps/shirt_ghost.png", # 29 ghost (Halloween) + "phase_4/maps/shirt_pumkin.png", # 30 pumpkin (Halloween) # Winter holiday - "phase_4/maps/holiday_shirt1.jpg", # 31 (Winter Holiday) - "phase_4/maps/holiday_shirt2b.jpg", # 32 (Winter Holiday) - "phase_4/maps/holidayShirt3b.jpg", # 33 (Winter Holiday) - "phase_4/maps/holidayShirt4.jpg", # 34 (Winter Holiday) + "phase_4/maps/holiday_shirt1.png", # 31 (Winter Holiday) + "phase_4/maps/holiday_shirt2b.png", # 32 (Winter Holiday) + "phase_4/maps/holidayShirt3b.png", # 33 (Winter Holiday) + "phase_4/maps/holidayShirt4.png", # 34 (Winter Holiday) # Catalog 2 exclusive shirts - "phase_4/maps/female_shirt1b.jpg", # 35 Blue and gold wavy stripes - "phase_4/maps/female_shirt5New.jpg", # 36 Blue and pink with bow - "phase_4/maps/shirtMale4B.jpg", # 37 Lime green with stripe - "phase_4/maps/shirt6New.jpg", # 38 Purple with stars - "phase_4/maps/shirtMaleNew7.jpg", # 39 Red kimono with checkerboard + "phase_4/maps/female_shirt1b.png", # 35 Blue and gold wavy stripes + "phase_4/maps/female_shirt5New.png", # 36 Blue and pink with bow + "phase_4/maps/shirtMale4B.png", # 37 Lime green with stripe + "phase_4/maps/shirt6New.png", # 38 Purple with stars + "phase_4/maps/shirtMaleNew7.png", # 39 Red kimono with checkerboard # Unused - "phase_4/maps/femaleShirtNew6.jpg", # 40 Aqua kimono white stripe + "phase_4/maps/femaleShirtNew6.png", # 40 Aqua kimono white stripe # Valentines - "phase_4/maps/Vday1Shirt5.jpg", # 41 (Valentines) - "phase_4/maps/Vday1Shirt6SHD.jpg", # 42 (Valentines) - "phase_4/maps/Vday1Shirt4.jpg", # 43 (Valentines) - "phase_4/maps/Vday_shirt2c.jpg", # 44 (Valentines) + "phase_4/maps/Vday1Shirt5.png", # 41 (Valentines) + "phase_4/maps/Vday1Shirt6SHD.png", # 42 (Valentines) + "phase_4/maps/Vday1Shirt4.png", # 43 (Valentines) + "phase_4/maps/Vday_shirt2c.png", # 44 (Valentines) # Catalog 3 exclusive shirts - "phase_4/maps/shirtTieDyeNew.jpg", # 45 Tie dye - "phase_4/maps/male_shirt1.jpg", # 46 Light blue with blue and white stripe + "phase_4/maps/shirtTieDyeNew.png", # 45 Tie dye + "phase_4/maps/male_shirt1.png", # 46 Light blue with blue and white stripe # St Patrick's Day shirts - "phase_4/maps/StPats_shirt1.jpg", # 47 (St. Pats) Four leaf clover shirt - "phase_4/maps/StPats_shirt2.jpg", # 48 (St. Pats) Pot o gold + "phase_4/maps/StPats_shirt1.png", # 47 (St. Pats) Four leaf clover shirt + "phase_4/maps/StPats_shirt2.png", # 48 (St. Pats) Pot o gold # T-Shirt Contest shirts - "phase_4/maps/ContestfishingVestShirt2.jpg", # 49 (T-shirt Contest) Fishing Vest - "phase_4/maps/ContestFishtankShirt1.jpg", # 50 (T-shirt Contest) Fish Tank - "phase_4/maps/ContestPawShirt1.jpg", # 51 (T-shirt Contest) Paw Print + "phase_4/maps/ContestfishingVestShirt2.png", # 49 (T-shirt Contest) Fishing Vest + "phase_4/maps/ContestFishtankShirt1.png", # 50 (T-shirt Contest) Fish Tank + "phase_4/maps/ContestPawShirt1.png", # 51 (T-shirt Contest) Paw Print # Catlog 4 exclusive shirts - "phase_4/maps/CowboyShirt1.jpg", # 52 (Western) Cowboy Shirt - "phase_4/maps/CowboyShirt2.jpg", # 53 (Western) Cowboy Shirt - "phase_4/maps/CowboyShirt3.jpg", # 54 (Western) Cowboy Shirt - "phase_4/maps/CowboyShirt4.jpg", # 55 (Western) Cowboy Shirt - "phase_4/maps/CowboyShirt5.jpg", # 56 (Western) Cowboy Shirt - "phase_4/maps/CowboyShirt6.jpg", # 57 (Western) Cowboy Shirt + "phase_4/maps/CowboyShirt1.png", # 52 (Western) Cowboy Shirt + "phase_4/maps/CowboyShirt2.png", # 53 (Western) Cowboy Shirt + "phase_4/maps/CowboyShirt3.png", # 54 (Western) Cowboy Shirt + "phase_4/maps/CowboyShirt4.png", # 55 (Western) Cowboy Shirt + "phase_4/maps/CowboyShirt5.png", # 56 (Western) Cowboy Shirt + "phase_4/maps/CowboyShirt6.png", # 57 (Western) Cowboy Shirt # July 4 shirts - "phase_4/maps/4thJulyShirt1.jpg", # 58 (July 4th) Flag Shirt - "phase_4/maps/4thJulyShirt2.jpg", # 59 (July 4th) Fireworks Shirt + "phase_4/maps/4thJulyShirt1.png", # 58 (July 4th) Flag Shirt + "phase_4/maps/4thJulyShirt2.png", # 59 (July 4th) Fireworks Shirt # Catalog 7 exclusive shirts - "phase_4/maps/shirt_Cat7_01.jpg", # 60 Green w/ yellow buttons - "phase_4/maps/shirt_Cat7_02.jpg", # 61 Purple w/ big flower + "phase_4/maps/shirt_Cat7_01.png", # 60 Green w/ yellow buttons + "phase_4/maps/shirt_Cat7_02.png", # 61 Purple w/ big flower # T-Shirt Contest 2 shirts - "phase_4/maps/contest_backpack3.jpg", # 62 Multicolor shirt w/ backpack - "phase_4/maps/contest_leder.jpg", # 63 Lederhosen - "phase_4/maps/contest_mellon2.jpg", # 64 Watermelon - "phase_4/maps/contest_race2.jpg", # 65 Race Shirt (UK winner) + "phase_4/maps/contest_backpack3.png", # 62 Multicolor shirt w/ backpack + "phase_4/maps/contest_leder.png", # 63 Lederhosen + "phase_4/maps/contest_mellon2.png", # 64 Watermelon + "phase_4/maps/contest_race2.png", # 65 Race Shirt (UK winner) # Pajama shirts - "phase_4/maps/PJBlueBanana2.jpg", # 66 Blue Banana PJ Shirt - "phase_4/maps/PJRedHorn2.jpg", # 67 Red Horn PJ Shirt - "phase_4/maps/PJGlasses2.jpg", # 68 Purple Glasses PJ Shirt + "phase_4/maps/PJBlueBanana2.png", # 66 Blue Banana PJ Shirt + "phase_4/maps/PJRedHorn2.png", # 67 Red Horn PJ Shirt + "phase_4/maps/PJGlasses2.png", # 68 Purple Glasses PJ Shirt # 2009 Valentines Day Shirts - "phase_4/maps/tt_t_chr_avt_shirt_valentine1.jpg", # 69 Valentines Shirt 1 - "phase_4/maps/tt_t_chr_avt_shirt_valentine2.jpg", # 70 Valentines Shirt 2 + "phase_4/maps/tt_t_chr_avt_shirt_valentine1.png", # 69 Valentines Shirt 1 + "phase_4/maps/tt_t_chr_avt_shirt_valentine2.png", # 70 Valentines Shirt 2 # Award Clothes - "phase_4/maps/tt_t_chr_avt_shirt_desat4.jpg", # 71 - "phase_4/maps/tt_t_chr_avt_shirt_fishing1.jpg", # 72 - "phase_4/maps/tt_t_chr_avt_shirt_fishing2.jpg", # 73 - "phase_4/maps/tt_t_chr_avt_shirt_gardening1.jpg", # 74 - "phase_4/maps/tt_t_chr_avt_shirt_gardening2.jpg", # 75 - "phase_4/maps/tt_t_chr_avt_shirt_party1.jpg", # 76 - "phase_4/maps/tt_t_chr_avt_shirt_party2.jpg", # 77 - "phase_4/maps/tt_t_chr_avt_shirt_racing1.jpg", # 78 - "phase_4/maps/tt_t_chr_avt_shirt_racing2.jpg", # 79 - "phase_4/maps/tt_t_chr_avt_shirt_summer1.jpg", # 80 - "phase_4/maps/tt_t_chr_avt_shirt_summer2.jpg", # 81 - - "phase_4/maps/tt_t_chr_avt_shirt_golf1.jpg", # 82 - "phase_4/maps/tt_t_chr_avt_shirt_golf2.jpg", # 83 - "phase_4/maps/tt_t_chr_avt_shirt_halloween1.jpg", # 84 - "phase_4/maps/tt_t_chr_avt_shirt_halloween2.jpg", # 85 - "phase_4/maps/tt_t_chr_avt_shirt_marathon1.jpg", # 86 - "phase_4/maps/tt_t_chr_avt_shirt_saveBuilding1.jpg", # 87 - "phase_4/maps/tt_t_chr_avt_shirt_saveBuilding2.jpg", # 88 - "phase_4/maps/tt_t_chr_avt_shirt_toonTask1.jpg", # 89 - "phase_4/maps/tt_t_chr_avt_shirt_toonTask2.jpg", # 90 - "phase_4/maps/tt_t_chr_avt_shirt_trolley1.jpg", # 91 - "phase_4/maps/tt_t_chr_avt_shirt_trolley2.jpg", # 92 - "phase_4/maps/tt_t_chr_avt_shirt_winter1.jpg", # 93 - "phase_4/maps/tt_t_chr_avt_shirt_halloween3.jpg", # 94 - "phase_4/maps/tt_t_chr_avt_shirt_halloween4.jpg", # 95 + "phase_4/maps/tt_t_chr_avt_shirt_desat4.png", # 71 + "phase_4/maps/tt_t_chr_avt_shirt_fishing1.png", # 72 + "phase_4/maps/tt_t_chr_avt_shirt_fishing2.png", # 73 + "phase_4/maps/tt_t_chr_avt_shirt_gardening1.png", # 74 + "phase_4/maps/tt_t_chr_avt_shirt_gardening2.png", # 75 + "phase_4/maps/tt_t_chr_avt_shirt_party1.png", # 76 + "phase_4/maps/tt_t_chr_avt_shirt_party2.png", # 77 + "phase_4/maps/tt_t_chr_avt_shirt_racing1.png", # 78 + "phase_4/maps/tt_t_chr_avt_shirt_racing2.png", # 79 + "phase_4/maps/tt_t_chr_avt_shirt_summer1.png", # 80 + "phase_4/maps/tt_t_chr_avt_shirt_summer2.png", # 81 + + "phase_4/maps/tt_t_chr_avt_shirt_golf1.png", # 82 + "phase_4/maps/tt_t_chr_avt_shirt_golf2.png", # 83 + "phase_4/maps/tt_t_chr_avt_shirt_halloween1.png", # 84 + "phase_4/maps/tt_t_chr_avt_shirt_halloween2.png", # 85 + "phase_4/maps/tt_t_chr_avt_shirt_marathon1.png", # 86 + "phase_4/maps/tt_t_chr_avt_shirt_saveBuilding1.png", # 87 + "phase_4/maps/tt_t_chr_avt_shirt_saveBuilding2.png", # 88 + "phase_4/maps/tt_t_chr_avt_shirt_toonTask1.png", # 89 + "phase_4/maps/tt_t_chr_avt_shirt_toonTask2.png", # 90 + "phase_4/maps/tt_t_chr_avt_shirt_trolley1.png", # 91 + "phase_4/maps/tt_t_chr_avt_shirt_trolley2.png", # 92 + "phase_4/maps/tt_t_chr_avt_shirt_winter1.png", # 93 + "phase_4/maps/tt_t_chr_avt_shirt_halloween3.png", # 94 + "phase_4/maps/tt_t_chr_avt_shirt_halloween4.png", # 95 # 2010 Valentines Day Shirts - "phase_4/maps/tt_t_chr_avt_shirt_valentine3.jpg", # 96 Valentines Shirt 3 + "phase_4/maps/tt_t_chr_avt_shirt_valentine3.png", # 96 Valentines Shirt 3 # Scientist Shirts - "phase_4/maps/tt_t_chr_shirt_scientistC.jpg", # 97 - "phase_4/maps/tt_t_chr_shirt_scientistA.jpg", # 98 - "phase_4/maps/tt_t_chr_shirt_scientistB.jpg", # 99 + "phase_4/maps/tt_t_chr_shirt_scientistC.png", # 97 + "phase_4/maps/tt_t_chr_shirt_scientistA.png", # 98 + "phase_4/maps/tt_t_chr_shirt_scientistB.png", # 99 # Silly Story Shirts - "phase_4/maps/tt_t_chr_avt_shirt_mailbox.jpg", # 100 Mailbox Shirt - "phase_4/maps/tt_t_chr_avt_shirt_trashcan.jpg", # 101 Trash Can Shirt - "phase_4/maps/tt_t_chr_avt_shirt_loonyLabs.jpg",# 102 Loony Labs Shirt - "phase_4/maps/tt_t_chr_avt_shirt_hydrant.jpg", # 103 Hydrant Shirt - "phase_4/maps/tt_t_chr_avt_shirt_whistle.jpg", # 104 Sillymeter Whistle Shirt - "phase_4/maps/tt_t_chr_avt_shirt_cogbuster.jpg", # 105 Silly Cogbuster Shirt - - "phase_4/maps/tt_t_chr_avt_shirt_mostCogsDefeated01.jpg", # 106 Most Cogs Defeated Shirt - "phase_4/maps/tt_t_chr_avt_shirt_victoryParty01.jpg", # 107 Victory Party Shirt 1 - "phase_4/maps/tt_t_chr_avt_shirt_victoryParty02.jpg", # 108 Victory Party Shirt 2 + "phase_4/maps/tt_t_chr_avt_shirt_mailbox.png", # 100 Mailbox Shirt + "phase_4/maps/tt_t_chr_avt_shirt_trashcan.png", # 101 Trash Can Shirt + "phase_4/maps/tt_t_chr_avt_shirt_loonyLabs.png",# 102 Loony Labs Shirt + "phase_4/maps/tt_t_chr_avt_shirt_hydrant.png", # 103 Hydrant Shirt + "phase_4/maps/tt_t_chr_avt_shirt_whistle.png", # 104 Sillymeter Whistle Shirt + "phase_4/maps/tt_t_chr_avt_shirt_cogbuster.png", # 105 Silly Cogbuster Shirt + + "phase_4/maps/tt_t_chr_avt_shirt_mostCogsDefeated01.png", # 106 Most Cogs Defeated Shirt + "phase_4/maps/tt_t_chr_avt_shirt_victoryParty01.png", # 107 Victory Party Shirt 1 + "phase_4/maps/tt_t_chr_avt_shirt_victoryParty02.png", # 108 Victory Party Shirt 2 ] # These are deemed safe for MakeAToon @@ -293,206 +293,206 @@ def isValidGirlShirt(index): return 0 Sleeves = [ - "phase_3/maps/desat_sleeve_1.jpg", # 0 - "phase_3/maps/desat_sleeve_2.jpg", # 1 - "phase_3/maps/desat_sleeve_3.jpg", # 2 - "phase_3/maps/desat_sleeve_4.jpg", # 3 - "phase_3/maps/desat_sleeve_5.jpg", # 4 - "phase_3/maps/desat_sleeve_6.jpg", # 5 - "phase_3/maps/desat_sleeve_7.jpg", # 6 - "phase_3/maps/desat_sleeve_8.jpg", # 7 - "phase_3/maps/desat_sleeve_9.jpg", # 8 - "phase_3/maps/desat_sleeve_10.jpg", # 9 - "phase_3/maps/desat_sleeve_15.jpg", # 10 - "phase_3/maps/desat_sleeve_16.jpg", # 11 - "phase_3/maps/desat_sleeve_19.jpg", # 12 - "phase_3/maps/desat_sleeve_20.jpg", # 13 + "phase_3/maps/desat_sleeve_1.png", # 0 + "phase_3/maps/desat_sleeve_2.png", # 1 + "phase_3/maps/desat_sleeve_3.png", # 2 + "phase_3/maps/desat_sleeve_4.png", # 3 + "phase_3/maps/desat_sleeve_5.png", # 4 + "phase_3/maps/desat_sleeve_6.png", # 5 + "phase_3/maps/desat_sleeve_7.png", # 6 + "phase_3/maps/desat_sleeve_8.png", # 7 + "phase_3/maps/desat_sleeve_9.png", # 8 + "phase_3/maps/desat_sleeve_10.png", # 9 + "phase_3/maps/desat_sleeve_15.png", # 10 + "phase_3/maps/desat_sleeve_16.png", # 11 + "phase_3/maps/desat_sleeve_19.png", # 12 + "phase_3/maps/desat_sleeve_20.png", # 13 # Catalog exclusive shirt sleeves - "phase_4/maps/female_sleeve1b.jpg", # 14 blue with 3 yellow stripes - "phase_4/maps/female_sleeve2.jpg", # 15 pink and beige with flower - "phase_4/maps/female_sleeve3.jpg", # 16 yellow hooded sweatshirt - "phase_4/maps/male_sleeve1.jpg", # 17 blue stripes - "phase_4/maps/male_sleeve2_palm.jpg", # 18 yellow with palm tree - "phase_4/maps/male_sleeve3c.jpg", # 19 orange + "phase_4/maps/female_sleeve1b.png", # 14 blue with 3 yellow stripes + "phase_4/maps/female_sleeve2.png", # 15 pink and beige with flower + "phase_4/maps/female_sleeve3.png", # 16 yellow hooded sweatshirt + "phase_4/maps/male_sleeve1.png", # 17 blue stripes + "phase_4/maps/male_sleeve2_palm.png", # 18 yellow with palm tree + "phase_4/maps/male_sleeve3c.png", # 19 orange - "phase_4/maps/shirt_Sleeve_ghost.jpg", # 20 ghost (Halloween) - "phase_4/maps/shirt_Sleeve_pumkin.jpg", # 21 pumpkin (Halloween) + "phase_4/maps/shirt_Sleeve_ghost.png", # 20 ghost (Halloween) + "phase_4/maps/shirt_Sleeve_pumkin.png", # 21 pumpkin (Halloween) - "phase_4/maps/holidaySleeve1.jpg", # 22 (Winter Holiday) - "phase_4/maps/holidaySleeve3.jpg", # 23 (Winter Holiday) + "phase_4/maps/holidaySleeve1.png", # 22 (Winter Holiday) + "phase_4/maps/holidaySleeve3.png", # 23 (Winter Holiday) # Catalog series 2 - "phase_4/maps/female_sleeve1b.jpg", # 24 Blue and gold wavy stripes - "phase_4/maps/female_sleeve5New.jpg", # 25 Blue and pink with bow - "phase_4/maps/male_sleeve4New.jpg", # 26 Lime green with stripe - "phase_4/maps/sleeve6New.jpg", # 27 Purple with stars - "phase_4/maps/SleeveMaleNew7.jpg", # 28 Red kimono/hockey shirt + "phase_4/maps/female_sleeve1b.png", # 24 Blue and gold wavy stripes + "phase_4/maps/female_sleeve5New.png", # 25 Blue and pink with bow + "phase_4/maps/male_sleeve4New.png", # 26 Lime green with stripe + "phase_4/maps/sleeve6New.png", # 27 Purple with stars + "phase_4/maps/SleeveMaleNew7.png", # 28 Red kimono/hockey shirt # Unused - "phase_4/maps/female_sleeveNew6.jpg", # 29 Aqua kimono white stripe + "phase_4/maps/female_sleeveNew6.png", # 29 Aqua kimono white stripe - "phase_4/maps/Vday5Sleeve.jpg", # 30 (Valentines) - "phase_4/maps/Vda6Sleeve.jpg", # 31 (Valentines) - "phase_4/maps/Vday_shirt4sleeve.jpg", # 32 (Valentines) - "phase_4/maps/Vday2cSleeve.jpg", # 33 (Valentines) + "phase_4/maps/Vday5Sleeve.png", # 30 (Valentines) + "phase_4/maps/Vda6Sleeve.png", # 31 (Valentines) + "phase_4/maps/Vday_shirt4sleeve.png", # 32 (Valentines) + "phase_4/maps/Vday2cSleeve.png", # 33 (Valentines) # Catalog series 3 - "phase_4/maps/sleeveTieDye.jpg", # 34 Tie dye - "phase_4/maps/male_sleeve1.jpg", # 35 Blue with blue and white stripe + "phase_4/maps/sleeveTieDye.png", # 34 Tie dye + "phase_4/maps/male_sleeve1.png", # 35 Blue with blue and white stripe # St. Patrick's day - "phase_4/maps/StPats_sleeve.jpg", # 36 (St. Pats) Four leaf clover - "phase_4/maps/StPats_sleeve2.jpg", # 37 (St. Pats) Pot o gold + "phase_4/maps/StPats_sleeve.png", # 36 (St. Pats) Four leaf clover + "phase_4/maps/StPats_sleeve2.png", # 37 (St. Pats) Pot o gold # T-Shirt Contest sleeves - "phase_4/maps/ContestfishingVestSleeve1.jpg", # 38 (T-Shirt Contest) fishing vest sleeve - "phase_4/maps/ContestFishtankSleeve1.jpg", # 39 (T-Shirt Contest) fish bowl sleeve - "phase_4/maps/ContestPawSleeve1.jpg", # 40 (T-Shirt Contest) paw print sleeve + "phase_4/maps/ContestfishingVestSleeve1.png", # 38 (T-Shirt Contest) fishing vest sleeve + "phase_4/maps/ContestFishtankSleeve1.png", # 39 (T-Shirt Contest) fish bowl sleeve + "phase_4/maps/ContestPawSleeve1.png", # 40 (T-Shirt Contest) paw print sleeve # Catalog Series 4 - "phase_4/maps/CowboySleeve1.jpg", # 41 (Western) cowboy shirt sleeve - "phase_4/maps/CowboySleeve2.jpg", # 42 (Western) cowboy shirt sleeve - "phase_4/maps/CowboySleeve3.jpg", # 43 (Western) cowboy shirt sleeve - "phase_4/maps/CowboySleeve4.jpg", # 44 (Western) cowboy shirt sleeve - "phase_4/maps/CowboySleeve5.jpg", # 45 (Western) cowboy shirt sleeve - "phase_4/maps/CowboySleeve6.jpg", # 46 (Western) cowboy shirt sleeve + "phase_4/maps/CowboySleeve1.png", # 41 (Western) cowboy shirt sleeve + "phase_4/maps/CowboySleeve2.png", # 42 (Western) cowboy shirt sleeve + "phase_4/maps/CowboySleeve3.png", # 43 (Western) cowboy shirt sleeve + "phase_4/maps/CowboySleeve4.png", # 44 (Western) cowboy shirt sleeve + "phase_4/maps/CowboySleeve5.png", # 45 (Western) cowboy shirt sleeve + "phase_4/maps/CowboySleeve6.png", # 46 (Western) cowboy shirt sleeve # July 4th - "phase_4/maps/4thJulySleeve1.jpg", # 47 (July 4th) flag shirt sleeve - "phase_4/maps/4thJulySleeve2.jpg", # 48 (July 4th) fireworks shirt sleeve + "phase_4/maps/4thJulySleeve1.png", # 47 (July 4th) flag shirt sleeve + "phase_4/maps/4thJulySleeve2.png", # 48 (July 4th) fireworks shirt sleeve # Catlog series 7 - "phase_4/maps/shirt_sleeveCat7_01.jpg", # 49 Green shirt w/ yellow buttons sleeve - "phase_4/maps/shirt_sleeveCat7_02.jpg", # 50 Purple shirt w/ big flower sleeve + "phase_4/maps/shirt_sleeveCat7_01.png", # 49 Green shirt w/ yellow buttons sleeve + "phase_4/maps/shirt_sleeveCat7_02.png", # 50 Purple shirt w/ big flower sleeve # T-Shirt Contest 2 sleeves - "phase_4/maps/contest_backpack_sleeve.jpg", # 51 (T-Shirt Contest) Multicolor shirt 2/ backpack sleeve - "phase_4/maps/Contest_leder_sleeve.jpg", # 52 (T-Shirt Contest) Lederhosen sleeve - "phase_4/maps/contest_mellon_sleeve2.jpg", # 53 (T-Shirt Contest) Watermelon sleeve - "phase_4/maps/contest_race_sleeve.jpg", # 54 (T-Shirt Contest) Race Shirt sleeve (UK winner) + "phase_4/maps/contest_backpack_sleeve.png", # 51 (T-Shirt Contest) Multicolor shirt 2/ backpack sleeve + "phase_4/maps/Contest_leder_sleeve.png", # 52 (T-Shirt Contest) Lederhosen sleeve + "phase_4/maps/contest_mellon_sleeve2.png", # 53 (T-Shirt Contest) Watermelon sleeve + "phase_4/maps/contest_race_sleeve.png", # 54 (T-Shirt Contest) Race Shirt sleeve (UK winner) # Pajama sleeves - "phase_4/maps/PJSleeveBlue.jpg", # 55 Blue Pajama sleeve - "phase_4/maps/PJSleeveRed.jpg", # 56 Red Pajama sleeve - "phase_4/maps/PJSleevePurple.jpg", # 57 Purple Pajama sleeve + "phase_4/maps/PJSleeveBlue.png", # 55 Blue Pajama sleeve + "phase_4/maps/PJSleeveRed.png", # 56 Red Pajama sleeve + "phase_4/maps/PJSleevePurple.png", # 57 Purple Pajama sleeve # 2009 Valentines Day Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_valentine1.jpg", # 58 Valentines Sleeves 1 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_valentine2.jpg", # 59 Valentines Sleeves 2 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_valentine1.png", # 58 Valentines Sleeves 1 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_valentine2.png", # 59 Valentines Sleeves 2 # Special Award Clothing - "phase_4/maps/tt_t_chr_avt_shirtSleeve_desat4.jpg", # 60 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_fishing1.jpg", # 61 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_fishing2.jpg", # 62 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_gardening1.jpg", # 63 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_gardening2.jpg", # 64 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_party1.jpg", # 65 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_party2.jpg", # 66 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_racing1.jpg", # 67 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_racing2.jpg", # 68 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_summer1.jpg", # 69 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_summer2.jpg", # 70 - - "phase_4/maps/tt_t_chr_avt_shirtSleeve_golf1.jpg", # 71 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_golf2.jpg", # 72 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween1.jpg", # 73 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween2.jpg", # 74 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_marathon1.jpg", # 75 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_saveBuilding1.jpg", # 76 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_saveBuilding2.jpg", # 77 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_toonTask1.jpg", # 78 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_toonTask2.jpg", # 79 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_trolley1.jpg", # 80 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_trolley2.jpg", # 81 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_winter1.jpg", # 82 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween3.jpg", # 83 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween4.jpg", # 84 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_desat4.png", # 60 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_fishing1.png", # 61 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_fishing2.png", # 62 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_gardening1.png", # 63 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_gardening2.png", # 64 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_party1.png", # 65 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_party2.png", # 66 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_racing1.png", # 67 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_racing2.png", # 68 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_summer1.png", # 69 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_summer2.png", # 70 + + "phase_4/maps/tt_t_chr_avt_shirtSleeve_golf1.png", # 71 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_golf2.png", # 72 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween1.png", # 73 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween2.png", # 74 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_marathon1.png", # 75 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_saveBuilding1.png", # 76 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_saveBuilding2.png", # 77 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_toonTask1.png", # 78 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_toonTask2.png", # 79 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_trolley1.png", # 80 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_trolley2.png", # 81 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_winter1.png", # 82 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween3.png", # 83 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_halloween4.png", # 84 # 2010 Valentines Day Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_valentine3.jpg", # 85 Valentines Sleeves 1 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_valentine3.png", # 85 Valentines Sleeves 1 # Scientist Sleeves - "phase_4/maps/tt_t_chr_shirtSleeve_scientist.jpg", # 86 Toon sceintist + "phase_4/maps/tt_t_chr_shirtSleeve_scientist.png", # 86 Toon sceintist # Silly Story Shirt Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_mailbox.jpg", # 87 Mailbox Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_trashcan.jpg", # 88 Trash Can Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_loonyLabs.jpg", # 89 Loony Labs Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_hydrant.jpg", # 90 Hydrant Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_whistle.jpg", # 91 Sillymeter Whistle Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_cogbuster.jpg", # 92 Silly Cogbuster Sleeves - - "phase_4/maps/tt_t_chr_avt_shirtSleeve_mostCogsDefeated01.jpg",# 93 Most Cogs Defeated Sleeves - "phase_4/maps/tt_t_chr_avt_shirtSleeve_victoryParty01.jpg", # 94 Victory Party Sleeves 1 - "phase_4/maps/tt_t_chr_avt_shirtSleeve_victoryParty02.jpg", # 95 Victory Party Sleeves 2 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_mailbox.png", # 87 Mailbox Sleeves + "phase_4/maps/tt_t_chr_avt_shirtSleeve_trashcan.png", # 88 Trash Can Sleeves + "phase_4/maps/tt_t_chr_avt_shirtSleeve_loonyLabs.png", # 89 Loony Labs Sleeves + "phase_4/maps/tt_t_chr_avt_shirtSleeve_hydrant.png", # 90 Hydrant Sleeves + "phase_4/maps/tt_t_chr_avt_shirtSleeve_whistle.png", # 91 Sillymeter Whistle Sleeves + "phase_4/maps/tt_t_chr_avt_shirtSleeve_cogbuster.png", # 92 Silly Cogbuster Sleeves + + "phase_4/maps/tt_t_chr_avt_shirtSleeve_mostCogsDefeated01.png",# 93 Most Cogs Defeated Sleeves + "phase_4/maps/tt_t_chr_avt_shirtSleeve_victoryParty01.png", # 94 Victory Party Sleeves 1 + "phase_4/maps/tt_t_chr_avt_shirtSleeve_victoryParty02.png", # 95 Victory Party Sleeves 2 ] # len = 9 BoyShorts = [ - "phase_3/maps/desat_shorts_1.jpg", # plain w/ pockets - "phase_3/maps/desat_shorts_2.jpg", # belt - "phase_3/maps/desat_shorts_4.jpg", # cargo - "phase_3/maps/desat_shorts_6.jpg", # hawaiian - "phase_3/maps/desat_shorts_7.jpg", # special, side stripes - "phase_3/maps/desat_shorts_8.jpg", # soccer shorts - "phase_3/maps/desat_shorts_9.jpg", # special, flames side stripes - "phase_3/maps/desat_shorts_10.jpg", # denim (2 darker colors) + "phase_3/maps/desat_shorts_1.png", # plain w/ pockets + "phase_3/maps/desat_shorts_2.png", # belt + "phase_3/maps/desat_shorts_4.png", # cargo + "phase_3/maps/desat_shorts_6.png", # hawaiian + "phase_3/maps/desat_shorts_7.png", # special, side stripes + "phase_3/maps/desat_shorts_8.png", # soccer shorts + "phase_3/maps/desat_shorts_9.png", # special, flames side stripes + "phase_3/maps/desat_shorts_10.png", # denim (2 darker colors) # Valentines - "phase_4/maps/VdayShorts2.jpg", # 8 valentines shorts + "phase_4/maps/VdayShorts2.png", # 8 valentines shorts # Catalog series 3 exclusive - "phase_4/maps/shorts4.jpg", # 9 Orange with blue side stripes - "phase_4/maps/shorts1.jpg", # 10 Blue with gold stripes on cuff + "phase_4/maps/shorts4.png", # 9 Orange with blue side stripes + "phase_4/maps/shorts1.png", # 10 Blue with gold stripes on cuff # St. Pats - "phase_4/maps/shorts5.jpg", # 11 Leprechaun shorts + "phase_4/maps/shorts5.png", # 11 Leprechaun shorts # Catalog series 4 exclusive - "phase_4/maps/CowboyShorts1.jpg", # 12 Cowboy Shorts 1 - "phase_4/maps/CowboyShorts2.jpg", # 13 Cowboy Shorts 2 + "phase_4/maps/CowboyShorts1.png", # 12 Cowboy Shorts 1 + "phase_4/maps/CowboyShorts2.png", # 13 Cowboy Shorts 2 # July 4th - "phase_4/maps/4thJulyShorts1.jpg", # 14 July 4th Shorts + "phase_4/maps/4thJulyShorts1.png", # 14 July 4th Shorts # Catalog series 7 - "phase_4/maps/shortsCat7_01.jpg", # 15 Green stripes + "phase_4/maps/shortsCat7_01.png", # 15 Green stripes # Pajama Shorts - "phase_4/maps/Blue_shorts_1.jpg", # 16 Blue Pajama shorts - "phase_4/maps/Red_shorts_1.jpg", # 17 Red Pajama shorts - "phase_4/maps/Purple_shorts_1.jpg", # 18 Purple Pajama shorts + "phase_4/maps/Blue_shorts_1.png", # 16 Blue Pajama shorts + "phase_4/maps/Red_shorts_1.png", # 17 Red Pajama shorts + "phase_4/maps/Purple_shorts_1.png", # 18 Purple Pajama shorts # Winter Holiday Shorts - "phase_4/maps/tt_t_chr_avt_shorts_winter1.jpg", # 19 Winter Holiday Shorts Style 1 - "phase_4/maps/tt_t_chr_avt_shorts_winter2.jpg", # 20 Winter Holiday Shorts Style 2 - "phase_4/maps/tt_t_chr_avt_shorts_winter3.jpg", # 21 Winter Holiday Shorts Style 3 - "phase_4/maps/tt_t_chr_avt_shorts_winter4.jpg", # 22 Winter Holiday Shorts Style 4 + "phase_4/maps/tt_t_chr_avt_shorts_winter1.png", # 19 Winter Holiday Shorts Style 1 + "phase_4/maps/tt_t_chr_avt_shorts_winter2.png", # 20 Winter Holiday Shorts Style 2 + "phase_4/maps/tt_t_chr_avt_shorts_winter3.png", # 21 Winter Holiday Shorts Style 3 + "phase_4/maps/tt_t_chr_avt_shorts_winter4.png", # 22 Winter Holiday Shorts Style 4 # 2009 Valentines Day Shorts - "phase_4/maps/tt_t_chr_avt_shorts_valentine1.jpg", # 23 Valentines Shorts 1 - "phase_4/maps/tt_t_chr_avt_shorts_valentine2.jpg", # 24 Valentines Shorts 2 + "phase_4/maps/tt_t_chr_avt_shorts_valentine1.png", # 23 Valentines Shorts 1 + "phase_4/maps/tt_t_chr_avt_shorts_valentine2.png", # 24 Valentines Shorts 2 # Special award Clothes - "phase_4/maps/tt_t_chr_avt_shorts_fishing1.jpg", # 25 - "phase_4/maps/tt_t_chr_avt_shorts_gardening1.jpg", # 26 - "phase_4/maps/tt_t_chr_avt_shorts_party1.jpg", # 27 - "phase_4/maps/tt_t_chr_avt_shorts_racing1.jpg", # 28 - "phase_4/maps/tt_t_chr_avt_shorts_summer1.jpg", # 29 - - "phase_4/maps/tt_t_chr_avt_shorts_golf1.jpg", # 30 - "phase_4/maps/tt_t_chr_avt_shorts_halloween1.jpg", # 31 - "phase_4/maps/tt_t_chr_avt_shorts_halloween2.jpg", # 32 - "phase_4/maps/tt_t_chr_avt_shorts_saveBuilding1.jpg", # 33 - "phase_4/maps/tt_t_chr_avt_shorts_trolley1.jpg", # 34 - "phase_4/maps/tt_t_chr_avt_shorts_halloween4.jpg", # 35 - "phase_4/maps/tt_t_chr_avt_shorts_halloween3.jpg", # 36 - - "phase_4/maps/tt_t_chr_shorts_scientistA.jpg", # 37 - "phase_4/maps/tt_t_chr_shorts_scientistB.jpg", # 38 - "phase_4/maps/tt_t_chr_shorts_scientistC.jpg", # 39 - - "phase_4/maps/tt_t_chr_avt_shorts_cogbuster.jpg", # 40 Silly Cogbuster Shorts + "phase_4/maps/tt_t_chr_avt_shorts_fishing1.png", # 25 + "phase_4/maps/tt_t_chr_avt_shorts_gardening1.png", # 26 + "phase_4/maps/tt_t_chr_avt_shorts_party1.png", # 27 + "phase_4/maps/tt_t_chr_avt_shorts_racing1.png", # 28 + "phase_4/maps/tt_t_chr_avt_shorts_summer1.png", # 29 + + "phase_4/maps/tt_t_chr_avt_shorts_golf1.png", # 30 + "phase_4/maps/tt_t_chr_avt_shorts_halloween1.png", # 31 + "phase_4/maps/tt_t_chr_avt_shorts_halloween2.png", # 32 + "phase_4/maps/tt_t_chr_avt_shorts_saveBuilding1.png", # 33 + "phase_4/maps/tt_t_chr_avt_shorts_trolley1.png", # 34 + "phase_4/maps/tt_t_chr_avt_shorts_halloween4.png", # 35 + "phase_4/maps/tt_t_chr_avt_shorts_halloween3.png", # 36 + + "phase_4/maps/tt_t_chr_shorts_scientistA.png", # 37 + "phase_4/maps/tt_t_chr_shorts_scientistB.png", # 38 + "phase_4/maps/tt_t_chr_shorts_scientistC.png", # 39 + + "phase_4/maps/tt_t_chr_avt_shorts_cogbuster.png", # 40 Silly Cogbuster Shorts ] SHORTS = 0 @@ -500,76 +500,76 @@ def isValidGirlShirt(index): # len = 14 GirlBottoms = [ - ("phase_3/maps/desat_skirt_1.jpg", SKIRT), # 0 solid - ("phase_3/maps/desat_skirt_2.jpg", SKIRT), # 1 special, polka dots - ("phase_3/maps/desat_skirt_3.jpg", SKIRT), # 2 vertical stripes - ("phase_3/maps/desat_skirt_4.jpg", SKIRT), # 3 horizontal stripe - ("phase_3/maps/desat_skirt_5.jpg", SKIRT), # 4 flower print - ("phase_3/maps/desat_shorts_1.jpg", SHORTS), # 5 plain w/ pockets - ("phase_3/maps/desat_shorts_5.jpg", SHORTS), # 6 flower - ("phase_3/maps/desat_skirt_6.jpg", SKIRT), # 7 special, 2 pockets - ("phase_3/maps/desat_skirt_7.jpg", SKIRT), # 8 denim (2 darker colors) - ("phase_3/maps/desat_shorts_10.jpg", SHORTS), # 9 denim (2 darker colors) + ("phase_3/maps/desat_skirt_1.png", SKIRT), # 0 solid + ("phase_3/maps/desat_skirt_2.png", SKIRT), # 1 special, polka dots + ("phase_3/maps/desat_skirt_3.png", SKIRT), # 2 vertical stripes + ("phase_3/maps/desat_skirt_4.png", SKIRT), # 3 horizontal stripe + ("phase_3/maps/desat_skirt_5.png", SKIRT), # 4 flower print + ("phase_3/maps/desat_shorts_1.png", SHORTS), # 5 plain w/ pockets + ("phase_3/maps/desat_shorts_5.png", SHORTS), # 6 flower + ("phase_3/maps/desat_skirt_6.png", SKIRT), # 7 special, 2 pockets + ("phase_3/maps/desat_skirt_7.png", SKIRT), # 8 denim (2 darker colors) + ("phase_3/maps/desat_shorts_10.png", SHORTS), # 9 denim (2 darker colors) # Catalog Series 1 exclusive - ("phase_4/maps/female_skirt1.jpg", SKIRT), # 10 blue with tan border and button - ("phase_4/maps/female_skirt2.jpg", SKIRT), # 11 purple with pink border and ribbon - ("phase_4/maps/female_skirt3.jpg", SKIRT), # 12 teal with yellow border and star + ("phase_4/maps/female_skirt1.png", SKIRT), # 10 blue with tan border and button + ("phase_4/maps/female_skirt2.png", SKIRT), # 11 purple with pink border and ribbon + ("phase_4/maps/female_skirt3.png", SKIRT), # 12 teal with yellow border and star # Valentines - ("phase_4/maps/VdaySkirt1.jpg", SKIRT), # 13 valentines skirts + ("phase_4/maps/VdaySkirt1.png", SKIRT), # 13 valentines skirts # Catalog Series 3 exclusive - ("phase_4/maps/skirtNew5.jpg", SKIRT), # 14 rainbow skirt + ("phase_4/maps/skirtNew5.png", SKIRT), # 14 rainbow skirt # St. Pats - ("phase_4/maps/shorts5.jpg", SHORTS), # 15 leprechaun shorts + ("phase_4/maps/shorts5.png", SHORTS), # 15 leprechaun shorts # Catalog Series 4 exclusive - ("phase_4/maps/CowboySkirt1.jpg", SKIRT), # 16 cowboy skirt 1 - ("phase_4/maps/CowboySkirt2.jpg", SKIRT), # 17 cowboy skirt 2 + ("phase_4/maps/CowboySkirt1.png", SKIRT), # 16 cowboy skirt 1 + ("phase_4/maps/CowboySkirt2.png", SKIRT), # 17 cowboy skirt 2 # July 4th Skirt - ("phase_4/maps/4thJulySkirt1.jpg", SKIRT), # 18 july 4th skirt 1 + ("phase_4/maps/4thJulySkirt1.png", SKIRT), # 18 july 4th skirt 1 # Catalog series 7 - ("phase_4/maps/skirtCat7_01.jpg", SKIRT), # 19 blue with flower + ("phase_4/maps/skirtCat7_01.png", SKIRT), # 19 blue with flower # Pajama Shorts - ("phase_4/maps/Blue_shorts_1.jpg", SHORTS), # 20 Blue Pajama shorts - ("phase_4/maps/Red_shorts_1.jpg", SHORTS), # 21 Red Pajama shorts - ("phase_4/maps/Purple_shorts_1.jpg", SHORTS),# 22 Purple Pajama shorts + ("phase_4/maps/Blue_shorts_1.png", SHORTS), # 20 Blue Pajama shorts + ("phase_4/maps/Red_shorts_1.png", SHORTS), # 21 Red Pajama shorts + ("phase_4/maps/Purple_shorts_1.png", SHORTS),# 22 Purple Pajama shorts # Winter Holiday Skirts - ("phase_4/maps/tt_t_chr_avt_skirt_winter1.jpg", SKIRT), # 23 Winter Holiday Skirt Style 1 - ("phase_4/maps/tt_t_chr_avt_skirt_winter2.jpg", SKIRT), # 24 Winter Holiday Skirt Style 2 - ("phase_4/maps/tt_t_chr_avt_skirt_winter3.jpg", SKIRT), # 25 Winter Holiday Skirt Style 3 - ("phase_4/maps/tt_t_chr_avt_skirt_winter4.jpg", SKIRT), # 26 Winter Holiday Skirt Style 4 + ("phase_4/maps/tt_t_chr_avt_skirt_winter1.png", SKIRT), # 23 Winter Holiday Skirt Style 1 + ("phase_4/maps/tt_t_chr_avt_skirt_winter2.png", SKIRT), # 24 Winter Holiday Skirt Style 2 + ("phase_4/maps/tt_t_chr_avt_skirt_winter3.png", SKIRT), # 25 Winter Holiday Skirt Style 3 + ("phase_4/maps/tt_t_chr_avt_skirt_winter4.png", SKIRT), # 26 Winter Holiday Skirt Style 4 # 2009 Valentines Day Skirts - ("phase_4/maps/tt_t_chr_avt_skirt_valentine1.jpg", SKIRT), # 27 Valentines Skirt 1 - ("phase_4/maps/tt_t_chr_avt_skirt_valentine2.jpg", SKIRT), # 28 Valentines Skirt 2 + ("phase_4/maps/tt_t_chr_avt_skirt_valentine1.png", SKIRT), # 27 Valentines Skirt 1 + ("phase_4/maps/tt_t_chr_avt_skirt_valentine2.png", SKIRT), # 28 Valentines Skirt 2 # Special award clothing - ("phase_4/maps/tt_t_chr_avt_skirt_fishing1.jpg", SKIRT), # 29 - ("phase_4/maps/tt_t_chr_avt_skirt_gardening1.jpg", SKIRT), # 30 - ("phase_4/maps/tt_t_chr_avt_skirt_party1.jpg", SKIRT), # 31 - ("phase_4/maps/tt_t_chr_avt_skirt_racing1.jpg", SKIRT), # 32 - ("phase_4/maps/tt_t_chr_avt_skirt_summer1.jpg", SKIRT), # 33 - - ("phase_4/maps/tt_t_chr_avt_skirt_golf1.jpg", SKIRT), # 34 - ("phase_4/maps/tt_t_chr_avt_skirt_halloween1.jpg", SKIRT), # 35 - ("phase_4/maps/tt_t_chr_avt_skirt_halloween2.jpg", SKIRT), # 36 - ("phase_4/maps/tt_t_chr_avt_skirt_saveBuilding1.jpg", SKIRT), # 37 - ("phase_4/maps/tt_t_chr_avt_skirt_trolley1.jpg", SKIRT), # 38 - ("phase_4/maps/tt_t_chr_avt_skirt_halloween3.jpg", SKIRT), # 39 - ("phase_4/maps/tt_t_chr_avt_skirt_halloween4.jpg", SKIRT), # 40 - - ("phase_4/maps/tt_t_chr_shorts_scientistA.jpg", SHORTS), # 41 - ("phase_4/maps/tt_t_chr_shorts_scientistB.jpg", SHORTS), # 42 - ("phase_4/maps/tt_t_chr_shorts_scientistC.jpg", SHORTS), # 43 - - ("phase_4/maps/tt_t_chr_avt_shorts_cogbuster.jpg", SHORTS), # 44 Silly Cogbuster Shorts + ("phase_4/maps/tt_t_chr_avt_skirt_fishing1.png", SKIRT), # 29 + ("phase_4/maps/tt_t_chr_avt_skirt_gardening1.png", SKIRT), # 30 + ("phase_4/maps/tt_t_chr_avt_skirt_party1.png", SKIRT), # 31 + ("phase_4/maps/tt_t_chr_avt_skirt_racing1.png", SKIRT), # 32 + ("phase_4/maps/tt_t_chr_avt_skirt_summer1.png", SKIRT), # 33 + + ("phase_4/maps/tt_t_chr_avt_skirt_golf1.png", SKIRT), # 34 + ("phase_4/maps/tt_t_chr_avt_skirt_halloween1.png", SKIRT), # 35 + ("phase_4/maps/tt_t_chr_avt_skirt_halloween2.png", SKIRT), # 36 + ("phase_4/maps/tt_t_chr_avt_skirt_saveBuilding1.png", SKIRT), # 37 + ("phase_4/maps/tt_t_chr_avt_skirt_trolley1.png", SKIRT), # 38 + ("phase_4/maps/tt_t_chr_avt_skirt_halloween3.png", SKIRT), # 39 + ("phase_4/maps/tt_t_chr_avt_skirt_halloween4.png", SKIRT), # 40 + + ("phase_4/maps/tt_t_chr_shorts_scientistA.png", SHORTS), # 41 + ("phase_4/maps/tt_t_chr_shorts_scientistB.png", SHORTS), # 42 + ("phase_4/maps/tt_t_chr_shorts_scientistC.png", SHORTS), # 43 + + ("phase_4/maps/tt_t_chr_avt_shorts_cogbuster.png", SHORTS), # 44 Silly Cogbuster Shorts ] # len = 28 @@ -1964,7 +1964,12 @@ def getHeadColor(self): return allColorsList[self.headColor] except: return allColorsList[0] - + + def getEyeColor(self): + try: + return allColorsList[self.eyeColor] + except: + return allColorsList[0] def getGloveColor(self): try: return allColorsList[self.gloveColor] diff --git a/toontown/toon/ToonHead.py b/toontown/toon/ToonHead.py index 823fdee..674c048 100644 --- a/toontown/toon/ToonHead.py +++ b/toontown/toon/ToonHead.py @@ -72,40 +72,33 @@ class ToonHead(Actor.Actor): notify = DirectNotifyGlobal.directNotify.newCategory('ToonHead') # Eyes open and closed textures for blinks - EyesOpen = loader.loadTexture('phase_3/maps/eyes.jpg', - 'phase_3/maps/eyes_a.rgb') + EyesOpen = loader.loadTexture('phase_3/maps/eyes.png') EyesOpen.setMinfilter(Texture.FTLinear) EyesOpen.setMagfilter(Texture.FTLinear) - EyesClosed = loader.loadTexture('phase_3/maps/eyesClosed.jpg', - 'phase_3/maps/eyesClosed_a.rgb') + EyesClosed = loader.loadTexture('phase_3/maps/eyesClosed.png') EyesClosed.setMinfilter(Texture.FTLinear) EyesClosed.setMagfilter(Texture.FTLinear) # Emotional eye textures for tutorial - EyesSadOpen = loader.loadTexture('phase_3/maps/eyesSad.jpg', - 'phase_3/maps/eyesSad_a.rgb') + EyesSadOpen = loader.loadTexture('phase_3/maps/eyesSad.png') EyesSadOpen.setMinfilter(Texture.FTLinear) EyesSadOpen.setMagfilter(Texture.FTLinear) - EyesSadClosed = loader.loadTexture('phase_3/maps/eyesSadClosed.jpg', - 'phase_3/maps/eyesSadClosed_a.rgb') + EyesSadClosed = loader.loadTexture('phase_3/maps/eyesSadClosed.png') EyesSadClosed.setMinfilter(Texture.FTLinear) EyesSadClosed.setMagfilter(Texture.FTLinear) - EyesAngryOpen = loader.loadTexture('phase_3/maps/eyesAngry.jpg', - 'phase_3/maps/eyesAngry_a.rgb') + EyesAngryOpen = loader.loadTexture('phase_3/maps/eyesAngry.png') EyesAngryOpen.setMinfilter(Texture.FTLinear) EyesAngryOpen.setMagfilter(Texture.FTLinear) - EyesAngryClosed = loader.loadTexture('phase_3/maps/eyesAngryClosed.jpg', - 'phase_3/maps/eyesAngryClosed_a.rgb') + EyesAngryClosed = loader.loadTexture('phase_3/maps/eyesAngryClosed.png') EyesAngryClosed.setMinfilter(Texture.FTLinear) EyesAngryClosed.setMagfilter(Texture.FTLinear) - EyesSurprised = loader.loadTexture('phase_3/maps/eyesSurprised.jpg', - 'phase_3/maps/eyesSurprised_a.rgb') + EyesSurprised = loader.loadTexture('phase_3/maps/eyesSurprised.png') EyesSurprised.setMinfilter(Texture.FTLinear) EyesSurprised.setMagfilter(Texture.FTLinear) - Muzzle = loader.loadTexture('phase_3/maps/muzzleShrtGeneric.jpg') + Muzzle = loader.loadTexture('phase_3/maps/muzzleShrtGeneric.png') Muzzle.setMinfilter(Texture.FTLinear) Muzzle.setMagfilter(Texture.FTLinear) - MuzzleSurprised = loader.loadTexture('phase_3/maps/muzzleShortSurprised.jpg') + MuzzleSurprised = loader.loadTexture('phase_3/maps/muzzleShortSurprised.png') MuzzleSurprised.setMinfilter(Texture.FTLinear) MuzzleSurprised.setMagfilter(Texture.FTLinear) @@ -736,14 +729,20 @@ def generateToonColor(self, style): # color the head - may have multiple pieces parts = self.findAllMatches("**/head*") parts.setColor(style.getHeadColor()) - + + # color the eyes, but god knows if this is going to work or not + eyes = self.findAllMatches("**/*pupil*") + eyes.setColor(style.getEyeColor()) + # color the ears, if they are not black animalType = style.getAnimal() if ((animalType == "cat") or (animalType == "rabbit") or (animalType == 'bear') or (animalType == "mouse") or - (animalType == "pig")): + (animalType == "pig") or + (animalType == "dog") or + (animalType == "horse")): parts = self.findAllMatches("**/ear?-*") parts.setColor(style.getHeadColor()) From b1ca53260627c707283d5a02a663ebdefc009678 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Mon, 18 Apr 2022 01:34:58 -0500 Subject: [PATCH 04/10] toonhead fixed for cc models --- toontown/suit/Suit.py | 36 +++++++++---------- toontown/toon/ToonHead.py | 74 ++++++++++++++++++++++++++++----------- 2 files changed, 71 insertions(+), 39 deletions(-) diff --git a/toontown/suit/Suit.py b/toontown/suit/Suit.py index c2bbac4..3fec4c2 100644 --- a/toontown/suit/Suit.py +++ b/toontown/suit/Suit.py @@ -712,7 +712,7 @@ def generateSuit(self): self.scale = 6.75/cSize self.handColor = VBase4(0.85, 0.55, 0.55, 1.0) self.generateBody() - self.headTexture = "corporate-raider.jpg" + self.headTexture = "corporate-raider.png" self.generateHead("flunky") self.setHeight(8.23) elif (dna.name == 'tbc'): @@ -729,7 +729,7 @@ def generateSuit(self): self.scale = 4.0/cSize self.handColor = SuitDNA.legalPolyColor self.generateBody() - self.headTexture = "bottom-feeder.jpg" + self.headTexture = "bottom-feeder.png" self.generateHead("tightwad") self.setHeight(4.81) elif (dna.name == 'b'): @@ -737,7 +737,7 @@ def generateSuit(self): self.scale = 4.375/bSize self.handColor = VBase4(0.95, 0.95, 1.0, 1.0) self.generateBody() - self.headTexture = "blood-sucker.jpg" + self.headTexture = "blood-sucker.png" self.generateHead("movershaker") self.setHeight(6.17) elif (dna.name == 'dt'): @@ -745,7 +745,7 @@ def generateSuit(self): self.scale = 4.25/aSize self.handColor = SuitDNA.legalPolyColor self.generateBody() - self.headTexture = "double-talker.jpg" + self.headTexture = "double-talker.png" self.generateHead("twoface") self.setHeight(5.63) elif (dna.name == 'ac'): @@ -767,7 +767,7 @@ def generateSuit(self): self.scale = 5.65/bSize self.handColor = VBase4(0.5, 0.8, 0.75, 1.0) self.generateBody() - self.headTexture = "spin-doctor.jpg" + self.headTexture = "spin-doctor.png" self.generateHead("telemarketer") self.setHeight(7.90) elif (dna.name == 'le'): @@ -840,7 +840,7 @@ def generateSuit(self): self.scale = 7.0/aSize self.handColor = SuitDNA.moneyPolyColor self.generateBody() - self.headTexture = "robber-baron.jpg" + self.headTexture = "robber-baron.png" self.generateHead("yesman") self.setHeight(8.95) @@ -865,7 +865,7 @@ def generateSuit(self): self.scale = 4.35/aSize self.handColor = SuitDNA.salesPolyColor self.generateBody() - self.headTexture = "name-dropper.jpg" + self.headTexture = "name-dropper.png" self.generateHead("numbercruncher") self.setHeight(5.98) elif (dna.name == 'gh'): @@ -894,7 +894,7 @@ def generateSuit(self): self.scale = 5.75/aSize self.handColor = SuitDNA.salesPolyColor self.generateBody() - self.headTexture = "mingler.jpg" + self.headTexture = "mingler.png" self.generateHead("twoface") self.setHeight(7.61) elif (dna.name == 'mh'): @@ -993,13 +993,13 @@ def setSuitClothes(self, modelRoot=None): phase = 3.5 # set the clothes textures for the suit dept - torsoTex = loader.loadTexture("phase_%s/maps/%s_blazer.jpg" % (phase, dept)) + torsoTex = loader.loadTexture("phase_%s/maps/%s_blazer.png" % (phase, dept)) torsoTex.setMinfilter(Texture.FTLinearMipmapLinear) torsoTex.setMagfilter(Texture.FTLinear) - legTex = loader.loadTexture("phase_%s/maps/%s_leg.jpg" % (phase, dept)) + legTex = loader.loadTexture("phase_%s/maps/%s_leg.png" % (phase, dept)) legTex.setMinfilter(Texture.FTLinearMipmapLinear) legTex.setMagfilter(Texture.FTLinear) - armTex = loader.loadTexture("phase_%s/maps/%s_sleeve.jpg" % (phase, dept)) + armTex = loader.loadTexture("phase_%s/maps/%s_sleeve.png" % (phase, dept)) armTex.setMinfilter(Texture.FTLinearMipmapLinear) armTex.setMagfilter(Texture.FTLinear) @@ -1026,13 +1026,13 @@ def makeWaiter(self, modelRoot=None): # set the clothes textures for a waiter self.isWaiter = 1 - torsoTex = loader.loadTexture("phase_3.5/maps/waiter_m_blazer.jpg") + torsoTex = loader.loadTexture("phase_3.5/maps/waiter_m_blazer.png") torsoTex.setMinfilter(Texture.FTLinearMipmapLinear) torsoTex.setMagfilter(Texture.FTLinear) - legTex = loader.loadTexture("phase_3.5/maps/waiter_m_leg.jpg") + legTex = loader.loadTexture("phase_3.5/maps/waiter_m_leg.png") legTex.setMinfilter(Texture.FTLinearMipmapLinear) legTex.setMagfilter(Texture.FTLinear) - armTex = loader.loadTexture("phase_3.5/maps/waiter_m_sleeve.jpg") + armTex = loader.loadTexture("phase_3.5/maps/waiter_m_sleeve.png") armTex.setMinfilter(Texture.FTLinearMipmapLinear) armTex.setMagfilter(Texture.FTLinear) @@ -1082,13 +1082,13 @@ def generateCorporateTie(self, modelPath=None): return #print '### loading %s tie' % (dept) if dept == 'c': - tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_boss.jpg") + tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_boss.png") elif dept == 's': - tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_sales.jpg") + tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_sales.png") elif dept == 'l': - tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_legal.jpg") + tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_legal.png") elif dept == 'm': - tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_money.jpg") + tieTex = loader.loadTexture("phase_5/maps/cog_robot_tie_money.png") tieTex.setMinfilter(Texture.FTLinearMipmapLinear) tieTex.setMagfilter(Texture.FTLinear) tie.setTexture(tieTex, 1) diff --git a/toontown/toon/ToonHead.py b/toontown/toon/ToonHead.py index 674c048..6c9ac57 100644 --- a/toontown/toon/ToonHead.py +++ b/toontown/toon/ToonHead.py @@ -66,6 +66,34 @@ 'dll': '/models/char/dogLL_Shorts-headMuzzles-' } +#tti preloader +PreloadHeads = {} + +def preloadToonHeads(): + global PreloadHeads + if not PreloadHeads: + print ('Preloading Toon heads...') + + def preload(task): + for key in HeadDict.keys(): + fileRoot = HeadDict[key] + + PreloadHeads['phase_3' + fileRoot + '1000'] = loader.loadModel('phase_3' + fileRoot + '1000') + PreloadHeads['phase_3' + fileRoot + '1000'].flattenMedium() + + PreloadHeads['phase_3' + fileRoot + '500'] = loader.loadModel('phase_3' + fileRoot + '500') + PreloadHeads['phase_3' + fileRoot + '500'].flattenMedium() + + PreloadHeads['phase_3' + fileRoot + '250'] = loader.loadModel('phase_3' + fileRoot + '250') + PreloadHeads['phase_3' + fileRoot + '250'].flattenMedium() + + return task.done + + taskMgr.add(preload, 'reload-toon') + +preloadToonHeads() + + class ToonHead(Actor.Actor): """Toon class:""" @@ -358,6 +386,7 @@ def findSomethingToLookAt(self): # by Toon.py to create and color a head. def generateToonHead(self, copy, style, lods, forGui = 0): + global PreloadHeads """generateToonHead(self, bool copy, AvatarDNA style, tuple lods) Load the head model for the toon. @@ -542,8 +571,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): # load the model and massage the geometry if len(lods) == 1: - self.loadModel("phase_3" + filePrefix + lods[0], "head", "lodRoot", - copy) + filepath = 'phase_3' + filePrefix + lods[0] + self.loadModel(PreloadHeads[filepath], 'head', 'lodRoot', copy = True) if not forGui: pLoaded = self.loadPumpkin(headStyle[1], None, copy) self.loadSnowMan(headStyle[1], None, copy) @@ -564,7 +593,9 @@ def generateToonHead(self, copy, style, lods, forGui = 0): else: for lod in lods: - self.loadModel("phase_3" + filePrefix + lod, "head", lod, copy) + filepath = 'phase_3' + filePrefix + lod + self.loadModel(PreloadHeads[filepath], 'head', lod, True) + if not forGui: pLoaded = self.loadPumpkin(headStyle[1], lod, copy) self.loadSnowMan(headStyle[1], lod, copy) @@ -745,6 +776,8 @@ def generateToonColor(self, style): (animalType == "horse")): parts = self.findAllMatches("**/ear?-*") parts.setColor(style.getHeadColor()) + dogears = self.findAllMatches('**/ear*') + dogears.setColor(style.getHeadColor()) def __fixEyes(self, style, forGui = 0): """__fixEyes(self, AvatarDNA style) @@ -1115,25 +1148,24 @@ def __fixHeadLongShort(self, style, lodName=None, copy = 1): searchRoot = self.find("**/" + str(lodName)) # if there are ears to switch - if (animalType != "duck") and (animalType != "horse"): + if (animalType != "duck"): # rabbits are reversed if (animalType == "rabbit"): if copy: - searchRoot.find("**/ears-long").removeNode() + searchRoot.find('**/ears-long').removeNode() else: - searchRoot.find("**/ears-long").hide() + searchRoot.find('**/ears-long').hide() + elif copy: + searchRoot.find('**/ears-short').removeNode() else: - if copy: - searchRoot.find("**/ears-short").removeNode() - else: - searchRoot.find("**/ears-short").hide() + searchRoot.find('**/ears-short').hide() # rabbits only have one type of eye poly - if (animalType != "rabbit"): - if copy: - searchRoot.find("**/eyes-short").removeNode() - else: - searchRoot.find("**/eyes-short").hide() + #if (animalType != "rabbit"): + if copy: + searchRoot.find("**/eyes-short").removeNode() + else: + searchRoot.find("**/eyes-short").hide() # Now every animal except dog has 2 types of pupils except the dog if animalType != 'dog': @@ -1179,7 +1211,7 @@ def __fixHeadShortLong(self, style, lodName=None, copy = 1): searchRoot = self.find("**/" + str(lodName)) # if there are ears to switch - if (animalType != "duck") and (animalType != "horse") : + if (animalType != "duck"): # rabbits are reversed if (animalType == "rabbit"): if copy: @@ -1193,11 +1225,11 @@ def __fixHeadShortLong(self, style, lodName=None, copy = 1): searchRoot.find("**/ears-long").hide() # rabbits only have one type of eye poly - if (animalType != "rabbit"): - if copy: - searchRoot.find("**/eyes-long").removeNode() - else: - searchRoot.find("**/eyes-long").hide() + #if (animalType != "rabbit"): + if copy: + searchRoot.find("**/eyes-long").removeNode() + else: + searchRoot.find("**/eyes-long").hide() # Now every animal except dog has 2 types of pupils except the dog if animalType != 'dog': From 69f0571ccf988c83ce626b6050015a1dbc2259c7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Fri, 3 Feb 2023 18:32:06 -0600 Subject: [PATCH 05/10] add values for the other clash species --- otp/otpbase/OTPGlobals.py | 89 +++++++++--- toontown/toon/RobotToonManager.py | 31 +++- toontown/toon/ToonDNA.py | 110 +++++++++++--- toontown/toon/ToonHead.py | 234 ++++++++++++++++++++++++++++-- 4 files changed, 412 insertions(+), 52 deletions(-) diff --git a/otp/otpbase/OTPGlobals.py b/otp/otpbase/OTPGlobals.py index e529805..78b780c 100644 --- a/otp/otpbase/OTPGlobals.py +++ b/otp/otpbase/OTPGlobals.py @@ -331,15 +331,22 @@ def setDefaultProductPrefix(prefix): # These scales came from Bruce's line-up. The body scales were globally # reduced by about 10 percent to get the overall height he wanted toonBodyScales = { - 'mouse': 0.60, - 'cat': 0.73, - 'duck': 0.66, - 'rabbit': 0.74, - 'horse': 0.85, - 'dog': 0.85, - 'monkey': 0.68, - 'bear': 0.85, - 'pig': 0.77 + 'mouse': 0.60, + 'cat': 0.73, + 'duck': 0.66, + 'rabbit': 0.74, + 'horse': 0.85, + 'dog': 0.85, + 'monkey': 0.68, + 'bear': 0.85, + 'pig': 0.77, + 'deer': 0.70, + 'beaver': 0.65, + 'alligator': 0.77, + 'fox': 0.73, + 'bat': 0.60, + 'raccoon': 0.73, + 'turkey': 0.66 } # These are vec3s since they are non uniform @@ -351,15 +358,24 @@ def setDefaultProductPrefix(prefix): # 'rabbit': Point3(1.0000), # 'horse': Point3(1.0000), # 'dog': Point3(1.0857), - 'mouse': Point3(1.0), - 'cat': Point3(1.0), - 'duck': Point3(1.0), - 'rabbit': Point3(1.0), - 'horse': Point3(1.0), - 'dog': Point3(1.0), - 'monkey': Point3(1.0), - 'bear': Point3(1.0), - 'pig': Point3(1.0) + 'mouse': Point3(1.0), + 'cat': Point3(1.0), + 'duck': Point3(1.0), + 'rabbit': Point3(1.0), + 'horse': Point3(1.0), + 'dog': Point3(1.0), + 'monkey': Point3(1.0), + 'bear': Point3(1.0), + 'pig': Point3(1.0), + 'deer': Point3(1.0), + 'beaver': Point3(1.0), + 'alligator': Point3(1.0), + 'fox': Point3(1.0), + 'bat': Point3(1.0), + 'raccoon': Point3(1.0), + 'turkey': Point3(1.0), + 'bear': Point3(1.0), + 'pig': Point3(1.0), } legHeightDict = { @@ -396,6 +412,8 @@ def setDefaultProductPrefix(prefix): 'mls': 0.75, 'mss': 0.50, + 'msl': 0.50, + 'mll': 0.75, 'rls': 0.75, 'rss': 0.50, @@ -422,6 +440,41 @@ def setDefaultProductPrefix(prefix): 'ssl': 0.50, 'sll': 0.75, + 'xls': 0.75, + 'xss': 0.50, + 'xsl': 0.50, + 'xll': 0.75, + + 'zls': 0.75, + 'zss': 0.50, + 'zsl': 0.50, + 'zll': 0.75, + + 'als': 0.75, + 'ass': 0.50, + 'asl': 0.50, + 'all': 0.75, + + 'vls': 0.75, + 'vss': 0.50, + 'vsl': 0.50, + 'vll': 0.75, + + 'nls': 0.75, + 'nss': 0.50, + 'nsl': 0.50, + 'nll': 0.75, + + 'tls': 0.75, + 'tss': 0.50, + 'tsl': 0.50, + 'tll': 0.75, + + 'gls': 0.75, + 'gss': 0.50, + 'gsl': 0.50, + 'gll': 0.75, + } diff --git a/toontown/toon/RobotToonManager.py b/toontown/toon/RobotToonManager.py index c50dd94..80aca35 100644 --- a/toontown/toon/RobotToonManager.py +++ b/toontown/toon/RobotToonManager.py @@ -1519,7 +1519,10 @@ def createInterface(self): # HEAD self.speciesDict = { 'c' : 'Cat', 'd' : 'Dog', 'f' : 'Duck', 'h' : 'Horse', 'm' : 'Mouse', 'r' : 'Rabbit', - 'p' : 'Monkey', 'b' : 'Bear', 's' : 'Pig' } + 'p' : 'Monkey', 'b' : 'Bear', 's' : 'Pig', + 'x' : 'Deer', 'z' : 'Beaver', 'a' : 'Alligator', + 'v' : 'Fox', 'n' : 'Bat', 't': 'Raccoon', + 'g' : 'Turkey',} speciesList = sorted(self.speciesDict.values()) self.headDict = {} for head in ToonDNA.toonHeadTypes: @@ -1759,7 +1762,7 @@ def createInterface(self): for i in range(3): cf = Frame(colorFrame) for j in range(20): - index = i * 14 + j + index = i * 20 + j if index < 39: color = self.transformRGB(ToonDNA.allClashColorsList[index]) b = Button(cf, width = 1, height = 1, background = color, @@ -2962,8 +2965,8 @@ def updateGenderRelatedInfo(self): def setSpecies(self, fUpdateHead = 1): if self.species.get() == 'Mouse': - self.slHeadButton['state'] = DGG.DISABLED - self.llHeadButton['state'] = DGG.DISABLED + self.slHeadButton['state'] = DGG.NORMAL + self.llHeadButton['state'] = DGG.NORMAL if self.head.get() in ['sl', 'll']: self.head.set('ss') else: @@ -2979,6 +2982,20 @@ def setHead(self): prefix = 'p' # primate elif self.species.get() == 'Pig': prefix = 's' # swine + elif self.species.get() == 'Deer': + prefix = 'x' # deer + elif self.species.get() == 'Beaver': + prefix = 'z' # beaver + elif self.species.get() == 'Alligator': + prefix = 'a' # alligator + elif self.species.get() == 'Fox': + prefix = 'v' # fox + elif self.species.get() == 'Bat': + prefix = 'n' # bat + elif self.species.get() == 'Raccoon': + prefix = 't' # raccoon + elif self.species.get() == 'Turkey': + prefix = 'g' # turkey else: prefix = self.species.get()[0].lower() self.setHeadType(prefix + self.head.get()) @@ -3472,7 +3489,11 @@ def setStomperSize(self, size): print('New Stomper Size:', size) def openRGBPanel(self): - print("coming soon yay") + from tkinter import colorchooser + cusRGB = colorchooser.askcolor(title ="Choose color") + ci = cusRGB + self.setToonColor(ci) + print("Custom Color: " + str(ci)) diff --git a/toontown/toon/ToonDNA.py b/toontown/toon/ToonDNA.py index 4cc46f1..6ad9bae 100644 --- a/toontown/toon/ToonDNA.py +++ b/toontown/toon/ToonDNA.py @@ -7,6 +7,8 @@ import random from direct.distributed.PyDatagram import PyDatagram from direct.distributed.PyDatagramIterator import PyDatagramIterator +from panda3d.core import * +from panda3d.direct import * from otp.avatar import AvatarDNA notify = directNotify.newCategory("ToonDNA") @@ -25,19 +27,33 @@ 'p', # Monkey 'b', # Bear 's' # Pig (swine) + 'x', # Deer + 'z', # Beaver + 'a', # Alligator + 'v', # Fox + 'n', # Bat + 't', # Raccoon + 'g', # Turkey ] toonHeadTypes = [ "dls", "dss", "dsl", "dll", # Dog "cls", "css", "csl", "cll", # Cat "hls", "hss", "hsl", "hll", # Horse - "mls", "mss", # Mouse + "mls", "mss", "msl", "mll", # Mouse "rls", "rss", "rsl", "rll", # Rabbit "fls", "fss", "fsl", "fll", # Duck (Fowl) "pls", "pss", "psl", "pll", # Monkey (Primate) "bls", "bss", "bsl", "bll", # Bear - "sls", "sss", "ssl", "sll" # Pig (swine) + "sls", "sss", "ssl", "sll", # Pig (swine) + "xls", "xss", "xsl", "xll", # Deer + "zls", "zss", "zsl", "zll", # Beaver + "als", "ass", "asl", "all", # Alligator + "vls", "vss", "vsl", "vll", # Fox + "nls", "nss", "nsl", "nll", # Bat + "tls", "tss", "tsl", "tll", # Raccoon + "gls", "gss", "gsl", "gll" # Turkey ] - + def getHeadList(species): """ Returns a list of head types given the species. @@ -57,7 +73,7 @@ def getHeadStartIndex(species): for head in toonHeadTypes: if (head[0] == species): return toonHeadTypes.index(head) - + def getSpecies(head): """ Returns the species when the head is given. @@ -65,7 +81,7 @@ def getSpecies(head): for species in toonSpeciesTypes: if (species == head[0]): return species - + def getSpeciesName(head): """ Returns the full name of the species in small letters @@ -90,8 +106,21 @@ def getSpeciesName(head): speciesName = 'bear' elif (species == 's'): speciesName = 'pig' + elif (species == 'x'): + speciesName = 'deer' + elif (species == 'z'): + speciesName = 'beaver' + elif (species == 'a'): + speciesName = 'alligator' + elif (species == 'v'): + speciesName = 'fox' + elif (species == 'n'): + speciesName = 'bat' + elif (species == 't'): + speciesName = 'raccoon' + elif (species == 'g'): + speciesName = 'turkey' return speciesName - # TODO: if base.wantNewSpecies @@ -100,23 +129,56 @@ def getSpeciesName(head): 4, # start of cat heads 8, # start of horse heads 12, # start of mouse heads - 14, # start of rabbit heads - 18, # start of duck heads - 22, # start of monkey heads - 26, # start of bear heads - 30, # start of pig heads + 16, # start of rabbit heads + 20, # start of duck heads + 24, # start of monkey heads + 28, # start of bear heads + 32, # start of pig heads + 36, # start of deer heads + 40, # start of beaver heads + 44, # start of alligator heads + 48, # start of fox heads + 52, # start of bat heads + 56, # start of raccoon heads + 60, # start of turkey heads ] +# free trialers cannot be monkeys, bears, or horses +toonHeadAnimalIndicesTrial = [ 0, # start of dog heads + 4, # start of cat heads + 12, # start of mouse heads + 16, # start of rabbit heads + 20, # start of duck heads + 32, # start of pig heads + ] + allToonHeadAnimalIndices = [ 0, 1, 2, 3, # Dog 4, 5, 6, 7, # Cat 8, 9, 10, 11, # Horse - 12, 13, # Mouse - 14, 15, 16, 17, # Rabbit - 18, 19, 20, 21, # Duck - 22, 23, 24, 25, # Monkey - 26, 27, 28, 29, # Bear - 30, 31, 32, 33, # Pig + 12, 13, 14, 15, # Mouse + 16, 17, 18, 19, # Rabbit + 20, 21, 22, 23, # Duck + 24, 25, 26, 27, # Monkey + 28, 29, 30, 31, # Bear + 32, 33, 34, 35, # Pig + 36, 37, 38, 39, # Deer + 40, 41, 42, 43, # Beaver + 44, 45, 46, 47, # Alligator + 48, 49, 50, 51, # Fox + 52, 53, 54, 55, # Bat + 56, 57, 58, 59, # Raccoon + 60, 61, 62, 63 # Turkey ] + +# Free trialers cannot be monkeys, Bears, or Horses +allToonHeadAnimalIndicesTrial = [ 0, 1, 2, 3, # Dog + 4, 5, 6, 7, # Cat + 12, 13, 14, 15, # Mouse + 16, 17, 18, 19, # Rabbit + 20, 21, 22, 23, # Duck + 32, 33, 34, 35, # Pig + ] + toonTorsoTypes = [ "ss", "ms", "ls", "sd", "md", "ld", "s", "m", "l" ] # short shorts, medium shorts, long shorts, @@ -1880,6 +1942,20 @@ def getAnimal(self): return("bear") elif (self.head[0] == 's'): return("pig") + elif (self.head[0] == 'x'): + return ("deer") + elif (self.head[0] == 'z'): + return("beaver") + elif (self.head[0] == 'a'): + return("alligator") + elif (self.head[0] == 'v'): + return("fox") + elif (self.head[0] == 'n'): + return("bat") + elif (self.head[0] == 't'): + return ("raccoon") + elif (self.head[0] == 'g'): + return ("turkey") else: notify.error("unknown headStyle: ", self.head[0]) diff --git a/toontown/toon/ToonHead.py b/toontown/toon/ToonHead.py index 6c9ac57..ae9f050 100644 --- a/toontown/toon/ToonHead.py +++ b/toontown/toon/ToonHead.py @@ -31,9 +31,16 @@ "r":"/models/char/rabbit-heads-", \ "f":"/models/char/duck-heads-", \ "p":"/models/char/monkey-heads-", \ - "b":"/models/char/bear-heads-",\ - "s":"/models/char/pig-heads-" - } + "b":"/models/char/bear-heads-", \ + "s":"/models/char/pig-heads-", \ + 'x': '/models/char/deer-heads-', \ + 'z': '/models/char/beaver-heads-', \ + 'a': '/models/char/alligator-heads-', \ + 'v': '/models/char/fox-heads-', \ + 'n': '/models/char/bat-heads-', \ + 't': '/models/char/raccoon-heads-', + 'g': '/models/char/turkey-heads-', + } else: HeadDict = { "dls": "/models/char/tt_a_chr_dgm_shorts_head_", \ "dss":"/models/char/tt_a_chr_dgm_skirt_head_", \ @@ -46,8 +53,15 @@ "f":"/models/char/duck-heads-", \ "p":"/models/char/monkey-heads-", \ "b":"/models/char/bear-heads-",\ - "s":"/models/char/pig-heads-" - } + "s":"/models/char/pig-heads-", \ + 'x': '/models/char/deer-heads-', \ + 'z': '/models/char/beaver-heads-', \ + 'a': '/models/char/alligator-heads-', \ + 'v': '/models/char/fox-heads-', \ + 'n': '/models/char/bat-heads-', \ + 't': '/models/char/raccoon-heads-',\ + 'g': '/models/char/turkey-heads-', + } EyelashDict = {"d": "/models/char/dog-lashes", \ "c": "/models/char/cat-lashes", \ @@ -57,9 +71,15 @@ "f": "/models/char/duck-lashes", \ "p": "/models/char/monkey-lashes", \ "b": "/models/char/bear-lashes",\ - "s": "/models/char/pig-lashes" + "s": "/models/char/pig-lashes",\ + 'x': '/models/char/deer-lashes',\ + 'z': '/models/char/beaver-lashes',\ + 'a': '/models/char/alligator-lashes',\ + 'v': '/models/char/fox-lashes',\ + 'n': '/models/char/bat-lashes',\ + 't': '/models/char/raccoon-lashes',\ + 'g': '/models/char/turkey-lashes', } - DogMuzzleDict = { 'dls': '/models/char/dogMM_Shorts-headMuzzles-', 'dss': '/models/char/dogMM_Skirt-headMuzzles-', 'dsl': '/models/char/dogSS_Shorts-headMuzzles-', @@ -400,6 +420,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): fix = None # load the appropriate file + + # DOG if (headStyle == "dls"): # dog, long head, short muzzle filePrefix = HeadDict["dls"] @@ -416,6 +438,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): # dog, long head, long muzzle filePrefix = HeadDict["dll"] headHeight = 0.75 + + # CAT elif (headStyle == "cls"): # cat, long head, short muzzle filePrefix = HeadDict["c"] @@ -436,6 +460,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["c"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # HORSE elif (headStyle == "hls"): # horse, long head, short muzzle filePrefix = HeadDict["h"] @@ -456,6 +482,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["h"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # MOUSE elif (headStyle == "mls"): # mouse, long head, short muzzle filePrefix = HeadDict["m"] @@ -466,6 +494,17 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["m"] fix = self.__fixHeadShortShort headHeight = 0.5 + elif (headStyle == "msl"): + # mouse, short head, long muzzle + filePrefix = HeadDict["m"] + fix = self.__fixHeadShortLong + headHeight = 0.75 + elif (headStyle == "mll"): + # mouse, long head, long muzzle + filePrefix = HeadDict["m"] + fix = self.__fixHeadLongLong + headHeight = 0.5 + # RABBIT elif (headStyle == "rls"): # rabbit, long head/muzzle, short ears filePrefix = HeadDict["r"] @@ -486,6 +525,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["r"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # DUCK (FOWL) elif (headStyle == "fls"): # duck, long head, short bill filePrefix = HeadDict["f"] @@ -506,6 +547,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["f"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # MONKEY (PRIMATE) elif (headStyle == "pls"): # monkey, long head, short muzzle filePrefix = HeadDict["p"] @@ -526,6 +569,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["p"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # BEAR elif (headStyle == "bls"): # bear, long head, short muzzle filePrefix = HeadDict["b"] @@ -546,6 +591,8 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["b"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # PIG (SWINE) elif (headStyle == "sls"): # pig, long head, short muzzle filePrefix = HeadDict["s"] @@ -566,6 +613,161 @@ def generateToonHead(self, copy, style, lods, forGui = 0): filePrefix = HeadDict["s"] fix = self.__fixHeadLongLong headHeight = 0.75 + + # DEER + elif (headStyle == "xls"): + # deer, long head, short muzzle + filePrefix = HeadDict["x"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif (headStyle == "xss"): + # deer, short head, short muzzle + filePrefix = HeadDict["x"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif (headStyle == "xsl"): + # deer, short head, long muzzle + filePrefix = HeadDict["x"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif (headStyle == "xll"): + # deer. long head, long muzzle + filePrefix = HeadDict["x"] + fix = self.__fixHeadLongLong + headHeight = 0.75 + + # BEAVER + elif (headStyle == "zls"): + # beaver, long head, short muzzle + filePrefix = HeadDict["z"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif (headStyle == "zss"): + # beaver, short head, short muzzle + filePrefix = HeadDict["z"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif (headStyle == "zsl"): + # beaver, short head, long muzzle + filePrefix = HeadDict["z"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif headStyle == "zll": + # beaver, long head, long muzzle + filePrefix = HeadDict["z"] + fix = self.__fixHeadLongLong + headHeight = 0.75 + + # ALLIGATOR + elif headStyle == "als": + # alligator, long head, short muzzle + filePrefix = HeadDict["a"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif headStyle == "ass": + # alligator, short head, short muzzle + filePrefix = HeadDict["a"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif headStyle == "asl": + # alligator, short head, long muzzle + filePrefix = HeadDict["a"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif headStyle == "all": + # alligator, long head, long muzzle + filePrefix = HeadDict["a"] + fix = self.__fixHeadLongLong + headHeight = 0.75 + + # FOX + elif headStyle == "vls": + # fox, long head, short muzzle + filePrefix = HeadDict["v"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif headStyle == "vss": + # fox, short head, short muzzle + filePrefix = HeadDict["v"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif headStyle == "vsl": + # fox, short head, long muzzle + filePrefix = HeadDict["v"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif headStyle == "vll": + # fox, long head, long muzzle + filePrefix = HeadDict["v"] + fix = self.__fixHeadLongLong + headHeight = 0.75 + + # BAT + elif headStyle == "nls": + # bat, long head, short muzzle + filePrefix = HeadDict["n"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif headStyle == "nss": + # bat, short head, short muzzle + filePrefix = HeadDict["n"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif headStyle == "nsl": + # bat, short head, long muzzle + filePrefix = HeadDict["n"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif headStyle == "nll": + # bat, long head, long muzzle + filePrefix = HeadDict["n"] + fix = self.__fixHeadLongLong + headHeight = 0.75 + + # RACCOON + elif headStyle == "tls": + # raccoon, long head, short muzzle + filePrefix = HeadDict["t"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif headStyle == "tss": + # raccoon, short head, short muzzle + filePrefix = HeadDict["t"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif headStyle == "tsl": + # raccoon, short head, long muzzle + filePrefix = HeadDict["t"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif headStyle == "tll": + # raccoon, long head, long muzzle + filePrefix = HeadDict["t"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + + # TURKEY + elif headStyle == "gls": + # turkey, long head, short muzzle + filePrefix = HeadDict["g"] + fix = self.__fixHeadLongShort + headHeight = 0.75 + elif headStyle == "gss": + # turkey, short head, short muzzle + filePrefix = HeadDict["g"] + fix = self.__fixHeadShortShort + headHeight = 0.5 + elif headStyle == "gsl": + # turkey, short head, long muzzle + filePrefix = HeadDict["g"] + fix = self.__fixHeadShortLong + headHeight = 0.5 + elif headStyle == "gll": + # turkey, long head, long muzzle + filePrefix = HeadDict["g"] + fix = self.__fixHeadLongLong + headHeight = 0.5 + else: ToonHead.notify.error("unknown head style: %s" % headStyle) @@ -761,7 +963,7 @@ def generateToonColor(self, style): parts = self.findAllMatches("**/head*") parts.setColor(style.getHeadColor()) - # color the eyes, but god knows if this is going to work or not + # color the eyes eyes = self.findAllMatches("**/*pupil*") eyes.setColor(style.getEyeColor()) @@ -773,7 +975,11 @@ def generateToonColor(self, style): (animalType == "mouse") or (animalType == "pig") or (animalType == "dog") or - (animalType == "horse")): + (animalType == "horse") or + (animalType == "beaver") or + (animalType == "fox") or + (animalType == "bat") or + (animalType == "raccoon")): parts = self.findAllMatches("**/ear?-*") parts.setColor(style.getHeadColor()) dogears = self.findAllMatches('**/ear*') @@ -1148,7 +1354,9 @@ def __fixHeadLongShort(self, style, lodName=None, copy = 1): searchRoot = self.find("**/" + str(lodName)) # if there are ears to switch - if (animalType != "duck"): + if ((animalType != "duck") and + (animalType != "turkey") and + (animalType != "alligator")): # rabbits are reversed if (animalType == "rabbit"): if copy: @@ -1211,7 +1419,9 @@ def __fixHeadShortLong(self, style, lodName=None, copy = 1): searchRoot = self.find("**/" + str(lodName)) # if there are ears to switch - if (animalType != "duck"): + if ((animalType != "duck") and + (animalType != "turkey") and + (animalType != "alligator")): # rabbits are reversed if (animalType == "rabbit"): if copy: @@ -1694,7 +1904,7 @@ def exitEyelidsSurprised(self): self.__muzzle.setTexture(ToonHead.Muzzle, 1) def setupMuzzles(self, style): -## self.__muzzle = self.find("**/1000/**/muzzle*") + self.__muzzle = self.find("**/1000/**/muzzle*") self.__muzzles = [] self.__surpriseMuzzles = [] self.__angryMuzzles = [] From fd9336046d56d86de3e43933cfad128ceabacf80 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Sun, 26 Feb 2023 15:13:17 -0600 Subject: [PATCH 06/10] unused toon anims --- toontown/toon/RobotToonManager.py | 2 ++ toontown/toon/Toon.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/toontown/toon/RobotToonManager.py b/toontown/toon/RobotToonManager.py index 80aca35..b3bceff 100644 --- a/toontown/toon/RobotToonManager.py +++ b/toontown/toon/RobotToonManager.py @@ -337,6 +337,7 @@ "angry", "applause", "bank", + "block", "book", "bored", "bow", @@ -397,6 +398,7 @@ "struggle", "swim", "takePhone", + "taunt", "teleport", "think", "throw", diff --git a/toontown/toon/Toon.py b/toontown/toon/Toon.py index 4a03ff2..9fc6ae3 100644 --- a/toontown/toon/Toon.py +++ b/toontown/toon/Toon.py @@ -229,8 +229,11 @@ ("scientistEmcee", "scientistEmcee"), ("scientistWork", "scientistWork"), ("scientistGame", "scientistGame"), - ) + + # unused taunt anim + ("taunt", "taunt") + ) # battle Phase5AnimList = ( ("water-gun", "water-gun"), @@ -287,6 +290,7 @@ # sellbotHQ Phase9AnimList = ( + ("block", "block"), ("push", "push"), ) From bb702f7ebc3c55f01585259d79b2275cb8c90520 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Thu, 1 Jun 2023 21:01:38 -0500 Subject: [PATCH 07/10] why did i list this twice --- otp/otpbase/OTPGlobals.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/otp/otpbase/OTPGlobals.py b/otp/otpbase/OTPGlobals.py index 78b780c..177b4f8 100644 --- a/otp/otpbase/OTPGlobals.py +++ b/otp/otpbase/OTPGlobals.py @@ -373,9 +373,7 @@ def setDefaultProductPrefix(prefix): 'fox': Point3(1.0), 'bat': Point3(1.0), 'raccoon': Point3(1.0), - 'turkey': Point3(1.0), - 'bear': Point3(1.0), - 'pig': Point3(1.0), + 'turkey': Point3(1.0) } legHeightDict = { From 2a9b22dc4e2d95fe447e08dcc3585abaaa969556 Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Thu, 1 Jun 2023 21:10:06 -0500 Subject: [PATCH 08/10] Update ToonDNA.py ian check for syntax errors challenge (fail 99.95%) --- toontown/toon/ToonDNA.py | 80 ++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/toontown/toon/ToonDNA.py b/toontown/toon/ToonDNA.py index 6ad9bae..35a45af 100644 --- a/toontown/toon/ToonDNA.py +++ b/toontown/toon/ToonDNA.py @@ -26,7 +26,7 @@ 'f', # Duck 'p', # Monkey 'b', # Bear - 's' # Pig (swine) + 's', # Pig (swine) 'x', # Deer 'z', # Beaver 'a', # Alligator @@ -1434,45 +1434,45 @@ def getAllBottoms(gender, output = 'both'): ] allClashColorsList = [ # Clash Colors - VBase4(0.891, 0.439, 0.698, 1.0), - VBase4(0.741, 0.873, 0.957, 1.0), - VBase4(0.641, 0.857, 0.673, 1.0), - VBase4(0.039, 0.862, 0.654, 1.0), - VBase4(0.196, 0.725, 0.714, 1.0), - VBase4(0.984, 0.537, 0.396, 1.0), - VBase4(0.968, 0.749, 0.349, 1.0), - VBase4(0.658, 0.175, 0.258, 1.0), - VBase4(0.411, 0.644, 0.282, 1.0), - VBase4(0.325, 0.407, 0.601, 1.0), - VBase4(0.235, 0.573, 0.984, 1.0), - VBase4(0.0, 0.635294, 0.258823, 1.0), - VBase4(0.674509, 0.925490, 1.0, 1.0), - VBase4(0.988235, 0.894117, 0.745098, 1.0), - VBase4(0.749019, 1.0, 0.847058, 1.0), - VBase4(0.470588, 0.443137, 0.447058, 1.0), - VBase4(0.996078, 0.254901, 0.392156, 1.0), - VBase4(0.811764, 0.709803, 0.231372, 1.0), - VBase4(0.749019, 0.756862, 0.760784, 1.0), - VBase4(1.0, 0.639215, 0.262745, 1.0), - VBase4(0.0, 0.403921, 0.647058, 1.0), - VBase4(0.862745, 0.078431, 0.235294, 1.0), - VBase4(0.0, 0.635294, 0.513725, 1.0), - VBase4(0.803921, 0.498039, 0.196078, 1.0), - VBase4(0.70, 0.52, 0.75, 1.0), - VBase4(1.0, 0, 1.0, 1.0), - VBase4(0.5764, 0.4392, 0.8588, 1.0), - VBase4(1.0, 1.0, 0.94117, 1.0), - VBase4(0.9333, 0.8235, 0.9333, 1.0), - VBase4(0.0, 1.0, 0.4980, 1.0), - VBase4(0.8549, 0.6470, 0.1254, 1.0), - VBase4(1.0, 0.59607, 0.0705, 1.0), - VBase4(0.8039, 0.6862, 0.5843, 1.0), - VBase4(0.2196, 0.5568, 0.5568, 1.0), - VBase4(0.7764, 0.4431, 0.4431, 1.0), - VBase4(0.8901, 0.8117, 0.3411, 1.0), - VBase4(0.4117, 0.4117, 0.4117, 1.0), - VBase4(1.0, 0.8431, 0.0, 1.0), - VBase4(0.9333, 0.7882, 0.0, 1.0) + VBase4(0.891, 0.439, 0.698, 1.0), # 27 + VBase4(0.741, 0.873, 0.957, 1.0), # 28 + VBase4(0.641, 0.857, 0.673, 1.0), # 29 + VBase4(0.039, 0.862, 0.654, 1.0), # 30 + VBase4(0.196, 0.725, 0.714, 1.0), # 31 + VBase4(0.984, 0.537, 0.396, 1.0), # 32 + VBase4(0.968, 0.749, 0.349, 1.0), # 33 + VBase4(0.658, 0.175, 0.258, 1.0), # 34 + VBase4(0.411, 0.644, 0.282, 1.0), # 35 + VBase4(0.325, 0.407, 0.601, 1.0), # 36 + VBase4(0.235, 0.573, 0.984, 1.0), # 37 + VBase4(0.0, 0.635294, 0.258823, 1.0), # 38 + VBase4(0.674509, 0.925490, 1.0, 1.0), # 39 + VBase4(0.988235, 0.894117, 0.745098, 1.0), # 40 + VBase4(0.749019, 1.0, 0.847058, 1.0), # 41 + VBase4(0.470588, 0.443137, 0.447058, 1.0), # 42 + VBase4(0.996078, 0.254901, 0.392156, 1.0), # 43 + VBase4(0.811764, 0.709803, 0.231372, 1.0), # 44 + VBase4(0.749019, 0.756862, 0.760784, 1.0), # 45 + VBase4(1.0, 0.639215, 0.262745, 1.0), # 46 + VBase4(0.0, 0.403921, 0.647058, 1.0), # 47 + VBase4(0.862745, 0.078431, 0.235294, 1.0), # 48 + VBase4(0.0, 0.635294, 0.513725, 1.0), # 49 + VBase4(0.803921, 0.498039, 0.196078, 1.0), # 50 + VBase4(0.70, 0.52, 0.75, 1.0), # 51 + VBase4(1.0, 0, 1.0, 1.0), # 52 + VBase4(0.5764, 0.4392, 0.8588, 1.0), # 53 + VBase4(1.0, 1.0, 0.94117, 1.0), # 54 + VBase4(0.9333, 0.8235, 0.9333, 1.0), # 55 + VBase4(0.0, 1.0, 0.4980, 1.0), # 56 + VBase4(0.8549, 0.6470, 0.1254, 1.0), # 57 + VBase4(1.0, 0.59607, 0.0705, 1.0), # 58 + VBase4(0.8039, 0.6862, 0.5843, 1.0), # 59 + VBase4(0.2196, 0.5568, 0.5568, 1.0), # 60 + VBase4(0.7764, 0.4431, 0.4431, 1.0), # 61 + VBase4(0.8901, 0.8117, 0.3411, 1.0), # 62 + VBase4(0.4117, 0.4117, 0.4117, 1.0), # 63 + VBase4(1.0, 0.8431, 0.0, 1.0), # 64 + VBase4(0.9333, 0.7882, 0.0, 1.0), # 65 ] From f6a19d16349153170d798f1b771572e747e9d6ac Mon Sep 17 00:00:00 2001 From: "DESKTOP-5L85L2I\\ian" Date: Fri, 2 Jun 2023 11:31:23 -0500 Subject: [PATCH 09/10] h --- toontown/toon/ToonHead.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toontown/toon/ToonHead.py b/toontown/toon/ToonHead.py index ae9f050..cbf5c91 100644 --- a/toontown/toon/ToonHead.py +++ b/toontown/toon/ToonHead.py @@ -743,7 +743,7 @@ def generateToonHead(self, copy, style, lods, forGui = 0): elif headStyle == "tll": # raccoon, long head, long muzzle filePrefix = HeadDict["t"] - fix = self.__fixHeadShortLong + fix = self.__fixHeadLongLong headHeight = 0.5 # TURKEY From e2aa4e98901c32b6cabee926e7765c56c51236cf Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 26 Jan 2024 02:20:03 -0600 Subject: [PATCH 10/10] custom RGB finally out --- toontown/toon/RobotToonManager.py | 44 +++++++++++++++++++------ toontown/toon/ToonDNA.py | 55 ++++++++++++++++--------------- 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/toontown/toon/RobotToonManager.py b/toontown/toon/RobotToonManager.py index b3bceff..e5ff59e 100644 --- a/toontown/toon/RobotToonManager.py +++ b/toontown/toon/RobotToonManager.py @@ -2837,20 +2837,41 @@ def setToonColor(self, colorIndex): if st: dna = st.style if cm == 'all': - dna.armColor = colorIndex - dna.legColor = colorIndex - dna.headColor = colorIndex + dna.armColor = ToonDNA.allColorsList[colorIndex] + dna.legColor = ToonDNA.allColorsList[colorIndex] + dna.headColor = ToonDNA.allColorsList[colorIndex] elif cm == 'arms': - dna.armColor = colorIndex + dna.armColor = ToonDNA.allColorsList[colorIndex] elif cm == 'gloves': - dna.gloveColor = colorIndex + dna.gloveColor = ToonDNA.allColorsList[colorIndex] elif cm == 'legs': - dna.legColor = colorIndex + dna.legColor = ToonDNA.allColorsList[colorIndex] elif cm == 'head': - dna.headColor = colorIndex + dna.headColor = ToonDNA.allColorsList[colorIndex] elif cm == 'eyes': dna.eyeColor = colorIndex st.swapToonColor(dna) + + def setToonColorFromRGB(self, r, g, b, a): + cm = self.colorMode.get() + st = self.rtm.selectedToon + if st: + dna = st.style + if cm == 'all': + dna.armColor = r, g, b, a + dna.legColor = r, g, b, a + dna.headColor = r, g, b, a + elif cm == 'arms': + dna.armColor = r, g, b, a + elif cm == 'gloves': + dna.gloveColor = r, g, b, a + elif cm == 'legs': + dna.legColor = r, g, b, a + elif cm == 'head': + dna.headColor = r, g, b, a + elif cm == 'eyes': + dna.eyeColor = r, g, b, a + st.swapToonColor(dna) def updateToonInfo(self): st = self.rtm.selectedToon @@ -3493,9 +3514,12 @@ def setStomperSize(self, size): def openRGBPanel(self): from tkinter import colorchooser cusRGB = colorchooser.askcolor(title ="Choose color") - ci = cusRGB - self.setToonColor(ci) - print("Custom Color: " + str(ci)) + r = cusRGB[0][0] / 255 + g = cusRGB[0][1] / 255 + b = cusRGB[0][2] / 255 + a = 1.0 + print("Output color is: (%.2f, %.2f, %.2f, %.2f)" % (r, g, b, a)) + self.setToonColorFromRGB(r, g, b, a) diff --git a/toontown/toon/ToonDNA.py b/toontown/toon/ToonDNA.py index 35a45af..1689e9b 100644 --- a/toontown/toon/ToonDNA.py +++ b/toontown/toon/ToonDNA.py @@ -1594,10 +1594,13 @@ def makeNetString(self): dg.addUint8(self.botTex) dg.addUint8(self.botTexColor) # Colors - dg.addUint8(self.armColor) # We assume < 256 colors. + self.armColor = self.migrateColor(self.armColor) dg.addUint8(self.gloveColor) - dg.addUint8(self.legColor) - dg.addUint8(self.headColor) + self.legColor = self.migrateColor(self.legColor) + self.headColor = self.migrateColor(self.headColor) + for colors in (self.armColor, self.legColor, self.headColor): + for color in colors[:-1]: + dg.addFloat64(color) elif (self.type == 'u'): notify.error("undefined avatar") else: @@ -1637,10 +1640,10 @@ def isValidNetString(self, string): sleeveTexColor = dgi.getUint8() botTex = dgi.getUint8() botTexColor = dgi.getUint8() - armColor = dgi.getUint8() + armColor = (dgi.getFloat64(), dgi.getFloat64(), dgi.getFloat64(), 1.0) gloveColor = dgi.getUint8() - legColor = dgi.getUint8() - headColor = dgi.getUint8() + legColor = (dgi.getFloat64(), dgi.getFloat64(), dgi.getFloat64(), 1.0) + headColor = (dgi.getFloat64(), dgi.getFloat64(), dgi.getFloat64(), 1.0) if topTex >= len(Shirts): return False @@ -1687,10 +1690,10 @@ def makeFromNetString(self, string): self.sleeveTexColor = dgi.getUint8() self.botTex = dgi.getUint8() self.botTexColor = dgi.getUint8() - self.armColor = dgi.getUint8() + self.armColor = (dgi.getFloat64(), dgi.getFloat64(), dgi.getFloat64(), 1.0) self.gloveColor = dgi.getUint8() - self.legColor = dgi.getUint8() - self.headColor = dgi.getUint8() + self.legColor = (dgi.getFloat64(), dgi.getFloat64(), dgi.getFloat64(), 1.0) + self.headColor = (dgi.getFloat64(), dgi.getFloat64(), dgi.getFloat64(), 1.0) else: notify.error("unknown avatar type: ", self.type) @@ -1742,6 +1745,9 @@ def newToon(self, dna, color = None): else: notify.error("tuple must be in format ('%s', '%s', '%s', '%s')") + def migrateColor(self, color): + return allColorsList[color] if isinstance(color, int) else color + def newToonFromProperties(self, head, torso, legs, gender, armColor, gloveColor, legColor, headColor, topTexture, topTextureColor, sleeveTexture, @@ -1756,10 +1762,10 @@ def newToonFromProperties(self, head, torso, legs, gender, self.torso = torso self.legs = legs self.gender = gender - self.armColor = armColor + self.armColor = self.migrateColor(armColor) self.gloveColor = gloveColor - self.legColor = legColor - self.headColor = headColor + self.legColor = self.migrateColor(legColor) + self.headColor = self.migrateColor(headColor) self.topTex = topTexture self.topTexColor = topTextureColor self.sleeveTex = sleeveTexture @@ -1791,13 +1797,13 @@ def updateToonProperties(self, head = None, torso = None, legs = None, if gender: self.gender = gender if armColor: - self.armColor = armColor + self.armColor = self.migrateColor(armColor) if gloveColor: self.gloveColor = gloveColor if legColor: - self.legColor = legColor + self.legColor = self.migrateColor(legColor) if headColor: - self.headColor = headColor + self.headColor = self.migrateColor(headColor) if topTexture: self.topTex = topTexture if topTextureColor: @@ -2024,28 +2030,23 @@ def getClothes(self): notify.error("unknown clothing type: ", self.torso[1]) def getArmColor(self): - try: - return allColorsList[self.armColor] - except: - return allColorsList[0] - + return self.armColor + def getLegColor(self): - try: - return allColorsList[self.legColor] - except: - return allColorsList[0] - + return self.legColor + def getHeadColor(self): try: - return allColorsList[self.headColor] + return self.headColor except: - return allColorsList[0] + return allColorsList[self.headColor] def getEyeColor(self): try: return allColorsList[self.eyeColor] except: return allColorsList[0] + def getGloveColor(self): try: return allColorsList[self.gloveColor]