Advertisement
Guest User

settings2hyper.pl v1.3, Fractured Space GameUserSettings.ini

a guest
Apr 21st, 2018
400
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 9.79 KB | None | 0 0
  1. #!/usr/bin/perl -lnw
  2. # version 1.3, Copyright 2018 Hugh
  3. # Licenced under the GNU Affero General Public License, v3 or later
  4. # https://www.gnu.org/licenses/agpl-3.0.en.html
  5.  
  6. # Reads https://www.fracturedspace.com/ 's %AppData%\Local\spacegame\Saved\Config\WindowsNoEditor\GameUserSettings.ini
  7. # Prints URLs for Hypergrip's http://trollbruecke.de/fracturedcrew/
  8. # Template: http://trollbruecke.de/fracturedcrew/crew.php?template=PnPnPnPnPnAAABBBCCCDDDEEE
  9. # e.g.
  10. # The Starter Crew: http://trollbruecke.de/fracturedcrew/crew.php?template=0554223472ALTBKRCHWDFQEGO
  11. # sorted for display: http://trollbruecke.de/fracturedcrew/crew.php?template=5422053472BKRCHWALTDFQEGO
  12.  
  13. # Usage: settings2hyper.pl GameUserSettings.ini
  14.  
  15. # Profession | CrewID (Crew in that profession sorted alphabetically starting at 0)
  16. # 0x: Captain
  17. # 1x: CAG (Commander, Air Group)
  18. # 2x: Comms
  19. # 3x: Engineer
  20. # 4x: Jump Core
  21. # 5x: Navigation
  22. # 6x: Repair
  23. # 7x: Tactical
  24. # 8x: Utility
  25. %crewmap = (
  26.   "5E0939BE45877FBE5243A0AEDDC6697A" => ['78', '471-Maggie', 'LastStand-OGrady'],
  27.   "DBA519884D2448B247F1BAB5B26F0FA0" => ['40', 'ALA8AMA', 'Pirate'],
  28.   "FFBB0CD044585FA20397788DA4C8361B" => ['10', 'Arkany Kena', 'CrewPod'],
  29.   "0E661A1B4E8FC0DA2E21B0980FC8D48F" => ['20', 'Benjamin Patrick', 'DarkPod'],
  30.   "BCD8CC1F41A30706FE79808E99686F34" => ['37', '8LADE', 'LastStand1'],
  31.   "4F0EF7B14E249F490DA9D7999105919B" => ['50', 'Blain Allen', 'CrewPod'],
  32.   "24059A994492D0F581F4BBA34CF04F30" => ['51', 'Bonny Reed', 'Pirate'],
  33.   "9700066F4492A3B0FD601B9791D396D3" => ['00', 'Caesar Morgan', 'Pirate'],
  34.   "E8C717004E2EE7154BF67B8F8E7F931D" => ['16', 'Calandra Vandenberg', 'LastStand-OGrady'],
  35.   "69C4E15A416644CB171900865E5C8596" => ['41', 'Carzelle Odiarre', 'CrewPod'],
  36.   "8E2505D04ED1E3A502BC55BF20565FB1" => ['52', 'Charion Lloyd', 'CrewPod'],
  37.   "469C924F46938892882C86B29AEC0787" => ['01', 'Clara Reisette', 'CrewPod'],
  38.   "3B4C9D4447A2C279C70E8FB77C8D11C0" => ['70', 'Cornelius Baptiste', 'CrewPod'],
  39.   "27E43DEC4D0DCD5C245E62B2A3A62CBC" => ['11', 'Cpl Johner One', 'CrewPod'],
  40.   "10D3DC5F47D80063D389A39B9E43C83A" => ['71', 'Dice Caplan', 'CrewPod'],
  41.   "8EB81D644E79B44458C3CB897E42BA40" => ['72', 'Elax Zenchas', 'Starter'],
  42.   "00CF4ABB4849164394475884CDBD2FA2" => ['30', 'Elvy Cooper', 'CrewPod'],
  43.   "DE58A8B94BE28412B0AEC5851BF58E06" => ['31', 'Emmina Xinyu', 'PiratePod'],
  44.   "F54C19614EED261DE7B5688440419793" => ['12', 'Ernest Grimur', 'PiratePod'],
  45.   "A3E3FD2D4F8A3A7B3C3ED392FDA7A83A" => ['02', 'Evan Stirling', 'CrewPod'],
  46.   "07FB941F4118D9C16F7194AF2DEE9236" => ['68', 'Ever Sword Kern', 'LastStand-OGrady'],
  47.   "114452A14736870E083AE9A565A66D32" => ['03', 'Frank Torrance', 'Dark'],
  48.   "34D3B51248D2D71DA09F49B70D527191" => ['32', 'Goss Resnik', 'CrewPod'],
  49.   "3292E32F46F83E8EDB9B04BC49DC096C" => ['53', 'Gregorii Durov', 'CrewPod'],
  50.   "ADB48C2049AD7E235ABB47818BBBA283" => ['80', 'Grincz Morrow', 'CrewPod'],
  51.   "0CB4D1FC41D22624F2523DABA8461480" => ['42', 'Halo', 'DarkPod'],
  52.   "EAACCEB3473CF95EBF4945B659971EBD" => ['09', 'Hanako O\'Grady', 'LastStand-OGrady'],
  53.   "03596E2C403126695058DA968351CE1D" => ['43', 'Hera Dymarr', 'CrewPod'],
  54.   "5881365442DBDBC583701C9C927AE487" => ['54', 'IX-209', 'Starter'],
  55.   "17EDB1EA49444C603573DFB410B2C262" => ['73', 'Imasa Okadas', 'Dark'],
  56.   "4FA7ED4E43526AD90D0A16ACBE74B7D0" => ['33', 'IMMIX-R', 'PiratePod'],
  57.   "753F38F3427D6BFDED1E33A31A506449" => ['44', 'Isabella Jaq', 'CrewPod'],
  58.   "8FAD1806478DF966360CF384F5C67AED" => ['04', 'Jonesy', 'CrewPod'],
  59.   "CC7A81AD4BB2E1BF90CEC1A3DAFAA373" => ['74', 'Jules Valentine', 'Pirate'],
  60.   "C70284114856958E755BCD960D8DB4F7" => ['47', 'KN1FE', 'LastStand1'],
  61.   "50BECA4949A2848119822E82226063C1" => ['75', 'Krysten Tchaikovsky', 'CrewPod'],
  62.   "B25536CF42280EB3A851A19EFC566AF6" => ['60', 'Lance Gregory', 'CrewPod'],
  63.   "4737EA7D4B691CFE1D3CB7A7ACA9D476" => ['21', 'Lexin Kether', 'CrewPod'],
  64.   "5E0EC5464C707BD2491991B3031EC524" => ['81', 'Ludologist', 'DarkPod'],
  65.   "BA551FBC4960C181F355B980AF657DCE" => ['05', 'Marie-Anne Moreau', 'Starter'],
  66.   "DCC3E4D34D881F9AD77A4485D49FADDB" => ['61', 'Mas Leydrab', 'CrewPod'],
  67.   "5589B0694B749C382B0E9A95B2A500B5" => ['13', 'Matilda Issacs', 'CrewPod'],
  68.   "042BA0E84DF3C80D6FD42B978AE41BFC" => ['06', 'Matsokah', 'CrewPod'],
  69.   "7CD8F72B46FFD94EECFBA580AD4F622B" => ['45', 'Max Demian', 'Dark'],
  70.   "370F985448800E271DF35A905730FCFD" => ['34', 'Mia Jansen', 'Starter'],
  71.   "E8F9A6D044DD009264F232BAF5745B59" => ['38', 'M1LCH0', 'LastStand1'],
  72.   "97E4B6DE426E33CBD78D30888416E3B0" => ['62', 'Mira Sharma', 'CrewPod'],
  73.   "87CC780246FA51D090821E810163C124" => ['22', 'Nessa Mulligan', 'Starter'],
  74.   "555DCF064663C9470A03AD89978A710B" => ['82', 'Palam0n', 'CrewPod'],
  75.   "6869BC9F4EBD5180DE3B2A915131F0D6" => ['23', 'Protagonist', 'SpecialEvent'],
  76.   "C3587D4C4C1F4FB4667F81827D4D641C" => ['35', 'Ragnar Zoref', 'Pirate'],
  77.   "01EFAA1A4FAD35C8F2AF29BB80D38505" => ['63', 'Rayvac Molk', 'CrewPod'],
  78.   "C695059E4356F317E1A3F1B4A33107C2" => ['83', 'Regan', 'Dark'],
  79.   "1B5382DF460CA84BE24285A16393D7D1" => ['64', 'Revok Thorn', 'Dark'],
  80.   "D84BFBD24EE5AADEA97A57ABDE5B8D06" => ['65', 'Ridley J. Fincher'],
  81.   "2023776347DBB48F15EF789DFDFEB9C6" => ['55', 'Ru-T0lf', 'SpecialEvent'],
  82.   "EE367C3445C458B872DD99AA821954C7" => ['14', 'Sara Krace', 'CrewPod'],
  83.   "0FEFF4C847450FCF4539E6A808210D20" => ['24', 'Samuel Mosley', 'CrewPod'],
  84.   "0DEDBFCA443F59FF912CDC98A51AA3D3" => ['86', '5CALPEL', 'LastStand1'],
  85.   "72D906A447E302DC3A3B9AB2A3E48DC4" => ['57', 'Sebastian Barox', 'LastStand1'],
  86.   "FFEE8C2E420D6F18592FC7BD4A33070E" => ['84', 'Seraphine Vega', 'CrewPod'],
  87.   "270D6DE4487A83C2F8A42F817AFB4146" => ['36', 'Silke Kaneshiro', 'CrewPod'],
  88.   "CC29E90E40459910158A85AA6AD80603" => ['66', 'Stellan Shaw', 'CrewPod'],
  89.   "B3353CB04D89D2DE05B3239FDB0CDD64" => ['26', 'Surinder Kaur', 'LastStand-OGrady'],
  90.   "57B7C1F84E93CC90B5790383F7ABAD18" => ['76', 'TAU-IS', 'PiratePod'],
  91.   "D78315B84D2DF4764384E1A3710E0DB6" => ['46', 'Telisic Jenova', 'CrewPod'],
  92.   "C54041CE43F8A0E89B2E04ADA2ED147F" => ['15', 'Temple Jemison', 'DarkPod'],
  93.   "B5EA63044B50230C97A9F69E90841FFA" => ['07', 'The Mighty Jingles', 'SpecialEvent'],
  94.   "739B3F2445F94A3F0AC41C8E420850BD" => ['67', 'Tyrain Demam', 'CrewPod'],
  95.   "6EEEB38D4CF8CCBA5265B490963A1B6B" => ['08', 'WHIM', 'CrewPod'],
  96.   "C06032324DA975929D6751BD9EDDCFFF" => ['25', 'Xu Ziyi', 'CrewPod'],
  97.   "73F6C37247301C1E28DC19BBD4A38DB2" => ['77', 'Xerid Greyfist', 'DarkPod'],
  98.   "0473AF5C437B066B20F23383B826D8CF" => ['85', 'Zhang Tao', 'CrewPod'],
  99.   "C9E1CF554D3AA9ABBEACC29081923251" => ['56', 'Zoe Ledoux', 'PiratePod'],
  100.   "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" => ['--', 'Missing', 'Missing'],
  101. );
  102.  
  103. %implantmap=(
  104.   "13DC022E42068C9E654115A05B41DE6E" => ['A', 'Attack Damage'],
  105.   "BB220E9345CEFD879D93838D549B26CF" => ['F', 'Armor Repair Rate'],
  106.   "F9D3569E4C0C3D099650E78C4DC42CFD" => ['G', 'Armor Strength'],
  107.   "5A718C99471772C79A8B90A146601748" => ['H', 'Broken Armor Damage Reduction'],
  108.   "82D056B6474BBAD3362B58800F1AA504" => ['M', 'Capture Rate'],
  109.   "6834E8D2431A8A8B1BF3BD84F0791B32" => ['I', 'Damage Reduction'],
  110.   "A170838E48D7C48E0DBB588BEDEF9C69" => ['N', 'Energy Regen'],
  111.   "2EC7537F4193727447AC74B5A340345A" => ['B', 'Fire Rate'],
  112.   "B5A88CCF4D16BC9605CB6ABC97289A45" => ['O', 'Forward Thrust'],
  113.   "B553F54842EF2379C90DF49836292A76" => ['J', 'Hull Strength'],
  114.   "571D88634AA9A06CF8703DB822AE72DA" => ['P', 'Jump Cooldown'],
  115.   "89A55DFD46684A7E528D42BF1B141E2A" => ['K', 'Jump Damage Reduction'],
  116.   "3DB3DB124F4C7504CEAD4F9AD02DA883" => ['Q', 'Jump Prep'],
  117.   "E0DF7C9441151ED8AFD4ED9BF12DE8B6" => ['R', 'Maneuvering'],
  118.   "FEE32FD44475D582E42A988A6338E6C5" => ['C', 'Missile Range'],
  119.   "D3D9388C4A69F429C161E18C7978B5A4" => ['D', 'Ramming Damage'],
  120.   "A7C4002144908C578C82EAACEED842B3" => ['S', 'Repair Efficiency'],
  121.   "EC9B721447DF397CA0D7D0A1AEA12A0F" => ['T', 'Sensor Range'],
  122.   "FB3FE8FD4EAA331346C3E596B32CEEF4" => ['U', 'Squad Cooldown'],
  123.   "2357BFE34CED88AAD4FB458B644FD792" => ['V', 'Squad Survival'],
  124.   "3949CAB645FA818C56A12BB0063F0AAB" => ['L', 'Station Damage Reduction'],
  125.   "77B35B9844EAF5A526E422AFBCEA881D" => ['W', 'Turn Rate'],
  126.   "875C276B4215F18D0903C3852EBDC87C" => ['E', 'Turret Traverse'],
  127.   "EC1EE1F84F43B42461FD848FB3433529" => ['X', 'Utility Cooldown'],
  128.   "B91104CB422A09B829AB5D83ED7AF476" => ['Y', 'Utility Duration'],
  129. );
  130.  
  131. if ( /^CrewTeams=.*Name="([^"]+)".*CrewMembers=\((.+)\),Members=/ ) {
  132.   $name=$1;
  133.   $memberlist=$2;
  134.   print "CrewTeams Name: $name";
  135. #  print STDERR "Members: $memberlist";
  136.   # Members: (A),(B),(C),(D),(E)
  137.   # for each crewmember A..E, if defined, affinities X,Y,Z if defined:
  138.   # ID="[[:xdigit:]]{32}"(,Affinities=("X","Y","Z")?
  139.  
  140.   $URLBASE="http://trollbruecke.de/fracturedcrew/crew.php?template=";
  141.   $URLCREW="";
  142.   $URLIMPLANTS="";
  143.  
  144.   # Blank slots get a '-'?
  145.   # If the template code is too short: ERROR: Invalid Template Code
  146.   while ( $memberlist =~ /\(/ ) {
  147.     if ( $memberlist =~ s/\(ID=\"([[:xdigit:]]{32})\",Affinities=\(([^)]+)\),?// ) {
  148.       $crewID=$1;
  149.       $affinities=$2;
  150.     } elsif ( $memberlist =~ s/\(ID=\"([[:xdigit:]]{32})\"\),?// ) {
  151.       $crewID=$1;
  152.       $affinities="";
  153.     } elsif ( $memberlist =~ s/\(\)?,?// ) {    # strip out at least the leading '('
  154.       $crewID="F" x 32;
  155.       $affinities="";
  156.     }
  157.  
  158. #    print "\tCrewmemberID: $crewID $crewmap{$crewID}[0] $crewmap{$crewID}[1]";
  159.     $URLCREW .= $crewmap{$crewID}[0];
  160.  
  161.     $IMPLANTS3="";
  162.     if ( $affinities ne "" ) {
  163.       @_=split(/,/, $affinities);   # ...I need to split an affinity?
  164.       for (@_) {
  165.         if ( /([[:xdigit:]]{32})/ ) {
  166. #          print "\t\tImplant: $1 $implantmap{$1}[0] $implantmap{$1}[1]";
  167.           $IMPLANTS3 .= $implantmap{$1}[0];
  168.         } else {
  169.           $IMPLANTS3 .= '-';
  170.     }
  171.       }
  172.     }
  173.     # pad out to 3 implant slots
  174.     while (length($IMPLANTS3) < 3) { $IMPLANTS3 .= '-' };
  175.     $URLIMPLANTS .= $IMPLANTS3;
  176.   }
  177.   print "\t${URLBASE}${URLCREW}${URLIMPLANTS}";
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement