Botanic Society CKII Mod
TeMarChi
2 July 2017
Purpose:
This is the step by step journal on how I made a mod. It doesn't work, but it is closer to getting created. To discuss with and help others in what to do and generate more mod creations.
Background:
I didn’t include references because of forum rules. The Hanging Gardens of Babylon were around the BC era? After Rome’s fall, monks kept gardens for spiritual purposes, Hortus conclusus. In 1530 a picture book was publish about some plants. Possibly in 1545 orangeries began to appear. Herbariums didn’t appear until later, maybe in Bologna, Italy around 1570. In the 1700s, Carl Linnaeus worked on the binomial naming system. A major focus was on exotic plants and prestige.
For the Mod:
My goal, vision, is to have a society called The Botanical Society. An option is given to go on an expedition to collect floral samples. While gone a regent takes over the realm. Then after 2 months, a message will pop up saying you returned from your trip with a plant sample. You look in your artifacts and you will have a picture of a plant. When the cursor is placed over it, it will have a botanical name, genus, of a plant (example: Acer, as in maple; Artemisia, wormwood; etc.). Each plant will give a very small amount of prestige, but can add up with different plants, not duplicates of the same ones. I’m afraid to go any more complex. The mod would be for those wishing to explore different regions and just may learn a plant or two while collecting. The fun will be for collectors and the excitement of obtaining different plants from different places. Besides a little prestige, the mod would do little to affect winning the game. It would be more as a player side goal.
After an Initial Working Mod is created:
A single picture could be used for all plants, unique pictures for each is a goal for later. One plant per continent will suffice to start, or even select places. Having a different plant for each county a large undertaking for later. I won’t worry about ranks too much until initial creation. Maybe the gardener trait comes later. Perhaps have 20 different plants, you can make a once in a lifetime book on plants that gives some kind of stat modifier.
After completion:
If all is explained well, then this can serve as a guide to teach others how to do some modding. The mod could then be changed to collect religious texts, gemstones, anything by just renaming stuff. The fun is in collecting and you don’t know what you will get.
Thank you and credits to Arumba as listed below in text.
Also looked at Maal's "The Great Trade League" work as he is the first to make a custom society and all hail him as the king.
I learned by doing and testing and yeah, sometimes stuff didn't work.
Newer posts make this first one outdated. But I keep it as a journal record.
Please post any thoughts or questions. I can already see I am not that active. Thank you for your time and efforts, and have a nice day and Happy Fourth of July!
TeMarChi
2 July 2017
Purpose:
This is the step by step journal on how I made a mod. It doesn't work, but it is closer to getting created. To discuss with and help others in what to do and generate more mod creations.
Background:
I didn’t include references because of forum rules. The Hanging Gardens of Babylon were around the BC era? After Rome’s fall, monks kept gardens for spiritual purposes, Hortus conclusus. In 1530 a picture book was publish about some plants. Possibly in 1545 orangeries began to appear. Herbariums didn’t appear until later, maybe in Bologna, Italy around 1570. In the 1700s, Carl Linnaeus worked on the binomial naming system. A major focus was on exotic plants and prestige.
For the Mod:
My goal, vision, is to have a society called The Botanical Society. An option is given to go on an expedition to collect floral samples. While gone a regent takes over the realm. Then after 2 months, a message will pop up saying you returned from your trip with a plant sample. You look in your artifacts and you will have a picture of a plant. When the cursor is placed over it, it will have a botanical name, genus, of a plant (example: Acer, as in maple; Artemisia, wormwood; etc.). Each plant will give a very small amount of prestige, but can add up with different plants, not duplicates of the same ones. I’m afraid to go any more complex. The mod would be for those wishing to explore different regions and just may learn a plant or two while collecting. The fun will be for collectors and the excitement of obtaining different plants from different places. Besides a little prestige, the mod would do little to affect winning the game. It would be more as a player side goal.
After an Initial Working Mod is created:
A single picture could be used for all plants, unique pictures for each is a goal for later. One plant per continent will suffice to start, or even select places. Having a different plant for each county a large undertaking for later. I won’t worry about ranks too much until initial creation. Maybe the gardener trait comes later. Perhaps have 20 different plants, you can make a once in a lifetime book on plants that gives some kind of stat modifier.
After completion:
If all is explained well, then this can serve as a guide to teach others how to do some modding. The mod could then be changed to collect religious texts, gemstones, anything by just renaming stuff. The fun is in collecting and you don’t know what you will get.
Thank you and credits to Arumba as listed below in text.
Also looked at Maal's "The Great Trade League" work as he is the first to make a custom society and all hail him as the king.
I learned by doing and testing and yeah, sometimes stuff didn't work.
Newer posts make this first one outdated. But I keep it as a journal record.
Part 1 - Creating the Initial Mod Folder
Part 2 - Creating the Society in Game
Part 3 - Editing Society Ranks
Part 4 - Enable Rank Powers - Portrait Membership
----------------------------------------
Part 1 - Creating the Initial Mod Folder
Reference
Arumba. 2013. Crusader Kings 2 How to make a Mod. I removed links due to forum rules, but he explained it well.
First create a mod folder so you don't break the game.
There will be two CKII folders. One it the C drive where the game is installed. The other in Documents.
Step 1. Go to your documents folder:....Documents\Paradox Interactive\Crusader Kings II\mod
Created a new folder within the mod folder. I named mine Botanic.
Step 2. Next I have to copy some game files into the newly created mod folder, Botanic.
I went to the installed game file folder: C:\Program Files (x86)\Steam\steamapps\common\Crusader Kings II
I copied the following 6 folders:
common
decisions
events
gfx
interface
localisation
And placed this into my newly created folder: ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic
Step 3. In that mod folder:....Documents\Paradox Interactive\Crusader Kings II\mod
Create a new txt file.
In the txt file I placed the following two lines (I recommend all lowercase for the future):
I then saved the txt file. You might have to go into your control panel to make file extensions visible. To do that go into your control panel>Folder Options>View tab and then uncheck the "Hide extensions for known file types"
Then you can rename the txt file to: Botanic.mod
Now you can open your CKII game. Look at your mod options. "Botanic" should now be a selectable option.
If you see it, then success.
This created a folder with files we can edit so we don't mess up our original game.
----------------------------------------
Part 2 - Creating the Society in Game
Step1. I went into the folder I created: ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\common\societies
In that folder I opened the txt file: 00_societies.txt
There I scrolled through and looked at the file. I could determine the different society groups. I then found the "hermetics" section. I copied this entire section from
to the last "}" just before
In a text editor, name removed, I pasted the code. I then began to edit.
First at the top I placed
I changed "hermetics = {" to "Botanic = {"
I then pasted all this code after the last "}" of the hermetic section and just before the "###THE ASSASSINS###"
To test I started a new game with the mod activated and found Botanic appears. When the button is pressed, can't join it.
----------------------------------------
Part 3 - Editing Society Ranks
Using a datebase program, I created a csv file in the folder: ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\localisation
I named it Botanic.csv
Only in the first column I added the following lines in their own cell:
To explain:
The first line "#CODE;" indicates the game is set up for 4 different languages. The first is English, I am working on the English Version.
For one I played around and put other languages, but it didn't matter and I don't care at this time. Maybe I will edit it later.
For the other lines, "Botanic" starts off the code. This is in relation to the mod.
For this line "Botanic;The Botanical Society;;;;;;;;;;;;;x" the first "Botanic" links the files together. The next section allows you to change the name as it appears at the join society screen. It says The Botanical Society rather than Botanic.
The rest of the lines explain their own ranks. This is for renaming the ranks only. It doesn't do anything else at this time.
----------------------------------------
Part 4 - Enable Rank Powers
Step1. In folder ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\localisation\customizable_localisation I open "00_customizable_localisation_FR.txt"
Within "00_customizable_localisation_FR.txt" added an equal entry whever hermetics was found.
hermmetics was mention twice in one section:
I edited for Botanic (I wish I didn't capitalize the B, but I did and will keep using it).
Step2. In folder ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\localisation\customizable_localisation I open "00_customizable_localisation.txt"
Within "00_customizable_localisation.txt" added an equal entry whever hermetics was found.
----------------
----------------
----------------
----------------
----------------
----------------
The next string delt with the quest to get ingredients. Instead of duplicating, I tried to include an or statement as in the following areas:
----------------
----------------
----------------
----------
----------------
----------------
----------------
That replaced them all and I can see where this could be problematic.
Testing it in game, these enabled powers for the ranks, hermetic powers. I still can't join the society.
I didn't notice before, but it may have already happened, but moving the mouse over the portrait of current members, it now indicates that character is a member of The Botanical Society.
----------------------------------------
Part 5 - Still working on it.
I am so new, I'm not sure the rules on posting pictures, but I hope to add them later. This was a sloppy post as I took a few hours to do the work, learn, and type this up even. I hate that it is so long, but I thought it was better than multiple posting on my own thread. If the length violated the rules I apologize, delete this and I will know better next time. I tried to read the rules and removed most references and citations to other materials. I will be studying the 1500 posts in the quick questions guide in the future.
Part 2 - Creating the Society in Game
Part 3 - Editing Society Ranks
Part 4 - Enable Rank Powers - Portrait Membership
----------------------------------------
Part 1 - Creating the Initial Mod Folder
Reference
Arumba. 2013. Crusader Kings 2 How to make a Mod. I removed links due to forum rules, but he explained it well.
First create a mod folder so you don't break the game.
There will be two CKII folders. One it the C drive where the game is installed. The other in Documents.
Step 1. Go to your documents folder:....Documents\Paradox Interactive\Crusader Kings II\mod
Created a new folder within the mod folder. I named mine Botanic.
Step 2. Next I have to copy some game files into the newly created mod folder, Botanic.
I went to the installed game file folder: C:\Program Files (x86)\Steam\steamapps\common\Crusader Kings II
I copied the following 6 folders:
common
decisions
events
gfx
interface
localisation
And placed this into my newly created folder: ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic
Step 3. In that mod folder:....Documents\Paradox Interactive\Crusader Kings II\mod
Create a new txt file.
In the txt file I placed the following two lines (I recommend all lowercase for the future):
Code:
name = "Botanic"
path = "mod/Botanic"
I then saved the txt file. You might have to go into your control panel to make file extensions visible. To do that go into your control panel>Folder Options>View tab and then uncheck the "Hide extensions for known file types"
Then you can rename the txt file to: Botanic.mod
Now you can open your CKII game. Look at your mod options. "Botanic" should now be a selectable option.
If you see it, then success.
This created a folder with files we can edit so we don't mess up our original game.
----------------------------------------
Part 2 - Creating the Society in Game
Step1. I went into the folder I created: ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\common\societies
In that folder I opened the txt file: 00_societies.txt
There I scrolled through and looked at the file. I could determine the different society groups. I then found the "hermetics" section. I copied this entire section from
Code:
hermetics
Code:
###THE ASSASSINS###
In a text editor, name removed, I pasted the code. I then began to edit.
First at the top I placed
Code:
###BOTANIC ORDER###
I changed "hermetics = {" to "Botanic = {"
I then pasted all this code after the last "}" of the hermetic section and just before the "###THE ASSASSINS###"
To test I started a new game with the mod activated and found Botanic appears. When the button is pressed, can't join it.
----------------------------------------
Part 3 - Editing Society Ranks
Using a datebase program, I created a csv file in the folder: ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\localisation
I named it Botanic.csv
Only in the first column I added the following lines in their own cell:
Code:
#CODE;ENGLISH;FRENCH;GERMAN;;SPANISH;;;;;;;;;x
Botanic;The Botanical Society;;;;;;;;;;;;;x
Botanic_rank_1_female;Gardener;Néophyte;Neophyt;;neófita;;;;;;;;;x
Botanic_rank_2_female;Farmer;Initiée;Novizin;;iniciada;;;;;;;;;x
Botanic_rank_3_female;Botanist;Adepte;Adeptin;;adepta;;;;;;;;;x
Botanic_rank_4_female;Currator;Mage;Magus;;sabia;;;;;;;;;x
Botanic_rank_1_male;Gardener;Gardener;Gartener;;Gardeno;;;;;;;;;x
Botanic_rank_2_male;Farmer;;;;;;;;;x
Botanic_rank_3_male;Botanist;;;;;;;;;x
Botanic_rank_4_male;Currator;;;;;;;;;x
To explain:
The first line "#CODE;" indicates the game is set up for 4 different languages. The first is English, I am working on the English Version.
For one I played around and put other languages, but it didn't matter and I don't care at this time. Maybe I will edit it later.
For the other lines, "Botanic" starts off the code. This is in relation to the mod.
For this line "Botanic;The Botanical Society;;;;;;;;;;;;;x" the first "Botanic" links the files together. The next section allows you to change the name as it appears at the join society screen. It says The Botanical Society rather than Botanic.
The rest of the lines explain their own ranks. This is for renaming the ranks only. It doesn't do anything else at this time.
----------------------------------------
Part 4 - Enable Rank Powers
Step1. In folder ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\localisation\customizable_localisation I open "00_customizable_localisation_FR.txt"
Within "00_customizable_localisation_FR.txt" added an equal entry whever hermetics was found.
hermmetics was mention twice in one section:
Code:
text = {
localisation_key = String_hermetics_DuDelaDes
trigger = { society_member_of = hermetics }
I edited for Botanic (I wish I didn't capitalize the B, but I did and will keep using it).
Code:
text = {
localisation_key = String_Botanic_DuDelaDes
trigger = { society_member_of = Botanic }
I then added these lines just before the hermetics entry.
Step2. In folder ...Documents\Paradox Interactive\Crusader Kings II\mod\Botanic\localisation\customizable_localisation I open "00_customizable_localisation.txt"
Within "00_customizable_localisation.txt" added an equal entry whever hermetics was found.
Code:
#GetHermeticsRank
#GetBotanicRank
----------------
Code:
text = {
localisation_key = hermetics
trigger = { society_member_of = hermetics }
}
text = {
localisation_key = Botanic
trigger = { society_member_of = Botanic }
}
----------------
Code:
text = {
localisation_key = hermeticsCap
trigger = { society_member_of = hermetics }
}
text = {
localisation_key = BotanicCap
trigger = { society_member_of = Botanic }
}
----------------
Code:
defined_text = {
name = GetFromThisHermeticsRank
text = {
trigger = {
is_liege_of = FROM
FROM = { has_minor_title = title_hermetics_apprentice }
}
localisation_key = String_GetMasterMistress
}
text = {
trigger = {
NAND = {
is_liege_of = FROM
FROM = { has_minor_title = title_hermetics_apprentice }
}
}
localisation_key = String_GetSocietyRank
}
}
Code:
defined_text = {
name = GetFromThisBotanicRank
text = {
trigger = {
is_liege_of = FROM
FROM = { has_minor_title = title_Botanic_apprentice }
}
localisation_key = String_GetMasterMistress
}
text = {
trigger = {
NAND = {
is_liege_of = FROM
FROM = { has_minor_title = title_Botanic_apprentice }
}
}
localisation_key = String_GetSocietyRank
}
}
----------------
Code:
defined_text = {
name = GetHermeticsDestinedRole
text = {
trigger = {
has_character_flag = destined_steward
}
localisation_key = String_steward
}
text = {
trigger = {
has_character_flag = destined_fighter
}
localisation_key = String_figther
}
text = {
trigger = {
has_character_flag = destined_diplomat
}
localisation_key = String_diplomat
}
text = {
trigger = {
has_character_flag = destined_schemer
}
localisation_key = String_schemer
}
text = {
trigger = {
has_character_flag = destined_scholar
}
localisation_key = String_scholar
}
}
Code:
defined_text = {
name = GetHermeticsDestinedRole
text = {
trigger = {
has_character_flag = destined_steward
}
localisation_key = String_steward
}
text = {
trigger = {
has_character_flag = destined_fighter
}
localisation_key = String_figther
}
text = {
trigger = {
has_character_flag = destined_diplomat
}
localisation_key = String_diplomat
}
text = {
trigger = {
has_character_flag = destined_schemer
}
localisation_key = String_schemer
}
text = {
trigger = {
has_character_flag = destined_scholar
}
localisation_key = String_scholar
}
}
----------------
Code:
defined_text = {
name = GetHermeticsDestinedExpertise
text = {
trigger = {
has_character_flag = destined_steward
}
localisation_key = String_administration
}
text = {
trigger = {
has_character_flag = destined_fighter
}
localisation_key = String_battle
}
text = {
trigger = {
has_character_flag = destined_diplomat
}
localisation_key = String_diplomacy
}
text = {
trigger = {
has_character_flag = destined_schemer
}
localisation_key = String_intrigue
}
text = {
trigger = {
has_character_flag = destined_scholar
}
localisation_key = String_scholarship
}
}
Code:
defined_text = {
name = GetBotanicDestinedExpertise
text = {
trigger = {
has_character_flag = destined_steward
}
localisation_key = String_administration
}
text = {
trigger = {
has_character_flag = destined_fighter
}
localisation_key = String_battle
}
text = {
trigger = {
has_character_flag = destined_diplomat
}
localisation_key = String_diplomacy
}
text = {
trigger = {
has_character_flag = destined_schemer
}
localisation_key = String_intrigue
}
text = {
trigger = {
has_character_flag = destined_scholar
}
localisation_key = String_scholarship
}
}
----------------
The next string delt with the quest to get ingredients. Instead of duplicating, I tried to include an or statement as in the following areas:
Code:
text = {
localisation_key = String_might_take_up_too_much_space
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
NOT = { artifact_type = ingredient_metal_exotic6 } #Gold
}
society_member_of = hermetics
has_character_flag = built_laboratory
}
Code:
text = {
localisation_key = String_might_take_up_too_much_space
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
NOT = { artifact_type = ingredient_metal_exotic6 } #Gold
}
society_member_of = hermetics
OR = {society_member_of = Botanic
}
has_character_flag = built_laboratory
}
----------------
Code:
text = {
localisation_key = String_does_not_send_desired_message
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_animal1 #Gallbladder
artifact_type = ingredient_animal2 #Kidney
artifact_type = ingredient_animal6 #Snout
artifact_type = ingredient_animal7 #Heart
artifact_type = ingredient_animal8 #Liver
artifact_type = ingredient_metal_exotic5 #Brimstone
artifact_type = ingredient_herb6 #Wormwood
artifact_type = ingredient_herb3 #Mandrake
}
}
NOT = { society_member_of = hermetics
OR = { society_member_of = hermetics
}
}
}
}
----------------
Code:
NOT = { society_member_of = hermetics }
Code:
NOT = { society_member_of = hermetics
OR = {society_member_of = Botanic
}
}
----------------
Code:
text = {
localisation_key = String_does_not_contribute_to_the_decor
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_herb1 #Hibiscus
artifact_type = ingredient_herb2 #Ginger Root
artifact_type = ingredient_herb3 #Mandrake
artifact_type = ingredient_herb4 #Lemongrass
artifact_type = ingredient_herb6 #Wormwood
artifact_type = ingredient_herb7 #Valerian
artifact_type = ingredient_herb8 #Violet
artifact_type = ingredient_herb9 #Yarrow
artifact_type = ingredient_animal1 #Gallbladder
artifact_type = ingredient_animal2 #Kidney
artifact_type = ingredient_animal6 #Snout
artifact_type = ingredient_animal7 #Heart
artifact_type = ingredient_animal8 #Liver
artifact_type = ingredient_metal_exotic5 #Brimstone
artifact_type = ingredient_herb6 #Wormwood
artifact_type = ingredient_herb3 #Mandrake
artifact_type = ingredient_metal_exotic7 #Copper
artifact_type = ingredient_metal_exotic8 #Iron
artifact_type = ingredient_metal_exotic9 #Tin
}
}
NOT = { society_member_of = hermetics }
}
}
Code:
text = {
localisation_key = String_does_not_contribute_to_the_decor
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_herb1 #Hibiscus
artifact_type = ingredient_herb2 #Ginger Root
artifact_type = ingredient_herb3 #Mandrake
artifact_type = ingredient_herb4 #Lemongrass
artifact_type = ingredient_herb6 #Wormwood
artifact_type = ingredient_herb7 #Valerian
artifact_type = ingredient_herb8 #Violet
artifact_type = ingredient_herb9 #Yarrow
artifact_type = ingredient_animal1 #Gallbladder
artifact_type = ingredient_animal2 #Kidney
artifact_type = ingredient_animal6 #Snout
artifact_type = ingredient_animal7 #Heart
artifact_type = ingredient_animal8 #Liver
artifact_type = ingredient_metal_exotic5 #Brimstone
artifact_type = ingredient_herb6 #Wormwood
artifact_type = ingredient_herb3 #Mandrake
artifact_type = ingredient_metal_exotic7 #Copper
artifact_type = ingredient_metal_exotic8 #Iron
artifact_type = ingredient_metal_exotic9 #Tin
}
}
NOT = { society_member_of = hermetics
OR {society_member_of = Botanic
}
}
}
}
----------
Code:
text = {
localisation_key = String_do_not_contribute_to_the_decor
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_herb5 #Nettles PLURAL
artifact_type = ingredient_animal3 #Eyeballs PLURAL
artifact_type = ingredient_animal4 #Cloven Hooves PLURAL
artifact_type = ingredient_animal5 #Antlers PLURAL
artifact_type = ingredient_animal9 #Intestines PLURAL
}
}
NOT = { society_member_of = hermetics
}
}
}
Code:
text = {
localisation_key = String_do_not_contribute_to_the_decor
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_herb5 #Nettles PLURAL
artifact_type = ingredient_animal3 #Eyeballs PLURAL
artifact_type = ingredient_animal4 #Cloven Hooves PLURAL
artifact_type = ingredient_animal5 #Antlers PLURAL
artifact_type = ingredient_animal9 #Intestines PLURAL
}
}
NOT = { society_member_of = hermetics
OR = {society_member_of = Botanic
}
}
}
}
----------------
Code:
AND = {
society_member_of = hermetics
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_metal_exotic3 #Aqua Regia
artifact_type = ingredient_metal_exotic4 #Aqua Fortis
}
}
Code:
AND = {
society_member_of = hermetics
OR = {society_member_of = Botanic
}
any_artifact = {
has_artifact_flag = selected_ingredient_1
OR = {
artifact_type = ingredient_metal_exotic3 #Aqua Regia
artifact_type = ingredient_metal_exotic4 #Aqua Fortis
}
}
----------------
Code:
text = {
localisation_key = String_might_possess_hidden_uses
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
}
society_member_of = hermetics
}
text = {
localisation_key = String_might_possess_hidden_uses
trigger = {
any_artifact = {
has_artifact_flag = selected_ingredient_1
}
society_member_of = hermetics
OR = {society_member_of = Botanic
}
}
----------------
That replaced them all and I can see where this could be problematic.
Testing it in game, these enabled powers for the ranks, hermetic powers. I still can't join the society.
I didn't notice before, but it may have already happened, but moving the mouse over the portrait of current members, it now indicates that character is a member of The Botanical Society.
----------------------------------------
Part 5 - Still working on it.
I am so new, I'm not sure the rules on posting pictures, but I hope to add them later. This was a sloppy post as I took a few hours to do the work, learn, and type this up even. I hate that it is so long, but I thought it was better than multiple posting on my own thread. If the length violated the rules I apologize, delete this and I will know better next time. I tried to read the rules and removed most references and citations to other materials. I will be studying the 1500 posts in the quick questions guide in the future.
Please post any thoughts or questions. I can already see I am not that active. Thank you for your time and efforts, and have a nice day and Happy Fourth of July!
Last edited: