[Tool] Troop Tree Generator 10.05.29 (UPDATED 2010/05/29)

Currently Viewing (Users: 0, Guests: 1)

Backe

Sergeant at Arms
Best answers
0
Now supports Warband!

Introduction

Many mod descriptions lack troop trees, since creating them is a boring and tedious process. Boring and tedious processes are great for automatisation, so I wrote a very simple program which creates very simple troop trees out of a "troops.txt" file.
Of course, the result can't be compared to the artistic work of a human being. But it's better than no troop trees at all and very easy to maintain after updating a mod.

Download

Windows (212KB):
http://www.mbrepository.com/modules/PDdownloads/singlefile.php?cid=3&lid=1087

Usage

Just extract the two files from the download and a "troops.txt" in the same directory and run TroopTreeGenerator.exe.

The behaviour of the program is controlled by a config file called "TroopTreeGenerator.txt". You can open and edit it with any text editor.

Every configuration must be declared in the following form:
Code:
config name
{
 ...
}
The parameters "input" and "output" expect a relative or absolute path to the input/output files.

"renderer" determines the type of the file which should be created. Possible values are "html", "text" and "bbc". "bbc" creates bulletin board code, which can be directly used to create a post in this forum.

By changing the options "default_color", "ranged_color", "mounted_color" or "ranged_mounted_color" you can change the font color assigned to the troop types. The well known #RRGGBB format is used.

The next parameters "default_text", "ranged_text", "mounted_text" and "ranged_mounted_text" define the text for the different troop types. The following placeholders are available:
$NAME$
$NAME_PLURAL$
$ID$
$LEVEL$
$STRENGTH$
$AGILITY$
$INTELLIGENCE$
$CHARISMA$
$PROF_1H$
$PROF_2H$
$PROF_POLEARMS$
$PROF_ARCHERY$
$PROF_CROSSBOWS$
$PROF_THROWING$
$PROF_FIREARMS$

Examples

Mounted troops are red, ranged troops green and horse archers blue.

Star Wars Mod:
  • Farmer ( Level 4 - STR: 8 AGI: 8 Firearms: 60 )
    • Hired Guard ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Hired Guardian ( Level 20 - STR: 14 AGI: 14 Firearms: 157 )

  • Townsman ( Level 4 - STR: 8 AGI: 8 Firearms: 63 )
    • Hired Guard ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Hired Guardian ( Level 20 - STR: 14 AGI: 14 Firearms: 157 )

  • Wookiee ( Level 10 - STR: 10 AGI: 10 Firearms: 125 )
    • Wookiee Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Wookiee Marksman ( Level 20 - STR: 14 AGI: 14 Firearms: 143 )
        • Wookiee Sharpshooter ( Level 24 - STR: 16 AGI: 16 Firearms: 164 )
      • Wookiee Berserker ( Level 20 - STR: 14 AGI: 14 Firearms: 157 )
        • Warrior of Bacca ( Level 24 - STR: 16 AGI: 16 Firearms: 166 )

  • Mandalorian ( Level 10 - STR: 10 AGI: 10 Firearms: 125 )
    • Mandalorian Soldier ( Level 16 - STR: 12 AGI: 12 Firearms: 255 )
      • Mandalorian Commando ( Level 20 - STR: 14 AGI: 14 Firearms: 156 )
        • Mandalorian Crusader ( Level 24 - STR: 16 AGI: 16 Firearms: 162 )
      • Mandalorian Sniper ( Level 20 - STR: 14 AGI: 14 Firearms: 141 )
        • Mandalorian Deadeye ( Level 24 - STR: 16 AGI: 16 Firearms: 166 )

  • Gamorrean ( Level 10 - STR: 10 AGI: 10 Firearms: 111 )
    • Gamorrean Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Gamorrean Guard ( Level 20 - STR: 14 AGI: 14 Firearms: 158 )
        • Gamorrean Palace Guard ( Level 24 - STR: 16 AGI: 16 Firearms: 161 )

  • Twi'lek Female ( Level 10 - STR: 10 AGI: 10 Firearms: 125 )
    • Twi'lek Dancer ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Twi'lek Entertainer ( Level 20 - STR: 14 AGI: 14 Firearms: 156 )

  • Twi'lek ( Level 10 - STR: 10 AGI: 10 Firearms: 105 )
    • Twi'lek Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 253 )
      • Twi'lek Soldier ( Level 20 - STR: 14 AGI: 14 Firearms: 141 )
        • Twi'lek Commando ( Level 24 - STR: 16 AGI: 16 Firearms: 185 )

  • Rodian ( Level 10 - STR: 10 AGI: 10 Firearms: 105 )
    • Rodian Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Rodian Hunter ( Level 20 - STR: 14 AGI: 14 Firearms: 156 )
        • Rodian Bounty Hunter ( Level 24 - STR: 16 AGI: 16 Firearms: 186 )

  • Mon Calamarian ( Level 10 - STR: 10 AGI: 10 Firearms: 123 )
    • Mon Calamari Officer ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Mon Calamari Commander ( Level 20 - STR: 14 AGI: 14 Firearms: 159 )
        • Mon Calamari Captain ( Level 24 - STR: 16 AGI: 16 Firearms: 184 )

  • Bothan ( Level 10 - STR: 10 AGI: 10 Firearms: 121 )
    • Bothan Agent ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Bothan Operative ( Level 20 - STR: 14 AGI: 14 Firearms: 159 )
        • Bothan Spy ( Level 24 - STR: 16 AGI: 16 Firearms: 166 )

  • Imperial Recruit ( Level 6 - STR: 10 AGI: 10 Firearms: 71 )
    • Imperial Cadet ( Level 10 - STR: 10 AGI: 10 Firearms: 127 )
      • Imperial Stormtrooper ( Level 15 - STR: 12 AGI: 12 Firearms: 110 )
        • Veteran Imperial Stormtrooper ( Level 21 - STR: 14 AGI: 14 Firearms: 159 )
          • Imperial Dark Trooper ( Level 24 - STR: 16 AGI: 16 Firearms: 174 )
          • Imperial Royal Guard ( Level 24 - STR: 16 AGI: 16 Firearms: 171 )
      • Imperial Scout Trooper ( Level - 15 STR: 12 AGI: 12 Firearms: 127 )
        • Veteran Imperial Scout Trooper ( Level - 21 STR: 14 AGI: 14 Firearms: 140 )
          • Imperial Scout Trooper Captain ( Level - 24 STR: 16 AGI: 16 Firearms: 171 )
    • Sith Hopeful ( Level 10 - STR: 14 AGI: 18 Firearms: 123 )
      • Sith Acolyte ( Level 14 - STR: 18 AGI: 22 Firearms: 135 )
        • Sith Apprentice ( Level 18 - STR: 18 AGI: 22 Firearms: 167 )
          • Sith Knight ( Level 22 - STR: 22 AGI: 26 Firearms: 191 )
            • Sith Marauder ( Level 28 - STR: 22 AGI: 26 Firearms: 223 )
              • Sith Master ( Level 34 - STR: 26 AGI: 30 Firearms: 256 )
                • Sith Lord ( Level 40 - STR: 26 AGI: 30 Firearms: 306 )

  • Rebel Recruit ( Level 6 - STR: 10 AGI: 10 Firearms: 127 )
    • Rebel Cadet ( Level 10 - STR: 10 AGI: 10 Firearms: 90 )
      • Rebel Trooper ( Level 15 - STR: 12 AGI: 12 Firearms: 110 )
        • Veteran Rebel Trooper ( Level 21 - STR: 14 AGI: 14 Firearms: 150 )
          • Rebel Sniper ( Level 24 - STR: 16 AGI: 16 Firearms: 170 )
          • Rebel Commando ( Level 24 - STR: 16 AGI: 16 Firearms: 175 )
      • Rebel Pilot ( Level - 15 STR: 12 AGI: 12 Firearms: 111 )
        • Veteran Rebel Pilot ( Level - 21 STR: 14 AGI: 14 Firearms: 143 )
          • Rebel Pilot Captain ( Level - 24 STR: 16 AGI: 16 Firearms: 167 )
    • Jedi Hopeful ( Level 10 - STR: 14 AGI: 18 Firearms: 124 )
      • Jedi Initiate ( Level 14 - STR: 18 AGI: 22 Firearms: 142 )
        • Jedi Padawan ( Level 18 - STR: 18 AGI: 22 Firearms: 183 )
          • Jedi Guardian ( Level 22 - STR: 22 AGI: 26 Firearms: 218 )
            • Jedi Warrior Master ( Level 28 - STR: 22 AGI: 26 Firearms: 247 )
              • Jedi Councilor ( Level 35 - STR: 26 AGI: 30 Firearms: 281 )
                • Jedi Grand Master ( Level 42 - STR: 26 AGI: 30 Firearms: 315 )
          • Jedi Consular ( Level 22 - STR: 22 AGI: 26 Firearms: 204 )
            • Jedi Sage Master ( Level 28 - STR: 22 AGI: 26 Firearms: 220 )
              • Jedi Councilor ( Level 35 - STR: 26 AGI: 30 Firearms: 281 )
                • Jedi Grand Master ( Level 42 - STR: 26 AGI: 30 Firearms: 315 )

  • Hutt Militia ( Level 6 - STR: 10 AGI: 10 Firearms: 71 )
    • Hutt Mercenary ( Level 10 - STR: 10 AGI: 10 Firearms: 94 )
      • Hutt Marksman ( Level 15 - STR: 12 AGI: 12 Firearms: 126 )
        • Hutt Bounty Hunter ( Level 21 - STR: 14 AGI: 14 Firearms: 159 )
          • Hutt Commando ( Level 24 - STR: 16 AGI: 16 Firearms: 174 )
      • Hutt Guard ( Level 15 - STR: 12 AGI: 12 Firearms: 111 )
        • Hutt Skiff Guard ( Level - 21 STR: 14 AGI: 14 Firearms: 159 )
          • Hutt Skiff Guard Captain ( Level - 24 STR: 16 AGI: 16 Firearms: 190 )
        • Hutt Palace Guard ( Level 21 - STR: 14 AGI: 14 Firearms: 151 )
          • Hutt Palance Guard Captain ( Level 24 - STR: 16 AGI: 16 Firearms: 171 )

  • Jawa ( Level 9 - STR: 8 AGI: 8 Firearms: 80 )
    • Jawa Scavenger ( Level 11 - STR: 8 AGI: 8 Firearms: 117 )
      • Jawa Scout ( Level 13 - STR: 8 AGI: 8 Firearms: 120 )

  • Bandit ( Level 10 - STR: 8 AGI: 8 Firearms: 95 )
    • Brigand ( Level 11 - STR: 8 AGI: 8 Firearms: 103 )

  • Bounty Hunter ( Level 10 - STR: 8 AGI: 8 Firearms: 74 )
    • Slave Driver ( Level 14 - STR: 8 AGI: 8 Firearms: 89 )
      • Slave Hunter ( Level 18 - STR: 8 AGI: 8 Firearms: 96 )
        • Slave Crusher ( Level 22 - STR: 8 AGI: 8 Firearms: 123 )
          • Slaver Chief ( Level 26 - STR: 8 AGI: 8 Firearms: 145 )

  • Refugee ( Level 1 - STR: 8 AGI: 8 Firearms: 58 )
    • Camp Follower ( Level 5 - STR: 8 AGI: 8 Firearms: 80 )
      • Huntress ( Level 10 - STR: 8 AGI: 8 Firearms: 88 )
        • Camp Defender ( Level 16 - STR: 8 AGI: 8 Firearms: 104 )
          • Sword Sister ( Level 22 - STR: 8 AGI: 8 Firearms: 157 )

  • Peasant Woman ( Level 1 - STR: 8 AGI: 8 Firearms: 50 )
    • Camp Follower ( Level 5 - STR: 8 AGI: 8 Firearms: 80 )
      • Huntress ( Level 10 - STR: 8 AGI: 8 Firearms: 88 )
        • Camp Defender ( Level 16 - STR: 8 AGI: 8 Firearms: 104 )
          • Sword Sister ( Level 22 - STR: 8 AGI: 8 Firearms: 157 )

Timeless Kingdoms (1.011):
  • Farmer
    • Watchman
      • Caravan Guard
        • Mercenary Swordsman
          • Hired Blade
          [*]Mercenary Horseman
          • Mercenary Cavalry
        [*]Mercenary Crossbowman
      [*]Maceman
      • Veteran Maceman[*]Hammerman
        • Hammer Sergeant
  • Townsman
    • Watchman
      • Caravan Guard
        • Mercenary Swordsman
          • Hired Blade
          [*]Mercenary Horseman
          • Mercenary Cavalry
        [*]Mercenary Crossbowman
      [*]Maceman
      • Veteran Maceman[*]Hammerman
        • Hammer Sergeant
  • Mercenary Raider
    • Northern Raider[*]Raider Scout
      • Border Raider
  • Shal'tah Tribe Initiate
    • Shal'tah Sword Maiden
      • Shal'tah Spear Maiden
        • Shal'tah Light Cavalier[*]Shal'tah Pike Maiden
        [*]Shal'tah Huntress
        • Shal'tah Predator[*]Shal'tah Matriarch
      [*]Leheos Desert Warrior
      • Leheos Desert Raider
  • Tyrion Levy
    • Tyrion Guard
      • Tyrion Pikeman
        • Tyrion Royal Pikeman
        [*]Tyrion First Guard
        • Tyrion Warlord
      [*]Tyrion Harasser
      • Tyrion Bowman[*]Tyrion Invader
        • Tyrion Sentinel
  • Shahir Peasant
    • Shahir Skirmisher
      • Shahir Royal Skirmisher[*]Shahir Horse Archer
      [*]Shahir Infantry
      • Shahir Lancer[*]Shahir Royal Guard
        • Shahir Sultan's Bodyguard
  • Whitestone Hillman
    • Whitestone Spearman[*]Whitestone Warrior
      • Whitestone Clan Champion
        • Halvare Royal Guard[*]Halvare Knight
        [*]Whitestone Hurler
        • Halvare Crowman
  • Ironide Militiaman
    • Ironide Crossbowman
      • Ironide Heavy Crossbowman
      [*]Ironide Clergyman
      • Ironide Bishop
        • Ironide Battle Cleric
          • Ironide Knights Heretic
          [*]Ironide Inquisitor
          • Ironide Crusader
  • Southern Dynasty Peasant
    • Yue Dao Militiaman
      • Yue Dao Infantry[*]Yue Dao Crossbowman
        • Yue Dao Gunner
      [*]Lao'Jin Swordsman
      • Lao'Jin Pikeman[*]Lao'Jin Archer
        • Lao'Jin Assassin
          • Lao'Jin Blademaster
          [*]Ma-Wu Horse Archer
  • Looter
    • Mountain Bandit[*]Forest Bandit
  • Bandit
    • Brigand
  • Peasant Woman
    • Camp Follower
      • Huntress
        • Camp Defender
          • Sword Sister


Native (1.011):
  • Farmer
    • Watchman
      • Caravan Guard
        • Mercenary Swordsman
          • Hired Blade
          [*]Mercenary Horseman
          • Mercenary Cavalry
        [*]Mercenary Crossbowman
  • Townsman
    • Watchman
      • Caravan Guard
        • Mercenary Swordsman
          • Hired Blade
          [*]Mercenary Horseman
          • Mercenary Cavalry
        [*]Mercenary Crossbowman
  • Swadian Recruit
    • Swadian Militia
      • Swadian Footman
        • Swadian Man at Arms
          • Swadian Knight
          [*]Swadian Infantry
          • Swadian Sergeant
        [*]Swadian Skirmisher
        • Swadian Crossbowman
          • Swadian Sharpshooter
  • Vaegir Recruit
    • Vaegir Footman
      • Vaegir Veteran
        • Vaegir Horseman
          • Vaegir Knight
          [*]Vaegir Infantry
          • Vaegir Guard
        [*]Vaegir Skirmisher
        • Vaegir Archer
          • Vaegir Marksman
  • Khergit Tribesman
    • Khergit Skirmisher
      • Khergit Horseman
        • Khergit Lancer[*]Khergit Horse Archer
          • Khergit Veteran Horse Archer
  • Nord Recruit
    • Nord Footman
      • Nord Trained Footman
        • Nord Warrior
          • Nord Veteran
            • Nord Huscarl
      [*]Nord Huntsman
      • Nord Archer
        • Nord Veteran Archer
  • Rhodok Tribesman
    • Rhodok Spearman
      • Rhodok Trained Spearman
        • Rhodok Veteran Spearman
          • Rhodok Sergeant
      [*]Rhodok Crossbowman
      • Rhodok Trained Crossbowman
        • Rhodok Sharpshooter
  • Looter
    • Mountain Bandit[*]Forest Bandit
  • Bandit
    • Brigand[*]Mercenary Swordsman
      • Hired Blade
  • Manhunter
    • Slave Driver
      • Slave Hunter
        • Slave Crusher
          • Slaver Chief
  • Refugee
    • Camp Follower
      • Huntress
        • Camp Defender
          • Sword Sister
  • Peasant Woman
    • Camp Follower
      • Huntress
        • Camp Defender
          • Sword Sister


Hundred Years War (0.960):
  • Farmer
    • Townsman
      • Lumberman
        • Torturer
          • Executioner
        [*]Watchman
        • Sentry
          • City Guard
          [*]Rider
          • Squire
            • Knight
      [*]Monk
      • Priest
        • Chaplain
          • Bishop
  • Caravan Guard
    • Caravan Master
  • French Paysan
    • French Milicien
      • French Homme d'Armes
        • French Ecuyer
          • French Chevalier
          [*]French Fantassin
          • French Sergent
        [*]French Homme de Traits
        • French Hacquebutier
          • French Arbaletrier
  • English Peasant
    • English Town Militia
      • English Man-at-Arms
        • English Horseman
          • English Knight
          [*]English Infantryman
          • English Sergeant At Arms
        [*]English Levy Spearman
        • English Armored Sergeant[*]English Billman
      [*]English Peasant Archer
      • English Yeomen Archer
        • English Longbowman
        [*]English Peasant Crossbowman
  • Looter
    • Mountain Bandit[*]Forest Bandit
  • Bandit
    • Brigand
  • Manhunter
    • Slave Driver
      • Slave Hunter
        • Slave Crusher
          • Slaver Chief
  • Refugee
    • Camp Follower
      • Huntress
        • Camp Defender
          • Sword Sister
  • Peasant Woman
    • Camp Follower
      • Huntress
        • Camp Defender
          • Sword Sister


Hegemony 268 B.C. (0.960):
  • Leves
    • Rorarii
      • Hastati
        • Eques
          • Roman Cavalry
          [*]Principe
          • Triari
            • Auxilia
            [*]Legionary
            • Praetorian
        [*]Velite
        • Light Auxilia
          • Auxiliary Archer
  • Lugoae Levy
    • Gaelaiche Spearman
      • Botroas Swordsman
        • Curepos Light Cavalry
          • Brihentin Heavy Cavalry
          [*]Solduros Elite Swordsman
          • Gaesatai
        [*]Gaeroas Skirmisher
        • Sotaroas Archer
          • Sotaroas Elite Archer
  • Komatai Skirmisher
    • Getikoi Spearman
      • Drapanai Falxman
        • Rhomphaiaphoros
        [*]Mezenai Light Cavalry
        • Hippotoxotai Horse Archer[*]Phylakes Bodyguard Cavalry
      [*]Sphendonetai Slinger
      • Agrianai Archer
  • Gaizoz Frije Levy
    • Chauci Spearman
      • Dugunthiz Spearman
        • Speutagard[*]Thegnoz Drugule
        [*]Ridanz Light Cavalry
        • Marhathegnoz Heavy Cavalry
      [*]Jugunthiz Skirmisher
      • Skutjanz Archer
  • Poeni Militia
    • Libyan Spearman
      • Libyan Heavy Spearman
        • Iberian Infantry[*]Liby-Phoenician Infantry
          • Sacred Band Infantry[*]Libyan Pikeman
        [*]Poeni Cavalry
        • Liby-Phoenician Cavalry
          • Sacred Band Cavalry
      [*]Balearic Slinger
      • Numidian Skirmisher
  • Hellenic Levy Hoplite
    • Light Hoplite
      • Hoplite
        • Traditional Hoplite
          • Spartan Hoplite
          [*]Iphikratous Hoplite
        [*]Hellenic Hippakontistai Cavalry
        • Hellenic Hippeis Cavalry
      [*]Hellenic Akontistai
      • Hellenic Peltast
        • Hellenic Toxotes
  • Ptolemaic Pantodapoi
    • Ptolemaic Akontistai
      • Ptolemaic Hippakontistai Cavalry[*]Ptolemaic Toxotes
        • Ptolemaic Cretan Toxotes
      [*]Machimoi Phalangite
      • Ptolemaic Thureophoros
        • Galatian Swordsman[*]Machimoi Hippeis Cavalry
          • Ptolemaic Hetairoi Xystophoros
        [*]Ptolemaic Pezhetairoi
        • Klerouchikon Agema Phalangite
  • Seleucid Pantodapoi
    • Seleucid Pantodapoi Phalangite
      • Seleucid Pezhetairoi
        • Seleucid Argyraspide
        [*]Seleucid Thorakites
        • Thorakites Hypaspistes[*]Median Hippeis
          • Seleucid Hellenic Kataphraktos[*]Seleucid Hetairoi Xystophoros
      [*]Seleucid Akontistai
      • Eastern Hippakontistai[*]Persian Toxotes
        • Syrian Toxotes
  • Macedonian Levy Hoplite
    • Macedonian Levy Phalangite
      • Macedonian Thureophoros
        • Macedonian Hypaspistes[*]Macedonian Hippeis Cavalry
          • Thessalian Hippeis[*]Macedonian Hetairoi Xystophoros
        [*]Macedonian Pezhetairoi
        • Macedonian Argyraspides
      [*]Macedonian Akontistai
      • Thracian Peltast
        • Thracian Light Cavalry
        [*]Macedonian Toxotes
  • Light Spearman
    • Sarmatian Rider
      • Roxolani Rider
        • Roxolani Noble Cavalry
        [*]Aorsi Horse Archer
        • Aorsi Noble Cavalry[*]Aorsi Noble Horse Archer
      [*]Scythian Foot Archer
      • Scythian Horse Archer[*]Scythian Axeman
        • Scythian Rider
  • Lovamann Levy Skirmisher
    • Milites Light Spearman
      • Scortamareva Heavy Spearman[*]Caetrati Medium Infantry
        • Scutari Heavy Infantry[*]Curisi Medium Cavalry
          • Lanceari Heavy Cavalry
      [*]Iberi Velite Skirmisher
      • Caetrati Skirmisher Cavalry
        • Cantabrian Skirmisher Cavalry
        [*]Cantabrian Axeman
  • Bandit
    • Brigand[*]Mercenary Samnite Swordsman
  • Forest Bandit
    • Mercenary Samnite Swordsman
  • Manhunter
    • Slave Driver
      • Slave Hunter
        • Slave Crusher
          • Slaver Chief
  • Refugee
    • Camp Follower
      • Camp Huntress
        • Camp Defender
          • Sword Sister
  • Peasant Woman
    • Camp Follower
      • Camp Huntress
        • Camp Defender
          • Sword Sister


Known Problems

Because of a change in the structure of "troops.txt", which is not reflected in a change of the version number of this file, only data from versions >= 0.960 is currently usable.

Credits

Credits go to HokieBT (and therefore indirectly to Jordan) and his Troop Editor, which made reengineering "troops.txt" a matter of minutes.
 

Achilla

Squire
Best answers
0
Just when I was looking for a program like that it popped before my very eyes ... coincidence?

Great job and solid thing nevertheless.
 

HokieBT

Grandmaster Knight
M&BWB
Best answers
0
this sounds great, nice work!  I'm definitely going to try it out for my star wars mod, thanks!

Edit:  you might want to have an admin move this under the unofficial tools forum?

Edit2:  I tried it but it seemed to go into an infinite loop and never created a file?

here's the output
reading troop data ... 621 entries expected
loading data for troop "trp_player" ... completed
loading data for troop "trp_temp_troop" ... completed
loading data for troop "trp_game" ... completed
loading data for troop "trp_unarmed_troop" ... completed
loading data for troop "trp_random_town_sequence" ... completed
loading data for troop "trp_tournament_participants" ... completed
loading data for troop "trp_tutorial_maceman" ... completed
loading data for troop "trp_tutorial_archer" ... completed
loading data for troop "trp_tutorial_swordsman" ... completed
loading data for troop "trp_novice_fighter" ... completed
loading data for troop "trp_regular_fighter" ... completed
loading data for troop "trp_veteran_fighter" ... completed
loading data for troop "trp_champion_fighter" ... completed
loading data for troop "trp_arena_training_fighter_1" ... completed
loading data for troop "trp_arena_training_fighter_2" ... completed
loading data for troop "trp_arena_training_fighter_3" ... completed
loading data for troop "trp_arena_training_fighter_4" ... completed
loading data for troop "trp_arena_training_fighter_5" ... completed
loading data for troop "trp_arena_training_fighter_6" ... completed
loading data for troop "trp_arena_training_fighter_7" ... completed
loading data for troop "trp_arena_training_fighter_8" ... completed
loading data for troop "trp_arena_training_fighter_9" ... completed
loading data for troop "trp_arena_training_fighter_10" ... completed
loading data for troop "trp_cattle" ... completed
loading data for troop "trp_farmer" ... completed
loading data for troop "trp_townsman" ... completed
loading data for troop "trp_wookiee" ... completed
loading data for troop "trp_wookiee_warrior" ... completed
loading data for troop "trp_wookiee_marksman" ... completed
loading data for troop "trp_wookiee_berserker" ... completed
loading data for troop "trp_wookiee_sharpshooter" ... completed
loading data for troop "trp_bacca_warrior" ... completed
loading data for troop "trp_mandalorian_militia" ... completed
loading data for troop "trp_mandalorian_soldier" ... completed
loading data for troop "trp_mandalorian_commando" ... completed
loading data for troop "trp_mandalorian_sniper" ... completed
loading data for troop "trp_mandalorian_crusader" ... completed
loading data for troop "trp_mandalorian_deadeye" ... completed
loading data for troop "trp_gamorrean" ... completed
loading data for troop "trp_gamorrean_warrior" ... completed
loading data for troop "trp_gamorrean_guard" ... completed
loading data for troop "trp_gamorrean_palace_guard" ... completed
loading data for troop "trp_twilek_female1" ... completed
loading data for troop "trp_twilek_female2" ... completed
loading data for troop "trp_twilek_female3" ... completed
loading data for troop "trp_twilek" ... completed
loading data for troop "trp_twilek_warrior" ... completed
loading data for troop "trp_twilek_soldier" ... completed
loading data for troop "trp_twilek_commando" ... completed
loading data for troop "trp_mon_cal" ... completed
loading data for troop "trp_mon_cal_officer" ... completed
loading data for troop "trp_mon_cal_commander" ... completed
loading data for troop "trp_mon_cal_captain" ... completed
loading data for troop "trp_hired_guard" ... completed
loading data for troop "trp_hired_guardian" ... completed
loading data for troop "trp_mercenaries_end" ... completed
loading data for troop "trp_player_inactive" ... completed
loading data for troop "trp_imperial_recruit" ... completed
loading data for troop "trp_sith_acolyte" ... completed
loading data for troop "trp_sith_apprentice" ... completed
loading data for troop "trp_sith_master" ... completed
loading data for troop "trp_sith_lord" ... completed
loading data for troop "trp_imperial_cadet" ... completed
loading data for troop "trp_imperial_stormtrooper" ... completed
loading data for troop "trp_imperial_scout_trooper" ... completed
loading data for troop "trp_imperial_stormtrooper_veteran" ... completed
loading data for troop "trp_imperial_scout_trooper_veteran" ... completed
loading data for troop "trp_imperial_scout_trooper_captain" ... completed
loading data for troop "trp_imperial_darktrooper" ... completed
loading data for troop "trp_imperial_royal_guard" ... completed
loading data for troop "trp_imperial_messenger" ... completed
loading data for troop "trp_imperial_deserter" ... completed
loading data for troop "trp_rebel_recruit" ... completed
loading data for troop "trp_jedi_apprentice" ... completed
loading data for troop "trp_jedi_padawan" ... completed
loading data for troop "trp_jedi_knight" ... completed
loading data for troop "trp_jedi_master" ... completed
loading data for troop "trp_rebel_cadet" ... completed
loading data for troop "trp_rebel_trooper" ... completed
loading data for troop "trp_rebel_pilot" ... completed
loading data for troop "trp_rebel_trooper_veteran" ... completed
loading data for troop "trp_rebel_pilot_veteran" ... completed
loading data for troop "trp_rebel_pilot_captain" ... completed
loading data for troop "trp_rebel_sniper" ... completed
loading data for troop "trp_rebel_commando" ... completed
loading data for troop "trp_rebel_messenger" ... completed
loading data for troop "trp_rebel_deserter" ... completed
loading data for troop "trp_hutt_militia" ... completed
loading data for troop "trp_hutt_mercenary" ... completed
loading data for troop "trp_hutt_guard" ... completed
loading data for troop "trp_hutt_marksman" ... completed
loading data for troop "trp_hutt_bounty_hunter" ... completed
loading data for troop "trp_hutt_skiff_guard" ... completed
loading data for troop "trp_hutt_palace_guard" ... completed
loading data for troop "trp_hutt_commando" ... completed
loading data for troop "trp_hutt_skiff_guard_captain" ... completed
loading data for troop "trp_hutt_palace_guard_captain" ... completed
loading data for troop "trp_hutt_messenger" ... completed
loading data for troop "trp_hutt_deserter" ... completed
loading data for troop "trp_looter" ... completed
loading data for troop "trp_looter_2" ... completed
loading data for troop "trp_looter_3" ... completed
loading data for troop "trp_bandit" ... completed
loading data for troop "trp_brigand" ... completed
loading data for troop "trp_mountain_bandit" ... completed
loading data for troop "trp_forest_bandit" ... completed
loading data for troop "trp_steppe_bandit" ... completed
loading data for troop "trp_sea_raider" ... completed
loading data for troop "trp_manhunter" ... completed
loading data for troop "trp_slave_driver" ... completed
loading data for troop "trp_slave_hunter" ... completed
loading data for troop "trp_slave_crusher" ... completed
loading data for troop "trp_slaver_chief" ... completed
loading data for troop "trp_follower_woman" ... completed
loading data for troop "trp_hunter_woman" ... completed
loading data for troop "trp_fighter_woman" ... completed
loading data for troop "trp_sword_sister" ... completed
loading data for troop "trp_refugee" ... completed
loading data for troop "trp_peasant_woman" ... completed
loading data for troop "trp_caravan_master" ... completed
loading data for troop "trp_kidnapped_girl" ... completed
loading data for troop "trp_town_walker_1" ... completed
loading data for troop "trp_town_walker_2" ... completed
loading data for troop "trp_village_walker_1" ... completed
loading data for troop "trp_village_walker_2" ... completed
loading data for troop "trp_spy_walker_1" ... completed
loading data for troop "trp_spy_walker_2" ... completed
loading data for troop "trp_tournament_master" ... completed
loading data for troop "trp_trainer" ... completed
loading data for troop "trp_constable_hareck" ... completed
loading data for troop "trp_ramun_the_slave_trader" ... completed
loading data for troop "trp_guide" ... completed
loading data for troop "trp_xerina" ... completed
loading data for troop "trp_dranton" ... completed
loading data for troop "trp_kradus" ... completed
loading data for troop "trp_tutorial_trainer" ... completed
loading data for troop "trp_galeas" ... completed
loading data for troop "trp_farmer_from_bandit_village" ... completed
loading data for troop "trp_trainer_1" ... completed
loading data for troop "trp_trainer_2" ... completed
loading data for troop "trp_trainer_3" ... completed
loading data for troop "trp_trainer_4" ... completed
loading data for troop "trp_trainer_5" ... completed
loading data for troop "trp_ransom_broker_1" ... completed
loading data for troop "trp_ransom_broker_2" ... completed
loading data for troop "trp_ransom_broker_3" ... completed
loading data for troop "trp_ransom_broker_4" ... completed
loading data for troop "trp_ransom_broker_5" ... completed
loading data for troop "trp_ransom_broker_6" ... completed
loading data for troop "trp_ransom_broker_7" ... completed
loading data for troop "trp_ransom_broker_8" ... completed
loading data for troop "trp_ransom_broker_9" ... completed
loading data for troop "trp_ransom_broker_10" ... completed
loading data for troop "trp_tavern_traveler_1" ... completed
loading data for troop "trp_tavern_traveler_2" ... completed
loading data for troop "trp_tavern_traveler_3" ... completed
loading data for troop "trp_tavern_traveler_4" ... completed
loading data for troop "trp_tavern_traveler_5" ... completed
loading data for troop "trp_tavern_traveler_6" ... completed
loading data for troop "trp_tavern_traveler_7" ... completed
loading data for troop "trp_tavern_traveler_8" ... completed
loading data for troop "trp_tavern_traveler_9" ... completed
loading data for troop "trp_tavern_traveler_10" ... completed
loading data for troop "trp_tavern_bookseller_1" ... completed
loading data for troop "trp_tavern_bookseller_2" ... completed
loading data for troop "trp_tavern_minstrel_1" ... completed
loading data for troop "trp_npc1" ... completed
loading data for troop "trp_npc2" ... completed
loading data for troop "trp_npc3" ... completed
loading data for troop "trp_npc4" ... completed
loading data for troop "trp_npc5" ... completed
loading data for troop "trp_npc6" ... completed
loading data for troop "trp_npc7" ... completed
loading data for troop "trp_npc8" ... completed
loading data for troop "trp_npc9" ... completed
loading data for troop "trp_npc10" ... completed
loading data for troop "trp_npc11" ... completed
loading data for troop "trp_npc12" ... completed
loading data for troop "trp_npc13" ... completed
loading data for troop "trp_npc14" ... completed
loading data for troop "trp_npc15" ... completed
loading data for troop "trp_npc16" ... completed
loading data for troop "trp_kingdom_heroes_including_player_begin" ... completed
loading data for troop "trp_kingdom_1_lord" ... completed
loading data for troop "trp_kingdom_2_lord" ... completed
loading data for troop "trp_kingdom_3_lord" ... completed
loading data for troop "trp_knight_1_1" ... completed
loading data for troop "trp_knight_1_2" ... completed
loading data for troop "trp_knight_1_3" ... completed
loading data for troop "trp_knight_1_4" ... completed
loading data for troop "trp_knight_1_5" ... completed
loading data for troop "trp_knight_1_6" ... completed
loading data for troop "trp_knight_1_7" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed
loading data for troop "" ... completed

here's a link to my troops.txt file
http://rapidshare.com/files/164683193/troops.txt.html
 

Backe

Sergeant at Arms
Best answers
0
@HokieBT: Thank you very much for the bug report and test data. I will look into it and post a fix as soon as possible.

[edit]trp_knight_1_7 (Major_General_Cass) tries to upgrade to the troop type with the ID 431253885844215163866665134079905033142143528482437284843171417686016, while I am expecting an unsigned 32bit integer ... that could be a problem. :wink: After changing the troop id to 0, the program runs as expected.
Are such huge troop IDs some sort of modding hack I have to deal with?[/edit]
 

HokieBT

Grandmaster Knight
M&BWB
Best answers
0
Backe said:
@HokieBT: Thank you very much for the bug report and test data. I will look into it and post a fix as soon as possible.

[edit]trp_knight_1_7 (Major_General_Cass) tries to upgrade to the troop type with the ID 431253885844215163866665134079905033142143528482437284843171417686016, while I am expecting an unsigned 32bit integer ... that could be a problem. :wink: After changing the troop id to 0, the program runs as expected.
Are such huge troop IDs some sort of modding hack I have to deal with?[/edit]
Just sent you a PM, but there was accidentally an extra face code for that troop in my code.  :wink:  Once that was removed your program worked great, thanks very much!
 

dealman

Sergeant
Best answers
1
Either this doesn't work for 1.010, or I'm doing it wrong.

I made an troops.txt in same directory as the .exe file, I open it up and it closes fast, really fast. I was lucky enough to get a PrintScreen of the error after a few attempts.

If I remember correctly, it said something about troops.txt could not be read. Any further instructions how to use this? :razz:
 

Backe

Sergeant at Arms
Best answers
0
Thank you all for the feedback.

@dealman: You can save the whole output to a file by typing "TroopTreeGenerator.exe > error.txt", but this is of course not necessary if you have already identified the ""troops.txt could not be read" message.
I don't know what could cause this problem, if the two files are really in the same folder. Maybe it's an authorisation problem or you somehow specified a different working directory.
 

HokieBT

Grandmaster Knight
M&BWB
Best answers
0
Backe - the mouse-over effect with the extra information is very cool, could you consider adding a flag to include the level of each troop in the tree itself?  Maybe with a (#) or (lvl #) at the end of their name?

# Caravan Guard (14)
    * Mercenary Swordsman (20)
          o Hired Blade (25)
    * Mercenary Horseman (20)
          o Mercenary Cavalry (25)

EDIT: few other comments, this is a great program and very helpful, just trying to give some feedback.  :wink:

- I had to use "-text" not "-txt" to get it to create a trooptree.txt, you might want to update your first post
- I would suggest you request an account on mbrepository.com to upload this and maybe ask an admin to move this thread into unofficial tools forum
- the mouse-over is missing some info like intelligence, charisma, etc.
- you might want to see if you can re-format the output of HTML code a little bit to make it more readable (ie. newline char before <ul>,<li>, <div>, etc)
- long term it would be nice to have a TroopTreeGenerator.ini configuration file, where you could specify what the HTML color code for each category was, maybe a font size/type, maybe be able to define a string with some variables so you could list extra information (ie. Hired Blade (Level: 25, Str: 7, 1H: 117), etc.  This is by no means essential, but if you are looking for ways to improve it then its always nice to have some flexibility, etc.

 

Backe

Sergeant at Arms
Best answers
0
Great suggestions, don't hesitate to post more! (The current version of the Troop Tree Generator is nothing more than a proof of concept hacked together on a Saturday morning and I'm happy about any directions to where the development should go, especially from modders)

HokieBT said:
- I had to use "-text" not "-txt" to get it to create a trooptree.txt, you might want to update your first post
*cough* done

- long term it would be nice to have a TroopTreeGenerator.ini configuration file, where you could specify what the HTML color code for each category was, maybe a font size/type, maybe be able to define a string with some variables so you could list extra information
My initial plan was to reference a CSS file in the HTML, which could be used to customize the look of the output. Your idea is much better, because it works for all output formats and gives more control over the data. A placeholder string to define the displayed data will definately be in.

I would suggest you request an account on mbrepository.com to upload this and maybe ask an admin to move this thread into unofficial tools forum
I will fill the according forms this weekend. :wink:

- the mouse-over is missing some info like intelligence, charisma, etc.
This is actually intended, since I thought intelligence and charisma would only be relevant to the player and companions. Am I wrong?

- you might want to see if you can re-format the output of HTML code a little bit to make it more readable (ie. newline char before <ul>,<li>, <div>, etc)
Yes, a few newlines wouldn't hurt. I'm not sure if I will spend much time on this with all the auto-identing HTML editors out there. No need to reinvent the wheel.
 

HokieBT

Grandmaster Knight
M&BWB
Best answers
0
I used this again for a different mod so wanted to post some comments.

- as mentioned earlier, a configuration file, or being able to add the troop level on the output, would be cool
- you are correct that charisma/intelligence isn't really necessary for troops, so i guess it does make sense to leave out or make it configurable.  :wink:
- the BBC output for the forum is all on one line which was a little bit of a pain since I only wanted the faction troop tree's

Regardless, this is a great and program and is very useful since it even helped me find some upgrade bugs in my code.  :wink:  Definitely deserves a spot in the unofficial tools and on mbrepository, etc.
 

Backe

Sergeant at Arms
Best answers
0
@HokieBT:
There will be an improved version with your suggestions.
Allowing the user to define troop classes (archer, mounted, ...) in the configuration file is probably also useful. ("Unmounted troops with guaranteed helmet, armor and boots are "heavy infantry" => display melee skills only and use green as the font color")
The next step could be analysing the item file, so you can for example distinguish between crossbow and bow units.

The configuration could look something like this:
Code:
config default
{
	input = troops.txt
	output = trooptree.html
	default_color = #000000
	default_text = $NAME$ (Level $LEVEL$)

	class ranged(GUAR_RANGED, !GUAR_MOUNTED)
	{
		color = #00FF00
		text = $NAME$ (Level $LEVEL$; $PROF_XBOW$)
	}
}

config test
{
...
(The problem is that I'm currently on vacation and - ironically - the more time I have, the lower my motivation is.)
 

HokieBT

Grandmaster Knight
M&BWB
Best answers
0
Well, I understand the sample configuration file you posted, and I love flexibility in programs, so that would be very cool.  However, I'm not sure how long that would take to code and I personally think it might be overkill since I doubt most people would use all the functionality.  I think your program will primary be used by mod creators to make a simple troop tree they can post in the forum. So this will primarily be the BBC output and they might like a very simple configuration file to change a few things like the color and default_text.

Code:
input = troops.txt
output = trooptree.html
default_color = #000000
ranged_color = #000000
mounted_color = #000000
ranged_mounted_color = #000000
default_text = $NAME$ (Level $LEVEL$)
Then, if you can add some new line characters to the BBC output, that would allow people to very easily cut-n-paste all or part of the troop tree to include in their mod description on the forum.  Anyway, not trying to be negative at all, and the program works great as it is so no rush, but I think a few new variables would be very neat.
 

Llew2

Cheap ass bum
Count
M&BWB
Best answers
0
Very cool indeed! Now I think I'll just borrow the HYW troop tree you've got there, since I never bothered to do an updated one.  :wink:
 

Backe

Sergeant at Arms
Best answers
0
Distractions in RL stopped me from uploading the new version of the Troop Tree Generator, which was lying around since christmas. You can now download it here: http://rapidshare.com/files/190770029/TroopTreeGenerator.zip
The command line options are gone. They are replaced by a more powerful config file called "TroopTreeGenerator.txt", which is hopefully self-explanatory. I will update the first post later.

If someone is interested: The old version had 205 downloads so far.
 

HokieBT

Grandmaster Knight
M&BWB
Best answers
0
this is really really awesome, very nice job!  I love being able to create multiple configurations and I was even able to add $PROF_FIREARMS$ which is nice for my star wars mod.  :wink:  Here's an example of the output, very cool.

  • Farmer ( Level 4 - STR: 8 AGI: 8 Firearms: 60 )
    • Hired Guard ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Hired Guardian ( Level 20 - STR: 14 AGI: 14 Firearms: 157 )

  • Townsman ( Level 4 - STR: 8 AGI: 8 Firearms: 63 )
    • Hired Guard ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Hired Guardian ( Level 20 - STR: 14 AGI: 14 Firearms: 157 )

  • Wookiee ( Level 10 - STR: 10 AGI: 10 Firearms: 125 )
    • Wookiee Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Wookiee Marksman ( Level 20 - STR: 14 AGI: 14 Firearms: 143 )
        • Wookiee Sharpshooter ( Level 24 - STR: 16 AGI: 16 Firearms: 164 )
      • Wookiee Berserker ( Level 20 - STR: 14 AGI: 14 Firearms: 157 )
        • Warrior of Bacca ( Level 24 - STR: 16 AGI: 16 Firearms: 166 )

  • Mandalorian ( Level 10 - STR: 10 AGI: 10 Firearms: 125 )
    • Mandalorian Soldier ( Level 16 - STR: 12 AGI: 12 Firearms: 255 )
      • Mandalorian Commando ( Level 20 - STR: 14 AGI: 14 Firearms: 156 )
        • Mandalorian Crusader ( Level 24 - STR: 16 AGI: 16 Firearms: 162 )
      • Mandalorian Sniper ( Level 20 - STR: 14 AGI: 14 Firearms: 141 )
        • Mandalorian Deadeye ( Level 24 - STR: 16 AGI: 16 Firearms: 166 )

  • Gamorrean ( Level 10 - STR: 10 AGI: 10 Firearms: 111 )
    • Gamorrean Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Gamorrean Guard ( Level 20 - STR: 14 AGI: 14 Firearms: 158 )
        • Gamorrean Palace Guard ( Level 24 - STR: 16 AGI: 16 Firearms: 161 )

  • Twi'lek Female ( Level 10 - STR: 10 AGI: 10 Firearms: 125 )
    • Twi'lek Dancer ( Level 16 - STR: 12 AGI: 12 Firearms: 125 )
      • Twi'lek Entertainer ( Level 20 - STR: 14 AGI: 14 Firearms: 156 )

  • Twi'lek ( Level 10 - STR: 10 AGI: 10 Firearms: 105 )
    • Twi'lek Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 253 )
      • Twi'lek Soldier ( Level 20 - STR: 14 AGI: 14 Firearms: 141 )
        • Twi'lek Commando ( Level 24 - STR: 16 AGI: 16 Firearms: 185 )

  • Rodian ( Level 10 - STR: 10 AGI: 10 Firearms: 105 )
    • Rodian Warrior ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Rodian Hunter ( Level 20 - STR: 14 AGI: 14 Firearms: 156 )
        • Rodian Bounty Hunter ( Level 24 - STR: 16 AGI: 16 Firearms: 186 )

  • Mon Calamarian ( Level 10 - STR: 10 AGI: 10 Firearms: 123 )
    • Mon Calamari Officer ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Mon Calamari Commander ( Level 20 - STR: 14 AGI: 14 Firearms: 159 )
        • Mon Calamari Captain ( Level 24 - STR: 16 AGI: 16 Firearms: 184 )

  • Bothan ( Level 10 - STR: 10 AGI: 10 Firearms: 121 )
    • Bothan Agent ( Level 16 - STR: 12 AGI: 12 Firearms: 127 )
      • Bothan Operative ( Level 20 - STR: 14 AGI: 14 Firearms: 159 )
        • Bothan Spy ( Level 24 - STR: 16 AGI: 16 Firearms: 166 )

  • Imperial Recruit ( Level 6 - STR: 10 AGI: 10 Firearms: 71 )
    • Imperial Cadet ( Level 10 - STR: 10 AGI: 10 Firearms: 127 )
      • Imperial Stormtrooper ( Level 15 - STR: 12 AGI: 12 Firearms: 110 )
        • Veteran Imperial Stormtrooper ( Level 21 - STR: 14 AGI: 14 Firearms: 159 )
          • Imperial Dark Trooper ( Level 24 - STR: 16 AGI: 16 Firearms: 174 )
          • Imperial Royal Guard ( Level 24 - STR: 16 AGI: 16 Firearms: 171 )
      • Imperial Scout Trooper ( Level - 15 STR: 12 AGI: 12 Firearms: 127 )
        • Veteran Imperial Scout Trooper ( Level - 21 STR: 14 AGI: 14 Firearms: 140 )
          • Imperial Scout Trooper Captain ( Level - 24 STR: 16 AGI: 16 Firearms: 171 )
    • Sith Hopeful ( Level 10 - STR: 14 AGI: 18 Firearms: 123 )
      • Sith Acolyte ( Level 14 - STR: 18 AGI: 22 Firearms: 135 )
        • Sith Apprentice ( Level 18 - STR: 18 AGI: 22 Firearms: 167 )
          • Sith Knight ( Level 22 - STR: 22 AGI: 26 Firearms: 191 )
            • Sith Marauder ( Level 28 - STR: 22 AGI: 26 Firearms: 223 )
              • Sith Master ( Level 34 - STR: 26 AGI: 30 Firearms: 256 )
                • Sith Lord ( Level 40 - STR: 26 AGI: 30 Firearms: 306 )

  • Rebel Recruit ( Level 6 - STR: 10 AGI: 10 Firearms: 127 )
    • Rebel Cadet ( Level 10 - STR: 10 AGI: 10 Firearms: 90 )
      • Rebel Trooper ( Level 15 - STR: 12 AGI: 12 Firearms: 110 )
        • Veteran Rebel Trooper ( Level 21 - STR: 14 AGI: 14 Firearms: 150 )
          • Rebel Sniper ( Level 24 - STR: 16 AGI: 16 Firearms: 170 )
          • Rebel Commando ( Level 24 - STR: 16 AGI: 16 Firearms: 175 )
      • Rebel Pilot ( Level - 15 STR: 12 AGI: 12 Firearms: 111 )
        • Veteran Rebel Pilot ( Level - 21 STR: 14 AGI: 14 Firearms: 143 )
          • Rebel Pilot Captain ( Level - 24 STR: 16 AGI: 16 Firearms: 167 )
    • Jedi Hopeful ( Level 10 - STR: 14 AGI: 18 Firearms: 124 )
      • Jedi Initiate ( Level 14 - STR: 18 AGI: 22 Firearms: 142 )
        • Jedi Padawan ( Level 18 - STR: 18 AGI: 22 Firearms: 183 )
          • Jedi Guardian ( Level 22 - STR: 22 AGI: 26 Firearms: 218 )
            • Jedi Warrior Master ( Level 28 - STR: 22 AGI: 26 Firearms: 247 )
              • Jedi Councilor ( Level 35 - STR: 26 AGI: 30 Firearms: 281 )
                • Jedi Grand Master ( Level 42 - STR: 26 AGI: 30 Firearms: 315 )
          • Jedi Consular ( Level 22 - STR: 22 AGI: 26 Firearms: 204 )
            • Jedi Sage Master ( Level 28 - STR: 22 AGI: 26 Firearms: 220 )
              • Jedi Councilor ( Level 35 - STR: 26 AGI: 30 Firearms: 281 )
                • Jedi Grand Master ( Level 42 - STR: 26 AGI: 30 Firearms: 315 )

  • Hutt Militia ( Level 6 - STR: 10 AGI: 10 Firearms: 71 )
    • Hutt Mercenary ( Level 10 - STR: 10 AGI: 10 Firearms: 94 )
      • Hutt Marksman ( Level 15 - STR: 12 AGI: 12 Firearms: 126 )
        • Hutt Bounty Hunter ( Level 21 - STR: 14 AGI: 14 Firearms: 159 )
          • Hutt Commando ( Level 24 - STR: 16 AGI: 16 Firearms: 174 )
      • Hutt Guard ( Level 15 - STR: 12 AGI: 12 Firearms: 111 )
        • Hutt Skiff Guard ( Level - 21 STR: 14 AGI: 14 Firearms: 159 )
          • Hutt Skiff Guard Captain ( Level - 24 STR: 16 AGI: 16 Firearms: 190 )
        • Hutt Palace Guard ( Level 21 - STR: 14 AGI: 14 Firearms: 151 )
          • Hutt Palance Guard Captain ( Level 24 - STR: 16 AGI: 16 Firearms: 171 )

  • Jawa ( Level 9 - STR: 8 AGI: 8 Firearms: 80 )
    • Jawa Scavenger ( Level 11 - STR: 8 AGI: 8 Firearms: 117 )
      • Jawa Scout ( Level 13 - STR: 8 AGI: 8 Firearms: 120 )

  • Bandit ( Level 10 - STR: 8 AGI: 8 Firearms: 95 )
    • Brigand ( Level 11 - STR: 8 AGI: 8 Firearms: 103 )

  • Bounty Hunter ( Level 10 - STR: 8 AGI: 8 Firearms: 74 )
    • Slave Driver ( Level 14 - STR: 8 AGI: 8 Firearms: 89 )
      • Slave Hunter ( Level 18 - STR: 8 AGI: 8 Firearms: 96 )
        • Slave Crusher ( Level 22 - STR: 8 AGI: 8 Firearms: 123 )
          • Slaver Chief ( Level 26 - STR: 8 AGI: 8 Firearms: 145 )

  • Refugee ( Level 1 - STR: 8 AGI: 8 Firearms: 58 )
    • Camp Follower ( Level 5 - STR: 8 AGI: 8 Firearms: 80 )
      • Huntress ( Level 10 - STR: 8 AGI: 8 Firearms: 88 )
        • Camp Defender ( Level 16 - STR: 8 AGI: 8 Firearms: 104 )
          • Sword Sister ( Level 22 - STR: 8 AGI: 8 Firearms: 157 )

  • Peasant Woman ( Level 1 - STR: 8 AGI: 8 Firearms: 50 )
    • Camp Follower ( Level 5 - STR: 8 AGI: 8 Firearms: 80 )
      • Huntress ( Level 10 - STR: 8 AGI: 8 Firearms: 88 )
        • Camp Defender ( Level 16 - STR: 8 AGI: 8 Firearms: 104 )
          • Sword Sister ( Level 22 - STR: 8 AGI: 8 Firearms: 157 )