Added new section-based format for ribbons.txt

This commit is contained in:
Maruno17
2021-06-20 17:57:35 +01:00
parent e201821919
commit 53d27d3cf5
6 changed files with 470 additions and 107 deletions

View File

@@ -19,7 +19,7 @@ module GameData
def initialize(hash)
@id = hash[:id]
@real_name = hash[:name] || "Unnamed"
@icon_position = hash[:icon_position] || -1 # -1 means "no icon"
@icon_position = hash[:icon_position] || 0
end
# @return [String] the translated name of this body shape

View File

@@ -23,7 +23,7 @@ module GameData
@id = hash[:id]
@real_name = hash[:name] || "Unnamed"
@animation = hash[:animation]
@icon_position = hash[:icon_position] || -1 # -1 means "no icon"
@icon_position = hash[:icon_position] || 0
end
# @return [String] the translated name of this status condition

View File

@@ -2,20 +2,26 @@ module GameData
class Ribbon
attr_reader :id
attr_reader :real_name
attr_reader :real_description
attr_reader :icon_position # Where this ribbon's graphic is within ribbons.png
attr_reader :real_description
DATA = {}
DATA_FILENAME = "ribbons.dat"
SCHEMA = {
"Name" => [:name, "s"],
"IconPosition" => [:icon_position, "u"],
"Description" => [:description, "q"]
}
extend ClassMethodsSymbols
include InstanceMethods
def initialize(hash)
@id = hash[:id]
@real_name = hash[:name] || "Unnamed"
@icon_position = hash[:icon_position] || 0
@real_description = hash[:description] || "???"
@icon_position = hash[:icon_position] || -1
end
# @return [String] the translated name of this ribbon

View File

@@ -921,17 +921,52 @@ module Compiler
#=============================================================================
def compile_ribbons(path = "PBS/ribbons.txt")
GameData::Ribbon::DATA.clear
schema = GameData::Ribbon::SCHEMA
ribbon_names = []
ribbon_descriptions = []
ribbon_hash = nil
pbCompilerEachPreppedLine(path) { |line, line_no|
line = pbGetCsvRecord(line, line_no, [0, "unss"])
ribbon_symbol = line[1].to_sym
if GameData::Ribbon::DATA[ribbon_symbol]
raise _INTL("Ribbon ID '{1}' is used twice.\r\n{2}", ribbon_symbol, FileLineData.linereport)
if line[/^\s*\[\s*(.+)\s*\]\s*$/] # New section [ribbon_id]
# Add previous ribbon's data to records
GameData::Ribbon.register(ribbon_hash) if ribbon_hash
# Parse ribbon ID
ribbon_id = $~[1].to_sym
if GameData::Ribbon.exists?(ribbon_id)
raise _INTL("Ribbon ID '{1}' is used twice.\r\n{2}", ribbon_id, FileLineData.linereport)
end
# Construct ribbon hash
ribbon_hash = {
:id => ribbon_symbol,
:id => ribbon_id
}
elsif line[/^\s*(\w+)\s*=\s*(.*)\s*$/] # XXX=YYY lines
if !ribbon_hash
raise _INTL("Expected a section at the beginning of the file.\r\n{1}", FileLineData.linereport)
end
# Parse property and value
property_name = $~[1]
line_schema = schema[property_name]
next if !line_schema
property_value = pbGetCsvRecord($~[2], line_no, line_schema)
# Record XXX=YYY setting
ribbon_hash[line_schema[0]] = property_value
case property_name
when "Name"
ribbon_names.push(ribbon_hash[:name])
when "Description"
ribbon_descriptions.push(ribbon_hash[:description])
end
else # Old format
# Add previous ribbon's data to records
GameData::Ribbon.register(ribbon_hash) if ribbon_hash
# Parse ribbon
line = pbGetCsvRecord(line, line_no, [0, "unss"])
ribbon_id = line[1].to_sym
if GameData::Ribbon::DATA[ribbon_id]
raise _INTL("Ribbon ID '{1}' is used twice.\r\n{2}", ribbon_id, FileLineData.linereport)
end
# Construct ribbon hash
ribbon_hash = {
:id => ribbon_id,
:name => line[2],
:description => line[3],
:icon_position => line[0] - 1
@@ -940,7 +975,11 @@ module Compiler
GameData::Ribbon.register(ribbon_hash)
ribbon_names.push(ribbon_hash[:name])
ribbon_descriptions.push(ribbon_hash[:description])
ribbon_hash = nil
end
}
# Add last ribbon's data to records
GameData::Ribbon.register(ribbon_hash) if ribbon_hash
# Save all data
GameData::Ribbon.save
MessageTypes.setMessagesAsHash(MessageTypes::RibbonNames, ribbon_names)

View File

@@ -497,14 +497,13 @@ module Compiler
def write_ribbons
File.open("PBS/ribbons.txt", "wb") { |f|
add_PBS_header_to_file(f)
# Write each ability in turn
GameData::Ribbon.each do |ribbon|
f.write("\#-------------------------------\r\n")
GameData::Ribbon.each do |r|
f.write(sprintf("%d,%s,%s,%s\r\n",
r.icon_position + 1,
csvQuote(r.id.to_s),
csvQuote(r.real_name),
csvQuoteAlways(r.real_description)
))
f.write("[#{ribbon.id}]\r\n")
f.write("Name = #{ribbon.real_name}\r\n")
f.write("IconPosition = #{ribbon.icon_position}\r\n")
f.write("Description = #{ribbon.real_description}\r\n")
end
}
Graphics.update

View File

@@ -1,82 +1,401 @@
# See the documentation on the wiki to learn how to edit this file.
#-------------------------------
1,HOENNCOOL,Cool Ribbon,"Hoenn Cool Contest Normal Rank winner!"
2,HOENNCOOLSUPER,Cool Ribbon Super,"Hoenn Cool Contest Super Rank winner!"
3,HOENNCOOLHYPER,Cool Ribbon Hyper,"Hoenn Cool Contest Hyper Rank winner!"
4,HOENNCOOLMASTER,Cool Ribbon Master,"Hoenn Cool Contest Master Rank winner!"
5,HOENNBEAUTY,Beauty Ribbon,"Hoenn Beauty Contest Normal Rank winner!"
6,HOENNBEAUTYSUPER,Beauty Ribbon Super,"Hoenn Beauty Contest Super Rank winner!"
7,HOENNBEAUTYHYPER,Beauty Ribbon Hyper,"Hoenn Beauty Contest Hyper Rank winner!"
8,HOENNBEAUTYMASTER,Beauty Ribbon Master,"Hoenn Beauty Contest Master Rank winner!"
9,HOENNCUTE,Cute Ribbon,"Hoenn Cute Contest Normal Rank winner!"
10,HOENNCUTESUPER,Cute Ribbon Super,"Hoenn Cute Contest Super Rank winner!"
11,HOENNCUTEHYPER,Cute Ribbon Hyper,"Hoenn Cute Contest Hyper Rank winner!"
12,HOENNCUTEMASTER,Cute Ribbon Master,"Hoenn Cute Contest Master Rank winner!"
13,HOENNSMART,Smart Ribbon,"Hoenn Smart Contest Normal Rank winner!"
14,HOENNSMARTSUPER,Smart Ribbon Super,"Hoenn Smart Contest Super Rank winner!"
15,HOENNSMARTHYPER,Smart Ribbon Hyper,"Hoenn Smart Contest Hyper Rank winner!"
16,HOENNSMARTMASTER,Smart Ribbon Master,"Hoenn Smart Contest Master Rank winner!"
17,HOENNTOUGH,Tough Ribbon,"Hoenn Tough Contest Normal Rank winner!"
18,HOENNTOUGHSUPER,Tough Ribbon Super,"Hoenn Tough Contest Super Rank winner!"
19,HOENNTOUGHHYPER,Tough Ribbon Hyper,"Hoenn Tough Contest Hyper Rank winner!"
20,HOENNTOUGHMASTER,Tough Ribbon Master,"Hoenn Tough Contest Master Rank winner!"
21,SINNOHCOOL,Cool Ribbon,"Super Contest Cool Category Normal Rank winner!"
22,SINNOHCOOLSUPER,Cool Ribbon Great,"Super Contest Cool Category Great Rank winner!"
23,SINNOHCOOLHYPER,Cool Ribbon Ultra,"Super Contest Cool Category Ultra Rank winner!"
24,SINNOHCOOLMASTER,Cool Ribbon Master,"Super Contest Cool Category Master Rank winner!"
25,SINNOHBEAUTY,Beauty Ribbon,"Super Contest Beauty Category Normal Rank winner!"
26,SINNOHBEAUTYSUPER,Beauty Ribbon Great,"Super Contest Beauty Category Great Rank winner!"
27,SINNOHBEAUTYHYPER,Beauty Ribbon Ultra,"Super Contest Beauty Category Ultra Rank winner!"
28,SINNOHBEAUTYMASTER,Beauty Ribbon Master,"Super Contest Beauty Category Master Rank winner!"
29,SINNOHCUTE,Cute Ribbon,"Super Contest Cute Category Normal Rank winner!"
30,SINNOHCUTESUPER,Cute Ribbon Great,"Super Contest Cute Category Great Rank winner!"
31,SINNOHCUTEHYPER,Cute Ribbon Ultra,"Super Contest Cute Category Ultra Rank winner!"
32,SINNOHCUTEMASTER,Cute Ribbon Master,"Super Contest Cute Category Master Rank winner!"
33,SINNOHSMART,Smart Ribbon,"Super Contest Smart Category Normal Rank winner!"
34,SINNOHSMARTSUPER,Smart Ribbon Great,"Super Contest Smart Category Great Rank winner!"
35,SINNOHSMARTHYPER,Smart Ribbon Ultra,"Super Contest Smart Category Ultra Rank winner!"
36,SINNOHSMARTMASTER,Smart Ribbon Master,"Super Contest Smart Category Master Rank winner!"
37,SINNOHTOUGH,Tough Ribbon,"Super Contest Tough Category Normal Rank winner!"
38,SINNOHTOUGHSUPER,Tough Ribbon Great,"Super Contest Tough Category Great Rank winner!"
39,SINNOHTOUGHHYPER,Tough Ribbon Ultra,"Super Contest Tough Category Ultra Rank winner!"
40,SINNOHTOUGHMASTER,Tough Ribbon Master,"Super Contest Tough Category Master Rank winner!"
41,WINNING,Winning Ribbon,"Ribbon awarded for clearing Hoenn's Battle Tower's Lv. 50 challenge."
42,VICTORY,Victory Ribbon,"Ribbon awarded for clearing Hoenn's Battle Tower's Lv. 100 challenge."
43,ABILITY,Ability Ribbon,"A Ribbon awarded for defeating the Tower Tycoon at the Battle Tower."
44,GREATABILITY,Great Ability Ribbon,"A Ribbon awarded for defeating the Tower Tycoon at the Battle Tower."
45,DOUBLEABILITY,Double Ability Ribbon,"A Ribbon awarded for completing the Battle Tower Double challenge."
46,MULTIABILITY,Multi Ability Ribbon,"A Ribbon awarded for completing the Battle Tower Multi challenge."
47,PAIRABILITY,Pair Ability Ribbon,"A Ribbon awarded for completing the Battle Tower Link Multi challenge."
48,WORLDABILITY,World Ability Ribbon,"A Ribbon awarded for completing the Wi-Fi Battle Tower challenge."
49,CHAMPION,Champion Ribbon,"Ribbon for clearing the Pokémon League and entering the Hall of Fame in another region. "
50,SINNOHCHAMP,Sinnoh Champ Ribbon,"Ribbon awarded for beating the Sinnoh Champion and entering the Hall of Fame."
51,RECORD,Record Ribbon,"A Ribbon awarded for setting an incredible record."
52,EVENT,Event Ribbon,"Pokémon Event Participation Ribbon."
53,LEGEND,Legend Ribbon,"A Ribbon awarded for setting a legendary record."
54,GORGEOUS,Gorgeous Ribbon,"An extraordinarily gorgeous and extravagant Ribbon."
55,ROYAL,Royal Ribbon,"An incredibly regal Ribbon with an air of nobility."
56,GORGEOUSROYAL,Gorgeous Royal Ribbon,"A gorgeous and regal Ribbon that is the peak of fabulous."
57,ALERT,Alert Ribbon,"A Ribbon for recalling an invigorating event that created life energy."
58,SHOCK,Shock Ribbon,"A Ribbon for recalling a thrilling event that made life more exciting."
59,DOWNCAST,Downcast Ribbon,"A Ribbon for recalling feelings of sadness that added spice to life."
60,CARELESS,Careless Ribbon,"A Ribbon for recalling a careless error that helped steer life decisions."
61,RELAX,Relax Ribbon,"A Ribbon for recalling a refreshing event that added sparkle to life."
62,SNOOZE,Snooze Ribbon,"A Ribbon for recalling a deep slumber that made life soothing."
63,SMILE,Smile Ribbon,"A Ribbon for recalling that smiles enrich the quality of life."
64,FOOTPRINT,Footprint Ribbon,"A Ribbon awarded to a Pokémon deemed to have a top-quality footprint."
65,ARTIST,Artist Ribbon,"Ribbon awarded for being chosen as a super sketch model in Hoenn."
66,EFFORT,Effort Ribbon,"Ribbon awarded for being an exceptionally hard worker."
67,BIRTHDAY,Birthday Ribbon,"A Ribbon to celebrate a birthday."
68,SPECIAL,Special Ribbon,"A special Ribbon for a special day."
69,CLASSIC,Classic Ribbon,"A Ribbon that proclaims love for Pokémon."
70,PREMIER,Premier Ribbon,"Special Holiday Ribbon."
71,SOUVENIR,Souvenir Ribbon,"A Ribbon to cherish a special memory."
72,WISHING,Wishing Ribbon,"A Ribbon said to make your wish come true."
73,NATIONAL,National Ribbon,"A Ribbon awarded for overcoming all difficult challenges."
74,COUNTRY,Country Ribbon,"Pokémon League Champion Ribbon."
75,BATTLECHAMPION,Battle Champion Ribbon,"Battle Competition Champion Ribbon."
76,REGIONALCHAMPION,Regional Champion Ribbon,"Pokémon World Championships Regional Champion Ribbon."
77,EARTH,Earth Ribbon,"A Ribbon awarded for winning 100 matches in a row."
78,WORLD,World Ribbon,"Pokémon League Champion Ribbon."
79,NATIONALCHAMPION,National Champion Ribbon,"Pokémon World Championships National Champion Ribbon."
80,WORLDCHAMPION,World Champion Ribbon,"Pokémon World Championships World Champion Ribbon."
[HOENNCOOL]
Name = Cool Ribbon
IconPosition = 0
Description = Hoenn Cool Contest Normal Rank winner!
#-------------------------------
[HOENNCOOLSUPER]
Name = Cool Ribbon Super
IconPosition = 1
Description = Hoenn Cool Contest Super Rank winner!
#-------------------------------
[HOENNCOOLHYPER]
Name = Cool Ribbon Hyper
IconPosition = 2
Description = Hoenn Cool Contest Hyper Rank winner!
#-------------------------------
[HOENNCOOLMASTER]
Name = Cool Ribbon Master
IconPosition = 3
Description = Hoenn Cool Contest Master Rank winner!
#-------------------------------
[HOENNBEAUTY]
Name = Beauty Ribbon
IconPosition = 4
Description = Hoenn Beauty Contest Normal Rank winner!
#-------------------------------
[HOENNBEAUTYSUPER]
Name = Beauty Ribbon Super
IconPosition = 5
Description = Hoenn Beauty Contest Super Rank winner!
#-------------------------------
[HOENNBEAUTYHYPER]
Name = Beauty Ribbon Hyper
IconPosition = 6
Description = Hoenn Beauty Contest Hyper Rank winner!
#-------------------------------
[HOENNBEAUTYMASTER]
Name = Beauty Ribbon Master
IconPosition = 7
Description = Hoenn Beauty Contest Master Rank winner!
#-------------------------------
[HOENNCUTE]
Name = Cute Ribbon
IconPosition = 8
Description = Hoenn Cute Contest Normal Rank winner!
#-------------------------------
[HOENNCUTESUPER]
Name = Cute Ribbon Super
IconPosition = 9
Description = Hoenn Cute Contest Super Rank winner!
#-------------------------------
[HOENNCUTEHYPER]
Name = Cute Ribbon Hyper
IconPosition = 10
Description = Hoenn Cute Contest Hyper Rank winner!
#-------------------------------
[HOENNCUTEMASTER]
Name = Cute Ribbon Master
IconPosition = 11
Description = Hoenn Cute Contest Master Rank winner!
#-------------------------------
[HOENNSMART]
Name = Smart Ribbon
IconPosition = 12
Description = Hoenn Smart Contest Normal Rank winner!
#-------------------------------
[HOENNSMARTSUPER]
Name = Smart Ribbon Super
IconPosition = 13
Description = Hoenn Smart Contest Super Rank winner!
#-------------------------------
[HOENNSMARTHYPER]
Name = Smart Ribbon Hyper
IconPosition = 14
Description = Hoenn Smart Contest Hyper Rank winner!
#-------------------------------
[HOENNSMARTMASTER]
Name = Smart Ribbon Master
IconPosition = 15
Description = Hoenn Smart Contest Master Rank winner!
#-------------------------------
[HOENNTOUGH]
Name = Tough Ribbon
IconPosition = 16
Description = Hoenn Tough Contest Normal Rank winner!
#-------------------------------
[HOENNTOUGHSUPER]
Name = Tough Ribbon Super
IconPosition = 17
Description = Hoenn Tough Contest Super Rank winner!
#-------------------------------
[HOENNTOUGHHYPER]
Name = Tough Ribbon Hyper
IconPosition = 18
Description = Hoenn Tough Contest Hyper Rank winner!
#-------------------------------
[HOENNTOUGHMASTER]
Name = Tough Ribbon Master
IconPosition = 19
Description = Hoenn Tough Contest Master Rank winner!
#-------------------------------
[SINNOHCOOL]
Name = Cool Ribbon
IconPosition = 20
Description = Super Contest Cool Category Normal Rank winner!
#-------------------------------
[SINNOHCOOLSUPER]
Name = Cool Ribbon Great
IconPosition = 21
Description = Super Contest Cool Category Great Rank winner!
#-------------------------------
[SINNOHCOOLHYPER]
Name = Cool Ribbon Ultra
IconPosition = 22
Description = Super Contest Cool Category Ultra Rank winner!
#-------------------------------
[SINNOHCOOLMASTER]
Name = Cool Ribbon Master
IconPosition = 23
Description = Super Contest Cool Category Master Rank winner!
#-------------------------------
[SINNOHBEAUTY]
Name = Beauty Ribbon
IconPosition = 24
Description = Super Contest Beauty Category Normal Rank winner!
#-------------------------------
[SINNOHBEAUTYSUPER]
Name = Beauty Ribbon Great
IconPosition = 25
Description = Super Contest Beauty Category Great Rank winner!
#-------------------------------
[SINNOHBEAUTYHYPER]
Name = Beauty Ribbon Ultra
IconPosition = 26
Description = Super Contest Beauty Category Ultra Rank winner!
#-------------------------------
[SINNOHBEAUTYMASTER]
Name = Beauty Ribbon Master
IconPosition = 27
Description = Super Contest Beauty Category Master Rank winner!
#-------------------------------
[SINNOHCUTE]
Name = Cute Ribbon
IconPosition = 28
Description = Super Contest Cute Category Normal Rank winner!
#-------------------------------
[SINNOHCUTESUPER]
Name = Cute Ribbon Great
IconPosition = 29
Description = Super Contest Cute Category Great Rank winner!
#-------------------------------
[SINNOHCUTEHYPER]
Name = Cute Ribbon Ultra
IconPosition = 30
Description = Super Contest Cute Category Ultra Rank winner!
#-------------------------------
[SINNOHCUTEMASTER]
Name = Cute Ribbon Master
IconPosition = 31
Description = Super Contest Cute Category Master Rank winner!
#-------------------------------
[SINNOHSMART]
Name = Smart Ribbon
IconPosition = 32
Description = Super Contest Smart Category Normal Rank winner!
#-------------------------------
[SINNOHSMARTSUPER]
Name = Smart Ribbon Great
IconPosition = 33
Description = Super Contest Smart Category Great Rank winner!
#-------------------------------
[SINNOHSMARTHYPER]
Name = Smart Ribbon Ultra
IconPosition = 34
Description = Super Contest Smart Category Ultra Rank winner!
#-------------------------------
[SINNOHSMARTMASTER]
Name = Smart Ribbon Master
IconPosition = 35
Description = Super Contest Smart Category Master Rank winner!
#-------------------------------
[SINNOHTOUGH]
Name = Tough Ribbon
IconPosition = 36
Description = Super Contest Tough Category Normal Rank winner!
#-------------------------------
[SINNOHTOUGHSUPER]
Name = Tough Ribbon Great
IconPosition = 37
Description = Super Contest Tough Category Great Rank winner!
#-------------------------------
[SINNOHTOUGHHYPER]
Name = Tough Ribbon Ultra
IconPosition = 38
Description = Super Contest Tough Category Ultra Rank winner!
#-------------------------------
[SINNOHTOUGHMASTER]
Name = Tough Ribbon Master
IconPosition = 39
Description = Super Contest Tough Category Master Rank winner!
#-------------------------------
[WINNING]
Name = Winning Ribbon
IconPosition = 40
Description = Ribbon awarded for clearing Hoenn's Battle Tower's Lv. 50 challenge.
#-------------------------------
[VICTORY]
Name = Victory Ribbon
IconPosition = 41
Description = Ribbon awarded for clearing Hoenn's Battle Tower's Lv. 100 challenge.
#-------------------------------
[ABILITY]
Name = Ability Ribbon
IconPosition = 42
Description = A Ribbon awarded for defeating the Tower Tycoon at the Battle Tower.
#-------------------------------
[GREATABILITY]
Name = Great Ability Ribbon
IconPosition = 43
Description = A Ribbon awarded for defeating the Tower Tycoon at the Battle Tower.
#-------------------------------
[DOUBLEABILITY]
Name = Double Ability Ribbon
IconPosition = 44
Description = A Ribbon awarded for completing the Battle Tower Double challenge.
#-------------------------------
[MULTIABILITY]
Name = Multi Ability Ribbon
IconPosition = 45
Description = A Ribbon awarded for completing the Battle Tower Multi challenge.
#-------------------------------
[PAIRABILITY]
Name = Pair Ability Ribbon
IconPosition = 46
Description = A Ribbon awarded for completing the Battle Tower Link Multi challenge.
#-------------------------------
[WORLDABILITY]
Name = World Ability Ribbon
IconPosition = 47
Description = A Ribbon awarded for completing the Wi-Fi Battle Tower challenge.
#-------------------------------
[CHAMPION]
Name = Champion Ribbon
IconPosition = 48
Description = Ribbon for clearing the Pokémon League and entering the Hall of Fame in another region.
#-------------------------------
[SINNOHCHAMP]
Name = Sinnoh Champ Ribbon
IconPosition = 49
Description = Ribbon awarded for beating the Sinnoh Champion and entering the Hall of Fame.
#-------------------------------
[RECORD]
Name = Record Ribbon
IconPosition = 50
Description = A Ribbon awarded for setting an incredible record.
#-------------------------------
[EVENT]
Name = Event Ribbon
IconPosition = 51
Description = Pokémon Event Participation Ribbon.
#-------------------------------
[LEGEND]
Name = Legend Ribbon
IconPosition = 52
Description = A Ribbon awarded for setting a legendary record.
#-------------------------------
[GORGEOUS]
Name = Gorgeous Ribbon
IconPosition = 53
Description = An extraordinarily gorgeous and extravagant Ribbon.
#-------------------------------
[ROYAL]
Name = Royal Ribbon
IconPosition = 54
Description = An incredibly regal Ribbon with an air of nobility.
#-------------------------------
[GORGEOUSROYAL]
Name = Gorgeous Royal Ribbon
IconPosition = 55
Description = A gorgeous and regal Ribbon that is the peak of fabulous.
#-------------------------------
[ALERT]
Name = Alert Ribbon
IconPosition = 56
Description = A Ribbon for recalling an invigorating event that created life energy.
#-------------------------------
[SHOCK]
Name = Shock Ribbon
IconPosition = 57
Description = A Ribbon for recalling a thrilling event that made life more exciting.
#-------------------------------
[DOWNCAST]
Name = Downcast Ribbon
IconPosition = 58
Description = A Ribbon for recalling feelings of sadness that added spice to life.
#-------------------------------
[CARELESS]
Name = Careless Ribbon
IconPosition = 59
Description = A Ribbon for recalling a careless error that helped steer life decisions.
#-------------------------------
[RELAX]
Name = Relax Ribbon
IconPosition = 60
Description = A Ribbon for recalling a refreshing event that added sparkle to life.
#-------------------------------
[SNOOZE]
Name = Snooze Ribbon
IconPosition = 61
Description = A Ribbon for recalling a deep slumber that made life soothing.
#-------------------------------
[SMILE]
Name = Smile Ribbon
IconPosition = 62
Description = A Ribbon for recalling that smiles enrich the quality of life.
#-------------------------------
[FOOTPRINT]
Name = Footprint Ribbon
IconPosition = 63
Description = A Ribbon awarded to a Pokémon deemed to have a top-quality footprint.
#-------------------------------
[ARTIST]
Name = Artist Ribbon
IconPosition = 64
Description = Ribbon awarded for being chosen as a super sketch model in Hoenn.
#-------------------------------
[EFFORT]
Name = Effort Ribbon
IconPosition = 65
Description = Ribbon awarded for being an exceptionally hard worker.
#-------------------------------
[BIRTHDAY]
Name = Birthday Ribbon
IconPosition = 66
Description = A Ribbon to celebrate a birthday.
#-------------------------------
[SPECIAL]
Name = Special Ribbon
IconPosition = 67
Description = A special Ribbon for a special day.
#-------------------------------
[CLASSIC]
Name = Classic Ribbon
IconPosition = 68
Description = A Ribbon that proclaims love for Pokémon.
#-------------------------------
[PREMIER]
Name = Premier Ribbon
IconPosition = 69
Description = Special Holiday Ribbon.
#-------------------------------
[SOUVENIR]
Name = Souvenir Ribbon
IconPosition = 70
Description = A Ribbon to cherish a special memory.
#-------------------------------
[WISHING]
Name = Wishing Ribbon
IconPosition = 71
Description = A Ribbon said to make your wish come true.
#-------------------------------
[NATIONAL]
Name = National Ribbon
IconPosition = 72
Description = A Ribbon awarded for overcoming all difficult challenges.
#-------------------------------
[COUNTRY]
Name = Country Ribbon
IconPosition = 73
Description = Pokémon League Champion Ribbon.
#-------------------------------
[BATTLECHAMPION]
Name = Battle Champion Ribbon
IconPosition = 74
Description = Battle Competition Champion Ribbon.
#-------------------------------
[REGIONALCHAMPION]
Name = Regional Champion Ribbon
IconPosition = 75
Description = Pokémon World Championships Regional Champion Ribbon.
#-------------------------------
[EARTH]
Name = Earth Ribbon
IconPosition = 76
Description = A Ribbon awarded for winning 100 matches in a row.
#-------------------------------
[WORLD]
Name = World Ribbon
IconPosition = 77
Description = Pokémon League Champion Ribbon.
#-------------------------------
[NATIONALCHAMPION]
Name = National Champion Ribbon
IconPosition = 78
Description = Pokémon World Championships National Champion Ribbon.
#-------------------------------
[WORLDCHAMPION]
Name = World Champion Ribbon
IconPosition = 79
Description = Pokémon World Championships World Champion Ribbon.