Compare commits

..

17 Commits

Author SHA1 Message Date
a76a483136 fix non dict for higher classes 2022-05-16 23:02:32 +02:00
0edee4970b add own mini ffxivapi wrapper 2022-05-16 18:44:21 +02:00
d0e84fe326 add ffxiv classes wrapper 2022-05-16 18:38:54 +02:00
48656fccd9 add json / yml files to gitignore 2022-05-16 17:57:26 +02:00
ebbda251d9 add conf files to gitignore 2022-05-16 17:49:04 +02:00
431aa9cb51 add gitignore 2022-05-16 17:48:21 +02:00
OverClockedE
92a4ba3a74 „macros/bluemage/en_set_crosshotbar.md“ ändern 2021-01-11 22:56:28 +01:00
3fcd7a151a fix grammatik & rechtschreibung 2021-01-11 22:53:09 +01:00
OverClockedE
5bae275380 „macros/bluemage/en_set_crosshotbar.md“ ändern 2021-01-10 18:05:59 +01:00
OverClockedE
8e62dc7e3d „macros/bluemage/en_set_crosshotbar.md“ ändern
translation
2021-01-10 18:03:35 +01:00
OverClockedE
4f9b84a304 „macros/bluemage/en_set_crosshotbar.md“ ändern 2021-01-09 23:28:42 +01:00
f74f239527 add english version (google translator) 2021-01-09 21:43:27 +01:00
f103cc738a corrected spelling 2021-01-09 00:25:47 +01:00
9925364723 corrected spelling 2021-01-08 22:42:29 +01:00
f5b3ce4b6c add hotbar version 2021-01-08 00:10:54 +01:00
f4c0a87a62 remove old versions 2021-01-08 00:10:07 +01:00
729e7abb11 add hotbar version 2021-01-08 00:09:15 +01:00
15 changed files with 1001 additions and 143 deletions

7
.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
__pycache__/
*.db
*.log
*.swp
*.conf
*.json
*.yml

View File

@@ -1,28 +1,28 @@
# Wechsel der Blaumagier Einstellungen
# Wechsel der Blaumagier Rolle
## Beschreibung
Mit diesen Makros kann man einfach zwischen seinen häufigsten Blaumagier Skillsets wechseln.
Nicht nur die Skills werden (de)aktiviert auch werden diese auf den (Kreiz)-Leisten abgelegt.
Mit diesen Makros kann man einfach zwischen seinen häufigsten Blaumagier Rollensets wechseln.
Die Skills werden (de)aktiviert und automatisch nach Rolle auf den Kreuz-Kommandomenü (Controller) abgelegt.
Ich schreibe Makros immer weitest gehendst auf Englisch, die Klassen (und auch Skills etc.) Namen müssen aber immer in der jeweiligen Sprache sein in denen das Spiel gespielt wird.
Ich schreibe Makros immer generell auf Englisch, die Klassen (und auch Skills etc.) Namen müssen aber immer in der jeweiligen Sprache sein in denen das Spiel gespielt wird.
## Der Trick
Die Skills zu (de)aktivieren ist dabei nicht die Schwierigkeit.
Die Problematik sind die Skillleisten die man immer wieder umlegen muss.
Und hier ist der Trick für das Makro, man muss sich Klassen nehmen welche nicht (mehr) gespielt werden.
Die Ursprungsklassen welche mittels Jobkristall zu anderen Klassen bzw. Jobs werden.
Die Grundklasse bnehält weiterhin ihre Skillsets, da man diese aber nicht mehr Spielt kann man die für andere Zwercke missbrauchen.
Wir legen auf unterschiedlichen Klassen die Bluemage Skillsets ab und laden bzw. speichern diese dort immer.
Die Problematik sind die Skills die man immer wieder umlegen muss.
Und hier ist der Trick für das Makro, man muss sich Grundklassen nehmen, welche nicht (mehr) gespielt werden. (Siehe unten)
Hierfür nehmen wir jeweils eine Grundklasse welche mittels Jobkristall zu einem Job geworden ist.
Die Grundklasse behält weiterhin ihre eignen Kreuz-Kommandomenüs, da man diese aber nicht mehr Spielt kann man die für andere Zwercke missbrauchen.
Wir legen auf unterschiedlichen Grundklassen die Bluemage Skills auf deren Kreuz-Kommandomenüs ab und laden bzw. speichern diese dort.
## Makros
### Vorbereitungen
Damit die Makros einwandfrei funktionieren müssen folgrende Dinge erledigt sein:
1. Ein Ausrüstungsset für den Blaumagier muss angelegt sein
2. Eine "tote" Klasse muss bestimmt sein (pro Makro)
2. Eine Grundlasse muss bestimmt sein (pro Makro)
3. Ein Skillset sollte im Zauberbuch der Balumagie defniert sein
#### 1. Ausrüstungsset
Ausrüstungssets sollten jedem Bekannt sein der mehr als eine Klasse spielt.
Ausrüstungssets sollten jedem bekannt sein der mehr als eine Klasse spielt.
Um sicher zu gehen das wir aber alle vom gleichen Reden:
![](../../media/character_gearset.png)
@@ -30,10 +30,10 @@ Um sicher zu gehen das wir aber alle vom gleichen Reden:
Hier ist wichtig das wir die Nummer des Ausrüstungssets kennen.
In diesem Fall ist das die 29.
#### 2. "tote" Klasse
Klassen die früher der später tot sind:
#### 2. Grundklasse
Klassen die früher der später nicht mehr gespielt werden sind:
Grundklasse | wird zu Job
Grundklasse | Job
--- | ---
Gladiator | Paladin
Marodeur | Krieger
@@ -45,27 +45,27 @@ Waldläufer | Barde
Thaumaturg | Schwarzmagier
Hermetiker | Beschwörer / Gelehter
Somit stehen 9 mögliche Klassen für diese Makros zur verfügung.
Somit stehen 9 mögliche Grundklassen für diese Makros zur Verfügung.
Die Grundklasse verwenden wir, der Job ist dann uneingeschränkt weiter verwendbar.
#### 3. Skillset
Das Skillset findet man im Zauberbuch der Blaumagie.
Hier kann man Skills zusammenstellen und diese bereits so Spiechen.
Hier kann man Skills zusammenstellen und diese bereits so speichen.
Leider speichert dies nur Skills welche aktiv sind aber das soll uns schon reichen.
![](../../media/bluemage_skillbook.png)
Man kann sich diese Sets auch mittels Rechtskilck (PC) Umbenennen um eine einfacherer Zuordnung zu haben wenn man diese bearbeitet.
Man kann sich diese Skillsets auch mittels Rechtskilck (PS4/5: Viereck, XBox: X) umbenennen um eine einfacherer Zuordnung zu haben wenn man diese bearbeitet.
Meine Persönlichen Empfehlungen lauten dabei:
Meine persönlichen Empfehlungen lauten dabei:
* Solo (für z.B. Blaue Maskerade oder Open World)
* Heal
* Tank
* DD
* Template (Skills die in jedem Set Standard sind)
Und eben diese 4 Makros zum speichern werden hier erstellen.
Weiterführend werden wir noch 4 gegenteilige Makros erstellen, das wir das was wir auf den Blaumagier an Skills belegen auch speichern können ohne auf die jweilige "tote" Klasse wechseln zu müssen.
Und eben diese 4 Makros zum laden werden hier erstellen.
Weiterführend werden wir noch 4 gegenteilige Makros erstellen, das wir auf den Blaumagier die Kreuz-Kommandomenü belegen auch speichern können ohne auf die jeweilige Grundlasse wechseln zu müssen.
### Legende
* Die $EDID entspricht der Nummer des Ausrüstungssets (Nr. 2 im Bild) in dem der Blaumagier gespeichert ist. Dies ist bei allen Makros gleich.
@@ -114,21 +114,18 @@ Weiterführend werden wir noch 4 gegenteilige Makros erstellen, das wir das was
> /crosshotbar copy Blaumagier 4 Hermetiker 4
#### Heal save Makro
> /micon $EQ gearset
> /crosshotbar copy Blaumagier 1 Druide 1
> /crosshotbar copy Blaumagier 2 Druide 2
> /crosshotbar copy Blaumagier 3 Druide 3
> /crosshotbar copy Blaumagier 4 Druide 4
#### Tank save Makro
> /micon $EQ gearset
> /crosshotbar copy Blaumagier 1 Gladiator 1
> /crosshotbar copy Blaumagier 2 Gladiator 2
> /crosshotbar copy Blaumagier 3 Gladiator 3
> /crosshotbar copy Blaumagier 4 Gladiator 4
#### DD save Makro
> /micon $EQ gearset
> /crosshotbar copy Blaumagier 1 Thaumaturg 1
> /crosshotbar copy Blaumagier 2 Thaumaturg 2
> /crosshotbar copy Blaumagier 3 Thaumaturg 3
@@ -142,8 +139,8 @@ Zeile | Funktion
---: | ---
0 (nur Solo) | Mit diesem Befehl setzt Ihr das Icon des Makros auf das des Blaumagiers.
1 | Wechselt auf den Blaumagier
2-4 | Dies ist der Kern des Makros, hier werden die Leisten von der "toten" Klasse zu dem Blaumagier kopiert. Die nummern stehen für die jeweilige Leiste
5 | Und zum abschlus haben wir noch das Aktivieren des Skillsets.
2-4 | Dies ist der Kern des Makros, hier werden die Leisten von der Grundlasse zu dem Blaumagier kopiert. Die nummern stehen für die jeweilige Leiste
5 | Und zum abschlus haben wir noch das aktivieren des Skillsets.
Bei den anderen Makros (Heal, Tank, DD) fand ich es sinnvoller ein entsprechendes Symbol zu nutzen daher Fällt dort Zeile 0 weg.
Hierfür könnt Ihr auf das Icon klicken (6 im Bild) und könnt dann ein Icon aus der Liste auswählen (7 im Bild).
@@ -153,8 +150,8 @@ Hierfür könnt Ihr auf das Icon klicken (6 im Bild) und könnt dann ein Icon au
Zeile | Funktion
---: | ---
1-3 | Kopieren der Leisten vom Blaumagier zur "toten" Klasse
1-3 | Kopieren der Leisten vom Blaumagier zur Grundlasse
Wie schon angekündigt passtiert hier nichts neues.
Es wurden lediglich die Klassen ausgetauscht von welcher Kopiert wird und auf welcher es eingefügt wird.
Es wurden lediglich die Grundklassen ausgetauscht von welcher Kopiert wird und auf welcher es eingefügt wird.
Da wir nur zum Speichern weder ein Skillset noch ein Klassen wechsel brauchen fallen die Zeilen dafür weg.

View File

@@ -0,0 +1,160 @@
# Wechsel der Blaumagier Einstellungen
## Beschreibung
Mit diesen Makros kann man einfach zwischen seinen häufigsten Blaumagier Skillsets wechseln.
Nicht nur die Skills werden (de)aktiviert auch werden diese auf den (Kreuz)-Leisten abgelegt.
Ich schreibe Makros immer weitest gehendst auf Englisch, die Klassen (und auch Skills etc.) Namen müssen aber immer in der jeweiligen Sprache sein in denen das Spiel gespielt wird.
## Der Trick
Die Skills zu (de)aktivieren ist dabei nicht die Schwierigkeit.
Die Problematik sind die Skillleisten die man immer wieder umlegen muss.
Und hier ist der Trick für das Makro, man muss sich Klassen nehmen welche nicht (mehr) gespielt werden.
Die Ursprungsklassen welche mittels Jobkristall zu anderen Klassen bzw. Jobs werden.
Die Grundklasse bnehält weiterhin ihre Skillsets, da man diese aber nicht mehr Spielt kann man die für andere Zwercke missbrauchen.
Wir legen auf unterschiedlichen Klassen die Bluemage Skillsets ab und laden bzw. speichern diese dort immer.
## Makros
### Vorbereitungen
Damit die Makros einwandfrei funktionieren müssen folgrende Dinge erledigt sein:
1. Ein Ausrüstungsset für den Blaumagier muss angelegt sein
2. Eine "tote" Klasse muss bestimmt sein (pro Makro)
3. Ein Skillset sollte im Zauberbuch der Balumagie defniert sein
#### 1. Ausrüstungsset
Ausrüstungssets sollten jedem Bekannt sein der mehr als eine Klasse spielt.
Um sicher zu gehen das wir aber alle vom gleichen Reden:
![](../../media/character_gearset.png)
Hier ist wichtig das wir die Nummer des Ausrüstungssets kennen.
In diesem Fall ist das die 29.
#### 2. "tote" Klasse
Klassen die früher der später tot sind:
Grundklasse | wird zu Job
--- | ---
Gladiator | Paladin
Marodeur | Krieger
Druide | Weißmagier
Fauskämpfer | Mönch
Pikenier | Dragoon
Schurke | Ninja
Waldläufer | Barde
Thaumaturg | Schwarzmagier
Hermetiker | Beschwörer / Gelehter
Somit stehen 9 mögliche Klassen für diese Makros zur verfügung.
Die Grundklasse verwenden wir, der Job ist dann uneingeschränkt weiter verwendbar.
#### 3. Skillset
Das Skillset findet man im Zauberbuch der Blaumagie.
Hier kann man Skills zusammenstellen und diese bereits so Spiechen.
Leider speichert dies nur Skills welche aktiv sind aber das soll uns schon reichen.
![](../../media/bluemage_skillbook.png)
Man kann sich diese Sets auch mittels Rechtskilck (PC) Umbenennen um eine einfacherer Zuordnung zu haben wenn man diese bearbeitet.
Meine persönlichen Empfehlungen lauten dabei:
* Solo (für z.B. Blaue Maskerade oder Open World)
* Heal
* Tank
* DD
* Template (Skills die in jedem Set Standard sind)
Und eben diese 4 Makros zum speichern werden hier erstellen.
Weiterführend werden wir noch 4 gegenteilige Makros erstellen, das wir das was wir auf den Blaumagier an Skills belegen auch speichern können ohne auf die jweilige "tote" Klasse wechseln zu müssen.
### Legende
* Die $EDID entspricht der Nummer des Ausrüstungssets (Nr. 2 im Bild) in dem der Blaumagier gespeichert ist. Dies ist bei allen Makros gleich.
* Die $BOOKID entspricht der Nummer des gespeicherten Skillsets (Nr. 3 im Bild) im Zauberbuch der Blaumagie
### Sets laden
#### Solo load Makro
> /micon $EQID gearset
> /gs change $EQID
> /hotsbar copy Hermetiker 1 Blaumagier 1
> /hotbar copy Hermetiker 2 Blaumagier 2
> /hotbar copy Hermetiker 3 Blaumagier 3
> /hotbar copy Hermetiker 4 Blaumagier 4
> /blaum preset $BOOKID
#### Heal load Makro
> /gs change $EQID
> /otsbar copy Druide 1 Blaumagier 1
> /hotbar copy Druide 2 Blaumagier 2
> /hotbar copy Druide 3 Blaumagier 3
> /hotbar copy Druide 4 Blaumagier 4
> /blaum preset $BOOKID
#### Tank load Makro
> /gs change $EQID
> /hotsbar copy Gladiator 1 Blaumagier 1
> /hotbar copy Gladiator 2 Blaumagier 2
> /hotbar copy Gladiator 3 Blaumagier 3
> /hotbar copy Gladiator4 Blaumagier 4
> /blaum preset $BOOKID
#### DD load Makro
> /gs change $EQID
> /hotsbar copy Thaumaturg 1 Blaumagier 1
> /hotbar copy Thaumaturg 2 Blaumagier 2
> /hotbar copy Thaumaturg 3 Blaumagier 3
> /hotbar copy Thaumaturg 4 Blaumagier 4
> /blaum preset $BOOKID
### Sets speichern
#### Solo save Makro
> /micon $EQ gearset
> /hotbar copy Blaumagier 1 Hermetiker 1
> /hotbar copy Blaumagier 2 Hermetiker 2
> /hotbar copy Blaumagier 3 Hermetiker 3
> /hotbar copy Blaumagier 4 Hermetiker 4
#### Heal save Makro
> /micon $EQ gearset
> /hotbar copy Blaumagier 1 Druide 1
> /hotbar copy Blaumagier 2 Druide 2
> /hotbar copy Blaumagier 3 Druide 3
> /hotbar copy Blaumagier 4 Druide 4
#### Tank save Makro
> /micon $EQ gearset
> /hotbar copy Blaumagier 1 Gladiator 1
> /hotbar copy Blaumagier 2 Gladiator 2
> /hotbar copy Blaumagier 3 Gladiator 3
> /hotbar copy Blaumagier 4 Gladiator 4
#### DD save Makro
> /micon $EQ gearset
> /hotbar copy Blaumagier 1 Thaumaturg 1
> /hotbar copy Blaumagier 2 Thaumaturg 2
> /hotbar copy Blaumagier 3 Thaumaturg 3
> /hotbar copy Blaumagier 4 Thaumaturg 4
### Erläuterung
#### Load Makros
![](../../media/macro_heal_bluemage_load.png)
Zeile | Funktion
---: | ---
0 (nur Solo) | Mit diesem Befehl setzt Ihr das Icon des Makros auf das des Blaumagiers.
1 | Wechselt auf den Blaumagier
2-4 | Dies ist der Kern des Makros, hier werden die Leisten von der "toten" Klasse zu dem Blaumagier kopiert. Die nummern stehen für die jeweilige Leiste
5 | Und zum abschlus haben wir noch das Aktivieren des Skillsets.
Bei den anderen Makros (Heal, Tank, DD) fand ich es sinnvoller ein entsprechendes Symbol zu nutzen daher Fällt dort Zeile 0 weg.
Hierfür könnt Ihr auf das Icon klicken (6 im Bild) und könnt dann ein Icon aus der Liste auswählen (7 im Bild).
#### Save Makros
![](../../media/macro_heal_bluemage_save.png)
Zeile | Funktion
---: | ---
1-3 | Kopieren der Leisten vom Blaumagier zur "toten" Klasse
Wie schon angekündigt passtiert hier nichts neues.
Es wurden lediglich die Klassen ausgetauscht von welcher Kopiert wird und auf welcher es eingefügt wird.
Da wir nur zum Speichern weder ein Skillset noch ein Klassen wechsel brauchen fallen die Zeilen dafür weg.

View File

@@ -0,0 +1,163 @@
# Change of blue mage role
## Description
With these macros you can easily switch between your most common blue mage skillsets.
The skills are (de)activated and automatically placed on the (cross)hotbars according to the role.
The actual macro works in every language, but the class names (and also skill name etc.) must always be in the language in which the game is played. Screenshots are in german, but you'll get the idea.
## The trick
The time consuming part is not to (de-)activate the skills, but to populate the skill bar over and over again.
This is what the macro is trying to solve. But you have to sacrifice baseclasses (sub lvl. 30) you don't want to play (anymore). (See below)
Only the base classes (before you equip your job crystall) are affected.
When you switch your job with the job crystal, the base class keeps its existing hotbar. But since your job evolved you probably won't play them anymore.
When you switch a job, the hotbars 1-3 are switching to you saved layout in default settings. Luckly these are addressable from a macro.
## Macros
### Preparations
For the macros to work properly, the following things must be done:
1. An equipmentset for the Bluemage must be set
2. A baseclass must be determined to be overwritten (per macro)
3. A skillset should be defined in the magic book of balumagie
#### 1. Equipmentset
Equipmentsets should be known to anyone who plays more than one class.
To make sure that we are all talking about the same thing:
![](../../media/character_gearset.png)
###### Pic 1
It is important that we know the number of the equipment set.
In this case it is 29.
#### 2. Basic class
Classes that are dead sooner or later:
Baseclass | Job
--- | ---
Gladiator | Paladin
Marauder | Warrior
Conjurer | White mage
Pugilist | Monk
Lancer | Dragoon
Rouge | Ninja
Archer | Bard
Thaumaturge | Black mage
Arcanist | Summoner / Scholar
Thus 9 possible classes are available for these macros.
Since we only use the baseclasses, the job skill bar won't be affected and can contunue to be used.
#### 3. Skillset
The skill set can be found in the magic book of blue magic.
Here you can put together skills and save them already.
Unfortunately, this only saves skills which are active, but that should be enough for us.
![](../../media/bluemage_skillbook.png)
###### Pic 2
You can also rename these sets by right-clicking (PC) in order to better identify them if you want to make a change.
* Solo (e.g. for Blue Masquerade or Open World)
* Heal
* Tank
* DD
* Template (skills that are standard in every set)
<span style="color:red">
And these 4 macros to load will be created here.
We will continue to create 4 opposing macros, so that we can save the skills that we have on the blue mage without having to switch to the respective basic class.
</span>
### Legend
* The $EDID corresponds to the number of the equipmentset (No. 2 in the picture) in which the blue mage is stored. This is the same for all macros.
* The $BOOKID corresponds to the number of the saved skill set (No. 3 in the picture) in the magic book of blue magic
### Load sets
#### Solo load macro
> /micon $EQID gearset
> /gs change $EQID
> /croshotsbar copy Arcanist 1 "blue mage" 1
> /crosshotbar copy Arcanist 2 "blue mage" 2
> /crosshotbar copy Arcanist 3 "blue mage" 3
> /crosshotbar copy Arcanist 4 "blue mage" 4
> /blaum preset $BOOKID
#### Heal load macro
> /gs change $EQID
> /croshotsbar copy Conjurer 1 "blue mage" 1
> /crosshotbar copy Conjurer 2 "blue mage" 2
> /crosshotbar copy Conjurer 3 "blue mage" 3
> /crosshotbar copy Conjurer 4 "blue mage" 4
> /blaum preset $BOOKID
#### Tank load macro
> /gs change $EQID
> /croshotsbar copy Gladiator 1 "blue mage" 1
> /crosshotbar copy Gladiator 2 "blue mage" 2
> /crosshotbar copy Gladiator 3 "blue mage" 3
> /crosshotbar copy Gladiator 4 "blue mage" 4
> /blaum preset $BOOKID
#### DD load macro
> /gs change $EQID
> /croshotsbar copy Thaumaturge 1 "blue mage" 1
> /crosshotbar copy Thaumaturge 2 "blue mage" 2
> /crosshotbar copy Thaumaturge 3 "blue mage" 3
> /crosshotbar copy Thaumaturge 4 "blue mage" 4
> /blaum preset $BOOKID
### Save sets
#### Solo save macro
> /micon $EQ gearset
> /crosshotbar copy "blue mage" 1 Arcanist 1
> /crosshotbar copy "blue mage" 2 Arcanist 2
> /crosshotbar copy "blue mage" 3 Arcanist 3
> /crosshotbar copy "blue mage" 4 Arcanist 4
#### Heal save macro
> /micon $EQ gearset
> /crosshotbar copy "blue mage" 1 Conjurer 1
> /crosshotbar copy "blue mage" 2 Conjurer 2
> /crosshotbar copy "blue mage" 3 Conjurer 3
> /crosshotbar copy "blue mage" 4 Conjurer 4
#### Tank save macro
> /micon $EQ gearset
> /crosshotbar copy "blue mage" 1 Gladiator 1
> /crosshotbar copy "blue mage" 2 Gladiator 2
> /crosshotbar copy "blue mage" 3 Gladiator 3
> /crosshotbar copy "blue mage" 4 Gladiator 4
#### DD save macro
> /micon $EQ gearset
> /crosshotbar copy "blue mage" 1 Thaumaturge 1
> /crosshotbar copy "blue mage" 2 Thaumaturge 2
> /crosshotbar copy "blue mage" 3 Thaumaturge 3
> /crosshotbar copy "blue mage" 4 Thaumaturge 4
### Explanation
#### Load macros
![](../../media/macro_heal_bluemage_load.png)
###### Pic 3
To explain the macros line by line:
Row | Function
---: | ---
0 (only Solo) | With this command you set the icon of the macro to that of the blue mage
1 | Switch to the blue mage
2-4 | This is the core of the macro, here the bars are copied from the basic class to the blue mage. The numbers stand for the respective bar
5 | And finally we have to activate the skillset.
With the other macros (Heal, Tank, DD) I found it more sensible to use a corresponding symbol, so line 0 is omitted there.
For this you can click on the icon (see pic 3, point 6) and then select an icon from the list (pic 3, point 7).
#### Save macros
![](../../media/macro_heal_bluemage_save.png)
###### Pic 4
Row | Function
---: | ---
1-3 | copy the current active bluemage hotbars to the baseclass
As already announced, nothing new is invented here.
Since we do not need a skill set or a class change just for saving, the lines are omitted.

View File

@@ -0,0 +1,160 @@
# Change of blue mage role
## Description
With these macros you can easily switch between your most common blue mage skillsets.
The skills are (de)activated and automatically placed on the (cross)hotbars according to the role.
The actual macro works in every language, but the class (and also skills etc.) names must always be in the language in which the game is played.
## The trick
To (de)activate the skills is not the difficulty.
The problem is the skill bars that you have to turn over and over again.
And here is the trick for the macro, you have to take classes that are not (anymore) played. (See below)
The basic classes which become other classes or jobs using the job crystal.
The basic class still keeps their skill sets, but since you no longer play them you can abuse them for other dwarfs.
We store the blue mage skillsets in different classes and always load or save them there.
## Macros
### Preparations
The macros to work properly, the following things must be done:
1. An equipmentset for the blue mage must be o
2. A basic class must be determined (per macro)
3. A skill set should be defined in the magic book of balumagie
#### 1. Equipmentset
Equipmentsets should be known to anyone who plays more than one class.
To make sure that we are all talking about the same thing:
![](../../media/character_gearset.png)
It is important that we know the number of the equipment set.
In this case it is 29.
#### 2. Basic class
Classes that are dead earlier or later:
Grundklasse | Job
--- | ---
Gladiator | Paladin
Marauder | Warrior
Conjurer | White mage
Pugilist | Monk
Lancer | Dragoon
Rouge | Ninja
Archer | Bard
Thaumaturge | Black mage
Arcanist | Summoner / Scholar
Thus 9 possible classes are available for these macros.
We use the basic class, the job can then continue to be used without restriction.
#### 3. Skillset
The skill set can be found in the magic book of blue magic.
Here you can put together skills and save them already.
Unfortunately, this only saves skills which are active, but that should be enough for us.
![](../../media/bluemage_skillbook.png)
You can also rename these sets by right-clicking (PC) in order to have an easier assignment when you edit them.
Solo (e.g. for Blue Masquerade or Open World)
* Heal
* Tank
* DD
* Template (skills that are standard in every set)
And these 4 macros to load will be created here.
We will continue to create 4 opposing macros, so that we can save the skills that we have on the blue mage without having to switch to the respective basic class.
### Legende
* The $EDID corresponds to the number of the equipmentset (No. 2 in the picture) in which the blue mage is stored. This is the same for all macros.
* The $BOOKID corresponds to the number of the saved skill set (No. 3 in the picture) in the magic book of blue magic
### Load sets
#### Solo load macro
> /micon $EQID gearset
> /gs change $EQID
> /croshotsbar copy Arcanist 1 "blue mage" 1
> /hotbar copy Arcanist 2 "blue mage" 2
> /hotbar copy Arcanist 3 "blue mage" 3
> /hotbar copy Arcanist 4 "blue mage" 4
> /blaum preset $BOOKID
#### Heal load macro
> /gs change $EQID
> /croshotsbar copy Conjurer 1 "blue mage" 1
> /hotbar copy Conjurer 2 "blue mage" 2
> /hotbar copy Conjurer 3 "blue mage" 3
> /hotbar copy Conjurer 4 "blue mage" 4
> /blaum preset $BOOKID
#### Tank load macro
> /gs change $EQID
> /croshotsbar copy Gladiator 1 "blue mage" 1
> /hotbar copy Gladiator 2 "blue mage" 2
> /hotbar copy Gladiator 3 "blue mage" 3
> /hotbar copy Gladiator 4 "blue mage" 4
> /blaum preset $BOOKID
#### DD load macro
> /gs change $EQID
> /croshotsbar copy Thaumaturge 1 "blue mage" 1
> /hotbar copy Thaumaturge 2 "blue mage" 2
> /hotbar copy Thaumaturge 3 "blue mage" 3
> /hotbar copy Thaumaturge 4 "blue mage" 4
> /blaum preset $BOOKID
### Save sets
#### Solo save macro
> /micon $EQ gearset
> /hotbar copy "blue mage" 1 Arcanist 1
> /hotbar copy "blue mage" 2 Arcanist 2
> /hotbar copy "blue mage" 3 Arcanist 3
> /hotbar copy "blue mage" 4 Arcanist 4
#### Heal save macro
> /micon $EQ gearset
> /hotbar copy "blue mage" 1 Conjurer 1
> /hotbar copy "blue mage" 2 Conjurer 2
> /hotbar copy "blue mage" 3 Conjurer 3
> /hotbar copy "blue mage" 4 Conjurer 4
#### Tank save macro
> /micon $EQ gearset
> /hotbar copy "blue mage" 1 Gladiator 1
> /hotbar copy "blue mage" 2 Gladiator 2
> /hotbar copy "blue mage" 3 Gladiator 3
> /hotbar copy "blue mage" 4 Gladiator 4
#### DD save macro
> /micon $EQ gearset
> /hotbar copy "blue mage" 1 Thaumaturge 1
> /hotbar copy "blue mage" 2 Thaumaturge 2
> /hotbar copy "blue mage" 3 Thaumaturge 3
> /hotbar copy "blue mage" 4 Thaumaturge 4
### Explanation
#### Load macros
![](../../media/macro_heal_bluemage_load.png)
Row | Function
---: | ---
0 (only Solo) | With this command you set the icon of the macro to that of the blue mage
1 | Switch to the blue mage
2-4 | This is the core of the macro, here the bars are copied from the basic class to the blue mage. The numbers stand for the respective bar
5 | And finally we have to activate the skillset.
With the other macros (Heal, Tank, DD) I found it more sensible to use a corresponding symbol, so line 0 is omitted there.
For this you can click on the icon (6 in the picture) and then select an icon from the list (7 in the picture).
#### Save macros
![](../../media/macro_heal_bluemage_save.png)
Row | Function
---: | ---
1-3 | Copy the ledges from the blue mage to the basic class
As already announced, nothing new fits here.
Only the classes were exchanged from which it is copied and which it is pasted on.
Since we do not need a skill set or a class change just for saving, the lines are omitted.

View File

@@ -1,14 +0,0 @@
# Wechsel zu DD Einstellungen
> /micon $ID gearset
> /gs change $ID
> /wait 1
> /croshotsbar copy $DDCLASS 1 Blaumagier 1
> /crosshotbar copy $DDCLASS 2 Blaumagier 2
> /crosshotbar copy $DDCLASS 3 Blaumagier 3
> /blaum preset $BOOKID
* Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.
* Die $DDCLASS ist die Klasse auf der Ihr die Skill belegung (auf der Leiste) Speichern wollt.
Für die Klasse sollte man eine der Urspungsklassen ohne Ihren Jobkristall nutzen, z.B. Faustkämpfer nicht Mönch.
* Die $BOOKID entspricht der Nummer des gespeicherten Skillsets im Zauberbuch der Blaumagie

View File

@@ -1,15 +0,0 @@
# Wechsel zu Heal Einstellungen
> /micon $ID gearset
> /gs change $ID
> /wait 1
> /croshotsbar copy $HEALCLASS 1 Blaumagier 1
> /crosshotbar copy $HEALCLASS 2 Blaumagier 2
> /crosshotbar copy $HEALCLASS 3 Blaumagier 3
> /crosshotbar copy $HEALCLASS 4 Blaumagier 4
> /blaum preset $BOOKID
* Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.
* Die $HEALCLASS ist die Klasse auf der Ihr die Skill belegung (auf der Leiste) speichern wollt.
Für die Klasse sollte man eine der Urspungsklassen ohne Ihren Jobkristall nutzen, z.B. Druide nicht Weißmagier.
* Die $BOOKID entspricht der Nummer des gespeicherten Skillsets im Zauberbuch der Blaumagie

View File

@@ -1,15 +0,0 @@
# Wechsel zu Solo Einstellungen
> /micon $ID gearset
> /gs change $ID
> /wait 1
> /croshotsbar copy $SOLOCLASS 1 Blaumagier 1
> /crosshotbar copy $SOLOCLASS 2 Blaumagier 2
> /crosshotbar copy $SOLOCLASS 3 Blaumagier 3
> /crosshotbar copy $SOLOCLASS 4 Blaumagier 4
> /blaum preset $BOOKID
* Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.
* Die $DDCLASS ist die Klasse auf der Ihr die Skill belegung (auf der Leiste) Speichern wollt.
Für die Klasse sollte man eine der Urspungsklassen ohne Ihren Jobkristall nutzen, z.B. Hermetiker nicht Beschwörer.
* Die $BOOKID entspricht der Nummer des gespeicherten Skillsets im Zauberbuch der Blaumagie

View File

@@ -1,14 +0,0 @@
# Wechsel zu Tank Einstellungen
> /micon $ID gearset
> /gs change $ID
> /wait 1
> /croshotsbar copy $TANKCLASS 1 Blaumagier 1
> /crosshotbar copy $TANKCLASS 2 Blaumagier 2
> /crosshotbar copy $TANKCLASS 3 Blaumagier 3
> /blaum preset $BOOKID
* Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.
* Die $DDCLASS ist die Klasse auf der Ihr die Skill belegung (auf der Leiste) Speichern wollt.
Für die Klasse sollte man eine der Urspungsklassen ohne Ihren Jobkristall nutzen, z.B. Gladiator nicht Paladin.
* Die $BOOKID entspricht der Nummer des gespeicherten Skillsets im Zauberbuch der Blaumagie

View File

@@ -1,10 +0,0 @@
# Wechsel zu DD Einstellungen
> /micon $ID gearset
> /gs change $ID
> /hotbar copy Thaumaturg 1 Blaumagier 1
> /hotbar copy Thaumaturg 2 Blaumagier 2
> /hotbar copy Thaumaturg 3 Blaumagier 3
> /blaum preset 4
Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.

View File

@@ -1,10 +0,0 @@
# Wechsel zu Heal Einstellungen
> /micon $ID gearset
> /gs change $ID
> /hotbar copy Druide 1 Blaumagier 1
> /hotbar copy Druide 2 Blaumagier 2
> /hotbar copy Druide 3 Blaumagier 3
> /blaum preset 2
Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.

View File

@@ -1,10 +0,0 @@
# Wechsel zu DD Einstellungen
> /micon $ID gearset
> /gs change $ID
> /hotbar copy Hermetiker 1 Blaumagier 1
> /hotbar copy Hermetiker 2 Blaumagier 2
> /hotbar copy Hermetiker 3 Blaumagier 3
> /blaum preset 1
Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.

View File

@@ -1,11 +0,0 @@
# Wechsel zu Tank Einstellungen
> /micon $ID gearset
> /gs change $ID
> /wait 1
> /hotbar copy Gladiator 1 Blaumagier 1
> /hotbar copy Gladiator 2 Blaumagier 2
> /hotbar copy Gladiator 3 Blaumagier 3
> /blaum preset 3
Die $ID entspricht der Nummer des Ausrüstungssets in dem der Blaumagier gespeichert ist.

74
scripts/lib/ffxivapi.py Normal file
View File

@@ -0,0 +1,74 @@
from .ffxivclasses import *
import requests as req
import json
class FFXIVAPI:
__author__ = 'Anima'
__version__ = '0.0.1'
def __init__(self) -> None:
self.BASEURL : str = 'https://xivapi.com'
class Character(FFXIVAPI):
__version__ = '0.0.1'
def __init__(self, charid: int = None, charname: tuple = None) -> None:
"""
Final Fantasy XIV Character
Use one of:
- charid (from lodestone)
- charname tuple with (charname, world)
"""
super().__init__()
self.BASEURL : str = self.BASEURL + '/character'
self.CHARID : str = str(charid)
if not charid and isinstance(charname, tuple):
self.search_char(charname)
if self.CHARID:
self.get_char()
self.CLASSES : list = [
DarkKnight(), Gunbreaker(), Paladin(), Warrior(),
Astrologian(), Sage(), Sholar(), WhiteMage(),
Dragoon(), Monk(), Ninja(), Samurai(), Reaper(),
Bard(), Dancer(), Machinist(),
BlackMage(), RedMage(), Summoner(), BlueMage(),
Botanist(), Fisher(), Miner(),
Alchemist(), Armorer(), Blacksmith(), Carpenter(),
Culinarian(), Goldsmith(), Leatherworker(), Weaver()
]
def search_char(self, char) -> None:
query = f'/search?name={char[0].replace(" ", "%20")}&server={char[1]}'
result = req.get(self.BASEURL + query)
apidata = json.loads(result.text)
if len(apidata['Results']) == 1:
self.CHARID = str(apidata['Results'][0]['ID'])
def get_char(self) -> None:
result = req.get(self.BASEURL + '/' + self.CHARID)
self.APIDATA = json.loads(result.text)
self.NAME = self.APIDATA['Character']['Name']
self.WORLD = self.APIDATA['Character']['Server']
self.FC = self.APIDATA['Character']['FreeCompanyName']
self.FCID = self.APIDATA['Character']['FreeCompanyId']
def map_classes(self):
for apicls in self.APIDATA['Character']['ClassJobs']:
for cls in self.CLASSES:
if apicls['JobID'] == cls.FFXIVAPIID:
if apicls['Level'] > 0:
cls.LEVEL = apicls['Level']
break
if __name__ == '__main__':
# anima = Character(29859367)
anima = Character(charname=('Anima Ira', 'Omega'))
anima.map_classes()
sum = 0
for cls in anima.CLASSES:
if isinstance(cls, (Heal, Tank)):
sum += cls.LEVEL
print(cls.ROLE, cls.NAME, cls.LEVEL)
print(sum)

396
scripts/lib/ffxivclasses.py Normal file
View File

@@ -0,0 +1,396 @@
####################################################################################################
# Main Class #
####################################################################################################
class FFXIVCLASS:
__author__ = 'Anima'
__version__ = '0.0.1'
CLASSROLE : str = {'E': 'None', 'D': 'None'}
CLASSNAME : str = {'E': 'None', 'D': 'None'}
def __init__(self, language: str = 'D') -> None:
self.LANG : str = language
self.MAXLVL : int = 90
self.ROLE : dict = self.CLASSROLE[self.LANG]
self.NAME : dict = self.CLASSNAME[self.LANG]
####################################################################################################
# Tanks #
####################################################################################################
class Tank(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Tank', 'D': 'Verteidiger'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class DarkKnight(Tank):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Dark Knight', 'D': 'Dunkelritter'}
CLASSHORT : dict = {'E': 'DRK', 'D': 'DKR'}
FFXIVAPIID : int = 32
def __init__(self,level: int = 30, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Gunbreaker(Tank):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Gunbreaker', 'D': 'Revolverklinge'}
CLASSHORT : dict = {'E': 'GNB', 'D': 'REV'}
FFXIVAPIID : int = 37
def __init__(self,level: int = 60, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Paladin(Tank):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Paladin', 'D': 'Paladin'}
CLASSHORT : dict = {'E': 'PLD', 'D': 'PLD'}
FFXIVAPIID : int = 19
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Warrior(Tank):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Warrior', 'D': 'Krieger'}
CLASSHORT : dict = {'E': 'WAR', 'D': 'KRG'}
FFXIVAPIID : int = 21
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
####################################################################################################
# Healers #
####################################################################################################
class Heal(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Healer', 'D': 'Heiler'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class Astrologian(Heal):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Astrologian', 'D': 'Astrologe'}
CLASSHORT : dict = {'E': 'AST', 'D': 'AST'}
FFXIVAPIID : int = 33
def __init__(self,level: int = 30, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Sage(Heal):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Sage', 'D': 'Weiser'}
CLASSHORT : dict = {'E': 'SGE', 'D': 'WEI'}
FFXIVAPIID : int = 40
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Sholar(Heal):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Sholar', 'D': 'Gelehrte'}
CLASSHORT : dict = {'E': 'SCH', 'D': 'GLT'}
FFXIVAPIID : int = 28
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class WhiteMage(Heal):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'White Mage', 'D': 'Weißmagier'}
CLASSHORT : dict = {'E': 'WHM', 'D': 'WMA'}
FFXIVAPIID : int = 24
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
####################################################################################################
# Damage Dealer #
####################################################################################################
#--------------------------------------------> Meeles <--------------------------------------------#
class Melee(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Melee', 'D': 'Nahkämpfer'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class Dragoon(Melee):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Dragoon', 'D': 'Dragoon'}
CLASSHORT : dict = {'E': 'DRG', 'D': 'DRG'}
FFXIVAPIID : int = 22
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Monk(Melee):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Monk', 'D': 'Mönch'}
CLASSHORT : dict = {'E': 'MNK', 'D': 'MÖN'}
FFXIVAPIID : int = 20
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Ninja(Melee):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Ninja', 'D': 'Ninja'}
CLASSHORT : dict = {'E': 'NIN', 'D': 'NIN'}
FFXIVAPIID : int = 30
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Samurai(Melee):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Samurai', 'D': 'Samurai'}
CLASSHORT : dict = {'E': 'SAM', 'D': 'SAM'}
FFXIVAPIID : int = 34
def __init__(self,level: int = 50, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Reaper(Melee):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Reaper', 'D': 'Schnitter'}
CLASSHORT : dict = {'E': 'RPR', 'D': 'SNT'}
FFXIVAPIID : int = 39
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
#--------------------------------------------> Ranges <--------------------------------------------#
class Range(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Range', 'D': 'Fernkämpfer'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class Bard(Range):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Bard', 'D': 'Barde'}
CLASSHORT : dict = {'E': 'BRD', 'D': 'BRD'}
FFXIVAPIID : int = 23
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Dancer(Range):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Dancer', 'D': 'Tänzer'}
CLASSHORT : dict = {'E': 'DCR', 'D': 'TÄN'}
FFXIVAPIID : int = 38
def __init__(self,level: int = 60, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Machinist(Range):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Machinist', 'D': 'Maschinist'}
CLASSHORT : dict = {'E': 'MCH', 'D': 'MCH'}
FFXIVAPIID : int = 31
def __init__(self,level: int = 30, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
#---------------------------------------------> Mage <---------------------------------------------#
class Mage(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Mage', 'D': 'Magier'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class BlackMage(Mage):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Black Mage', 'D': 'Schwarzmagier'}
CLASSHORT : dict = {'E': 'BMA', 'D': 'SMA'}
FFXIVAPIID : int = 25
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class RedMage(Mage):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Red Mage', 'D': 'Rotmagier'}
CLASSHORT : dict = {'E': 'RDM', 'D': 'RMA'}
FFXIVAPIID : int = 35
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Summoner(Mage):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Summoner', 'D': 'Beschwörer'}
CLASSHORT : dict = {'E': 'SUM', 'D': 'BSW'}
FFXIVAPIID : int = 27
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class BlueMage(Mage):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Blue Mage', 'D': 'Blaumagier'}
CLASSHORT : dict = {'E': 'BLU', 'D': 'BLA'}
FFXIVAPIID : int = 36
def __init__(self,level: int = 70, language: str = 'D') -> None:
super().__init__(language)
self.MAXLVL : int = 70
self.LEVEL : int = level
####################################################################################################
# Collectors #
####################################################################################################
class Collector(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Collector', 'D': 'Sammler'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class Botanist(Collector):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Botanis', 'D': 'Gärtner'}
CLASSHORT : dict = {'E': 'BTN', 'D': 'G?'}
FFXIVAPIID : int = 17
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Fisher(Collector):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Fisher', 'D': 'Fischer'}
CLASSHORT : dict = {'E': 'FSH', 'D': 'FIS'}
FFXIVAPIID : int = 18
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Miner(Collector):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Miner', 'D': 'Minenarbeiter'}
CLASSHORT : dict = {'E': 'MIN', 'D': 'MIN'}
FFXIVAPIID : int = 16
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
####################################################################################################
# Crafters #
####################################################################################################
class Crafter(FFXIVCLASS):
__version__ = '0.0.1'
CLASSROLE : dict = {'E': 'Carafter', 'D': 'Handwerker'}
def __init__(self, language: str = 'D') -> None:
super().__init__(language)
class Alchemist(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Alchemist', 'D': 'Alchimist'}
CLASSHORT : dict = {'E': 'ALC', 'D': 'ALC'}
FFXIVAPIID : int = 14
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Armorer(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Armorer', 'D': 'Plattner'}
CLASSHORT : dict = {'E': 'ARM', 'D': 'PLT'}
FFXIVAPIID : int = 10
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Blacksmith(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Blacksmith', 'D': 'Grobschmied'}
CLASSHORT : dict = {'E': 'BSM', 'D': 'GRS'}
FFXIVAPIID : int = 9
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Carpenter(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Carpenter', 'D': 'Zimmerer'}
CLASSHORT : dict = {'E': 'CRP', 'D': 'ZIM'}
FFXIVAPIID : int = 8
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Culinarian(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Culinarian', 'D': 'Gourmet'}
CLASSHORT : dict = {'E': 'CUL', 'D': 'GUR'}
FFXIVAPIID : int = 15
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Goldsmith(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Goldsmith', 'D': 'Goldschmied'}
CLASSHORT : dict = {'E': 'GSM', 'D': 'GSM'}
FFXIVAPIID : int = 11
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Leatherworker(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Leatherworker', 'D': 'Gerber'}
CLASSHORT : dict = {'E': 'LTW', 'D': 'GRB'}
FFXIVAPIID : int = 12
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
class Weaver(Crafter):
__version__ = '0.0.1'
CLASSNAME : dict = {'E': 'Weaver', 'D': 'Weber'}
CLASSHORT : dict = {'E': 'WVR', 'D': 'WEB'}
FFXIVAPIID : int = 13
def __init__(self,level: int = 0, language: str = 'D') -> None:
super().__init__(language)
self.LEVEL : int = level
if __name__ == '__main__':
test = Sage(language='E')