Benutzer:Count Ypsilon/Skript:cf.pl: Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(Cool, wenn man <pre> verwendet, muss man nicht in jede Zeile <nowiki> schreiben...)
Zeile 3: Zeile 3:
Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden.
Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden.


  <nowiki>#!/usr/bin/perl</nowiki>
<pre>
  <nowiki></nowiki>
#!/usr/bin/perl
  <nowiki>use strict;</nowiki>
 
  <nowiki></nowiki>
use strict;
  <nowiki>my $cfs = [</nowiki>
 
  <nowiki>  { "name" => "Schusswaffen", "gw" => 160000, "mx" => 12 },</nowiki>
my $cfs = [
  <nowiki>  { "name" => "Gruppenheilung", "gw" => 18000, "mx" => 150 },</nowiki>
  { "name" => "Schusswaffen", "gw" => 160000, "mx" => 12 },
  <nowiki>  { "name" => "Angriffsenergie", "gw" => 200000, "mx" => 10 },</nowiki>
  { "name" => "Gruppenheilung", "gw" => 18000, "mx" => 150 },
  <nowiki>  { "name" => "Auftragsplanung", "gw" => 17200, "mx" => 70 },</nowiki>
  { "name" => "Angriffsenergie", "gw" => 200000, "mx" => 10 },
  <nowiki>  { "name" => "Diebstahlschutzwissen", "gw" => 70000, "mx" => 50 },</nowiki>
  { "name" => "Auftragsplanung", "gw" => 17200, "mx" => 70 },
  <nowiki>  { "name" => "Getreideverarbeitung", "gw" => 40000, "mx" => 30 },</nowiki>
  { "name" => "Diebstahlschutzwissen", "gw" => 70000, "mx" => 50 },
  <nowiki>  { "name" => "Gewebeforschung", "gw" => 29000, "mx" => 50 },</nowiki>
  { "name" => "Getreideverarbeitung", "gw" => 40000, "mx" => 30 },
  <nowiki>  { "name" => "Goldabbau", "gw" => 110000, "mx" => 30 },</nowiki>
  { "name" => "Gewebeforschung", "gw" => 29000, "mx" => 50 },
  <nowiki>  { "name" => "Glück", "gw" => 40000, "mx" => 15 },</nowiki>
  { "name" => "Goldabbau", "gw" => 110000, "mx" => 30 },
  <nowiki>  { "name" => "Innere Macht", "gw" => 90000, "mx" => 50 },</nowiki>
  { "name" => "Glück", "gw" => 40000, "mx" => 15 },
  <nowiki>  { "name" => "Jagd", "gw" => 58000, "mx" => 50 },</nowiki>
  { "name" => "Innere Macht", "gw" => 90000, "mx" => 50 },
  <nowiki>  { "name" => "Kochkunst", "gw" => 55000, "mx" => 80 },</nowiki>
  { "name" => "Jagd", "gw" => 58000, "mx" => 50 },
  <nowiki>  { "name" => "Lebensenergie", "gw" => 65000, "mx" => 30 },</nowiki>
  { "name" => "Kochkunst", "gw" => 55000, "mx" => 80 },
  <nowiki>  { "name" => "Lebenstraining", "gw" => 85000, "mx" => 50 },</nowiki>
  { "name" => "Lebensenergie", "gw" => 65000, "mx" => 30 },
  <nowiki>  { "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 },</nowiki>
  { "name" => "Lebenstraining", "gw" => 85000, "mx" => 50 },
  <nowiki>  { "name" => "Magieverlängerung", "gw" => 120000, "mx" => 30 },</nowiki>
  { "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 },
  <nowiki>  { "name" => "Marktwirtschaft", "gw" => 25000, "mx" => 50 },</nowiki>
  { "name" => "Magieverlängerung", "gw" => 120000, "mx" => 30 },
  <nowiki>  { "name" => "Ölverwaltung", "gw" => 65000, "mx" => 60 },</nowiki>
  { "name" => "Marktwirtschaft", "gw" => 25000, "mx" => 50 },
  <nowiki>  { "name" => "Plünderung", "gw" => 93000, "mx" => 30 },</nowiki>
  { "name" => "Ölverwaltung", "gw" => 65000, "mx" => 60 },
  <nowiki>  { "name" => "Reparaturwissen", "gw" => 30000, "mx" => 30 },</nowiki>
  { "name" => "Plünderung", "gw" => 93000, "mx" => 30 },
  <nowiki>  { "name" => "Selbstheilung", "gw" => 80000, "mx" => 80 },</nowiki>
  { "name" => "Reparaturwissen", "gw" => 30000, "mx" => 30 },
  <nowiki>  { "name" => "Stärketraining", "gw" => 75000, "mx" => 50 },</nowiki>
  { "name" => "Selbstheilung", "gw" => 80000, "mx" => 80 },
  <nowiki>  { "name" => "Überzeugungskraft", "gw" => 85000, "mx" => 50 },</nowiki>
  { "name" => "Stärketraining", "gw" => 75000, "mx" => 50 },
  <nowiki>  { "name" => "Waffenkunst", "gw" => 65000, "mx" => 30 },</nowiki>
  { "name" => "Überzeugungskraft", "gw" => 85000, "mx" => 50 },
  <nowiki>  { "name" => "Zauberkunst", "gw" => 600000, "mx" => 3 }</nowiki>
  { "name" => "Waffenkunst", "gw" => 65000, "mx" => 30 },
  <nowiki>];</nowiki>
  { "name" => "Zauberkunst", "gw" => 600000, "mx" => 3 }
  <nowiki></nowiki>
];
  <nowiki>my $extra = {</nowiki>
 
  <nowiki>    "Schusswaffen" => {</nowiki>
my $extra = {
  <nowiki>        "head" => "Anwendbarer Bogen",</nowiki>
    "Schusswaffen" => {
  <nowiki>        "1" => "[[Einfacher Holzbogen]]",</nowiki>
        "head" => "Anwendbarer Bogen",
  <nowiki>        "2" => "[[Einfacher Eisenbogen]]",</nowiki>
        "1" => "[[Einfacher Holzbogen]]",
  <nowiki>        "3" => "[[Holzarmbrust der Erfahrung]]",</nowiki>
        "2" => "[[Einfacher Eisenbogen]]",
  <nowiki>        "4" => "[[Kleine Armbrust des Lebens]]",</nowiki>
        "3" => "[[Holzarmbrust der Erfahrung]]",
  <nowiki>        "5" => "[[Armbrust der Seelen]]",</nowiki>
        "4" => "[[Kleine Armbrust des Lebens]]",
  <nowiki>        "6" => "[[Armbrust der Schutzauflösung]]",</nowiki>
        "5" => "[[Armbrust der Seelen]]",
  <nowiki>        "7" => "[[Armbrust des Donners]]",</nowiki>
        "6" => "[[Armbrust der Schutzauflösung]]",
  <nowiki>        "8" => "[[Armbrust der Präzision]]",</nowiki>
        "7" => "[[Armbrust des Donners]]",
  <nowiki>        "9" => "[[Bogen des Lebens]]",</nowiki>
        "8" => "[[Armbrust der Präzision]]",
  <nowiki>        "10" => "[[Durchschlagende Armbrust]]",</nowiki>
        "9" => "[[Bogen des Lebens]]",
  <nowiki>        "11" => "[[Armbrust der starken Schutzauflösung]]",</nowiki>
        "10" => "[[Durchschlagende Armbrust]]",
  <nowiki>        "12" => "[[Bogen des starken Lebens]]"</nowiki>
        "11" => "[[Armbrust der starken Schutzauflösung]]",
  <nowiki>    },</nowiki>
        "12" => "[[Bogen des starken Lebens]]"
  <nowiki></nowiki>
    },
  <nowiki>    "Zauberkunst" => {</nowiki>
 
  <nowiki>        "head" => "Anwendbarer Zauber",</nowiki>
    "Zauberkunst" => {
  <nowiki>        "1" => "-",</nowiki>
        "head" => "Anwendbarer Zauber",
  <nowiki>        "2" => "[[Effektiver Jerodar-Diebstahlzauber]]",</nowiki>
        "1" => "-",
  <nowiki>        "3" => "[[Starker Jerodar-Diebstahlzauber]]"</nowiki>
        "2" => "[[Effektiver Jerodar-Diebstahlzauber]]",
  <nowiki>    },</nowiki>
        "3" => "[[Starker Jerodar-Diebstahlzauber]]"
  <nowiki></nowiki>
    },
  <nowiki>};</nowiki>
 
  <nowiki></nowiki>
};
  <nowiki>foreach my $cf(@{$cfs})</nowiki>
 
  <nowiki>{</nowiki>
foreach my $cf(@{$cfs})
  <nowiki>    my $grundwert = $cf->{"gw"};</nowiki>
{
  <nowiki>    my $maxstufe = $cf->{"mx"};</nowiki>
    my $grundwert = $cf->{"gw"};
  <nowiki>    my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50;</nowiki>
    my $maxstufe = $cf->{"mx"};
  <nowiki>    my $ex = $extra->{$cf->{"name"}};</nowiki>
    my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50;
  <nowiki>    my $colspan = (defined($ex) ? 12 : 11);</nowiki>
    my $ex = $extra->{$cf->{"name"}};
  <nowiki></nowiki>
    my $colspan = (defined($ex) ? 12 : 11);
  <nowiki>    open(FILE, ">".lc($cf->{"name"}).".txt");</nowiki>
 
  <nowiki></nowiki>
    open(FILE, ">".lc($cf->{"name"}).".txt");
  <nowiki>print FILE <<EOF;</nowiki>
 
  <nowiki><!-- gw=$grundwert mx=$maxstufe --></nowiki>
print FILE <<EOF;
  <nowiki>'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''</nowiki>
<!-- gw=$grundwert mx=$maxstufe -->
  <nowiki>{| {{Prettytable}}</nowiki>
'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''
  <nowiki>|</nowiki>
{| {{Prettytable}}
  <nowiki>|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''</nowiki>
|
  <nowiki>|-</nowiki>
|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''
  <nowiki>!bgcolor=#FFEECB|Stufe</nowiki>
|-
  <nowiki>!bgcolor=#FFFFCC|0</nowiki>
!bgcolor=#FFEECB|Stufe
  <nowiki>EOF</nowiki>
!bgcolor=#FFFFCC|0
  <nowiki></nowiki>
EOF
  <nowiki>print FILE <<EOF if ($maxlt>0);</nowiki>
 
  <nowiki>!bgcolor=#FFFFCC|5</nowiki>
print FILE <<EOF if ($maxlt>0);
  <nowiki>!bgcolor=#FFFFCC|10</nowiki>
!bgcolor=#FFFFCC|5
  <nowiki>!bgcolor=#FFFFCC|15</nowiki>
!bgcolor=#FFFFCC|10
  <nowiki>!bgcolor=#FFFFCC|20</nowiki>
!bgcolor=#FFFFCC|15
  <nowiki>!bgcolor=#FFFFCC|25</nowiki>
!bgcolor=#FFFFCC|20
  <nowiki>!bgcolor=#FFFFCC|30</nowiki>
!bgcolor=#FFFFCC|25
  <nowiki>!bgcolor=#FFFFCC|35</nowiki>
!bgcolor=#FFFFCC|30
  <nowiki>!bgcolor=#FFFFCC|40</nowiki>
!bgcolor=#FFFFCC|35
  <nowiki>!bgcolor=#FFFFCC|45</nowiki>
!bgcolor=#FFFFCC|40
  <nowiki>!bgcolor=#FFFFCC|50</nowiki>
!bgcolor=#FFFFCC|45
  <nowiki>EOF</nowiki>
!bgcolor=#FFFFCC|50
  <nowiki></nowiki>
EOF
  <nowiki>print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));</nowiki>
 
  <nowiki></nowiki>
print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));
  <nowiki>for(my $stufe=1; $stufe<=$maxstufe; $stufe++)</nowiki>
 
  <nowiki>{</nowiki>
for(my $stufe=1; $stufe<=$maxstufe; $stufe++)
  <nowiki>    print FILE "|-\n";</nowiki>
{
  <nowiki>    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";</nowiki>
    print FILE "|-\n";
  <nowiki>    my $blockfarbe = (($stufe-1)/5)%2;</nowiki>
    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";
  <nowiki>    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)</nowiki>
    my $blockfarbe = (($stufe-1)/5)%2;
  <nowiki>    {</nowiki>
    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)
  <nowiki>        my $lernfaktor = 0.95 ** $lerntech;</nowiki>
    {
  <nowiki>        my $sekunden = ($stufe-1) * $grundwert * $lernfaktor;</nowiki>
        my $lernfaktor = 0.95 ** $lerntech;
  <nowiki>        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", </nowiki>
        my $sekunden = ($stufe-1) * $grundwert * $lernfaktor;
  <nowiki>            (($lerntech + $blockfarbe) % 2) ? "" : "FFEECB",</nowiki>
        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n",  
  <nowiki>            $sekunden / 86400,</nowiki>
            (($lerntech + $blockfarbe) % 2) ? "" : "FFEECB",
  <nowiki>            ($sekunden % 86400) / 3600, </nowiki>
            $sekunden / 86400,
  <nowiki>            ($sekunden % 3600) / 60;</nowiki>
            ($sekunden % 86400) / 3600,  
  <nowiki>    }</nowiki>
            ($sekunden % 3600) / 60;
  <nowiki>    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));</nowiki>
    }
  <nowiki>}</nowiki>
    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));
  <nowiki></nowiki>
}
  <nowiki></nowiki>
 
  <nowiki>print FILE <<EOF;</nowiki>
 
  <nowiki>|}</nowiki>
print FILE <<EOF;
  <nowiki></nowiki>
|}
  <nowiki></nowiki>
 
  <nowiki>'''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''</nowiki>
 
  <nowiki>{| {{Prettytable}}</nowiki>
'''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''
  <nowiki>|</nowiki>
{| {{Prettytable}}
  <nowiki>|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''</nowiki>
|
  <nowiki>|-</nowiki>
|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''
  <nowiki>!bgcolor=#FFEECB|Stufe</nowiki>
|-
  <nowiki>!bgcolor=#FFFFCC|0</nowiki>
!bgcolor=#FFEECB|Stufe
  <nowiki>EOF</nowiki>
!bgcolor=#FFFFCC|0
  <nowiki></nowiki>
EOF
  <nowiki>print FILE <<EOF if ($maxlt>0);</nowiki>
 
  <nowiki>!bgcolor=#FFFFCC|5</nowiki>
print FILE <<EOF if ($maxlt>0);
  <nowiki>!bgcolor=#FFFFCC|10</nowiki>
!bgcolor=#FFFFCC|5
  <nowiki>!bgcolor=#FFFFCC|15</nowiki>
!bgcolor=#FFFFCC|10
  <nowiki>!bgcolor=#FFFFCC|20</nowiki>
!bgcolor=#FFFFCC|15
  <nowiki>!bgcolor=#FFFFCC|25</nowiki>
!bgcolor=#FFFFCC|20
  <nowiki>!bgcolor=#FFFFCC|30</nowiki>
!bgcolor=#FFFFCC|25
  <nowiki>!bgcolor=#FFFFCC|35</nowiki>
!bgcolor=#FFFFCC|30
  <nowiki>!bgcolor=#FFFFCC|40</nowiki>
!bgcolor=#FFFFCC|35
  <nowiki>!bgcolor=#FFFFCC|45</nowiki>
!bgcolor=#FFFFCC|40
  <nowiki>!bgcolor=#FFFFCC|50</nowiki>
!bgcolor=#FFFFCC|45
  <nowiki>EOF</nowiki>
!bgcolor=#FFFFCC|50
  <nowiki>print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));</nowiki>
EOF
  <nowiki></nowiki>
print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));
  <nowiki>my $step = 1;</nowiki>
 
  <nowiki>$step = 5 if ($maxstufe > 14);</nowiki>
my $step = 1;
  <nowiki>my $zeile = 1;</nowiki>
$step = 5 if ($maxstufe > 14);
  <nowiki></nowiki>
my $zeile = 1;
  <nowiki>for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step)</nowiki>
 
  <nowiki>{</nowiki>
for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step)
  <nowiki>    print FILE "|-\n";</nowiki>
{
  <nowiki>    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";</nowiki>
    print FILE "|-\n";
  <nowiki>    my $blockfarbe = (($zeile-1)/5)%2;</nowiki>
    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";
  <nowiki>    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)</nowiki>
    my $blockfarbe = (($zeile-1)/5)%2;
  <nowiki>    {</nowiki>
    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)
  <nowiki>        my $lernfaktor = 0.95 ** $lerntech;</nowiki>
    {
  <nowiki>        my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor;</nowiki>
        my $lernfaktor = 0.95 ** $lerntech;
  <nowiki>        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", </nowiki>
        my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor;
  <nowiki>            (($lerntech + $blockfarbe) % 2) ? "FFEECB" : $blockfarbe,</nowiki>
        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n",  
  <nowiki>            $sekunden / 86400,</nowiki>
            (($lerntech + $blockfarbe) % 2) ? "FFEECB" : $blockfarbe,
  <nowiki>            ($sekunden % 86400) / 3600, </nowiki>
            $sekunden / 86400,
  <nowiki>            ($sekunden % 3600) / 60;</nowiki>
            ($sekunden % 86400) / 3600,  
  <nowiki>    }</nowiki>
            ($sekunden % 3600) / 60;
  <nowiki>    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));</nowiki>
    }
  <nowiki>    $zeile++;</nowiki>
    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));
  <nowiki>}</nowiki>
    $zeile++;
  <nowiki></nowiki>
}
  <nowiki>print FILE "|}\n";</nowiki>
 
  <nowiki></nowiki>
print FILE "|}\n";
  <nowiki>close FILE;</nowiki>
 
  <nowiki>}</nowiki>
close FILE;
  <nowiki></nowiki>
}
  <nowiki>sub reihe</nowiki>
 
  <nowiki>{</nowiki>
sub reihe
  <nowiki>    my $z = shift;</nowiki>
{
  <nowiki>    return ($z * ($z + 1) / 2);</nowiki>
    my $z = shift;
  <nowiki>}</nowiki>
    return ($z * ($z + 1) / 2);
  <nowiki></nowiki>
}
 
</pre>

Version vom 3. Oktober 2006, 21:59 Uhr

Dieses Skript erzeugt für jede im anfangs definierten Array erwähnte Charakterfähigkeit eine Datei, in der sich die Lernzeit- und die Gesamtlernzeit-Tabellen befinden. Grundwert ("gw") und maximale Ausbaustufe ("mx") sind geeignet zu wählen.

Über das Array "extra" kann bei bestimmten Charakterfähigkeiten eine zusätzliche Spalte an die Tabelle angehängt werden.

#!/usr/bin/perl

use strict;

my $cfs = [
   { "name" => "Schusswaffen", "gw" => 160000, "mx" => 12 },
   { "name" => "Gruppenheilung", "gw" => 18000, "mx" => 150 },
   { "name" => "Angriffsenergie", "gw" => 200000, "mx" => 10 },
   { "name" => "Auftragsplanung", "gw" => 17200, "mx" => 70 },
   { "name" => "Diebstahlschutzwissen", "gw" => 70000, "mx" => 50 },
   { "name" => "Getreideverarbeitung", "gw" => 40000, "mx" => 30 },
   { "name" => "Gewebeforschung", "gw" => 29000, "mx" => 50 },
   { "name" => "Goldabbau", "gw" => 110000, "mx" => 30 },
   { "name" => "Glück", "gw" => 40000, "mx" => 15 },
   { "name" => "Innere Macht", "gw" => 90000, "mx" => 50 },
   { "name" => "Jagd", "gw" => 58000, "mx" => 50 },
   { "name" => "Kochkunst", "gw" => 55000, "mx" => 80 },
   { "name" => "Lebensenergie", "gw" => 65000, "mx" => 30 },
   { "name" => "Lebenstraining", "gw" => 85000, "mx" => 50 },
   { "name" => "Lerntechnik", "gw" => 35000, "mx" => 50 },
   { "name" => "Magieverlängerung", "gw" => 120000, "mx" => 30 },
   { "name" => "Marktwirtschaft", "gw" => 25000, "mx" => 50 },
   { "name" => "Ölverwaltung", "gw" => 65000, "mx" => 60 },
   { "name" => "Plünderung", "gw" => 93000, "mx" => 30 },
   { "name" => "Reparaturwissen", "gw" => 30000, "mx" => 30 },
   { "name" => "Selbstheilung", "gw" => 80000, "mx" => 80 },
   { "name" => "Stärketraining", "gw" => 75000, "mx" => 50 },
   { "name" => "Überzeugungskraft", "gw" => 85000, "mx" => 50 },
   { "name" => "Waffenkunst", "gw" => 65000, "mx" => 30 },
   { "name" => "Zauberkunst", "gw" => 600000, "mx" => 3 }
];

my $extra = {
    "Schusswaffen" => {
        "head" => "Anwendbarer Bogen",
        "1" => "[[Einfacher Holzbogen]]",
        "2" => "[[Einfacher Eisenbogen]]",
        "3" => "[[Holzarmbrust der Erfahrung]]",
        "4" => "[[Kleine Armbrust des Lebens]]",
        "5" => "[[Armbrust der Seelen]]",
        "6" => "[[Armbrust der Schutzauflösung]]",
        "7" => "[[Armbrust des Donners]]",
        "8" => "[[Armbrust der Präzision]]",
        "9" => "[[Bogen des Lebens]]",
        "10" => "[[Durchschlagende Armbrust]]",
        "11" => "[[Armbrust der starken Schutzauflösung]]",
        "12" => "[[Bogen des starken Lebens]]"
    },

    "Zauberkunst" => {
        "head" => "Anwendbarer Zauber",
        "1" => "-",
        "2" => "[[Effektiver Jerodar-Diebstahlzauber]]",
        "3" => "[[Starker Jerodar-Diebstahlzauber]]"
    },

};

foreach my $cf(@{$cfs})
{
    my $grundwert = $cf->{"gw"};
    my $maxstufe = $cf->{"mx"};
    my $maxlt = ($cf->{"name"} eq "Lerntechnik") ? 0 : 50;
    my $ex = $extra->{$cf->{"name"}};
    my $colspan = (defined($ex) ? 12 : 11);

    open(FILE, ">".lc($cf->{"name"}).".txt");

print FILE <<EOF;
<!-- gw=$grundwert mx=$maxstufe -->
'''Lernzeit pro Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''
{| {{Prettytable}}
|
|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''
|-
!bgcolor=#FFEECB|Stufe
!bgcolor=#FFFFCC|0
EOF

print FILE <<EOF if ($maxlt>0);
!bgcolor=#FFFFCC|5
!bgcolor=#FFFFCC|10
!bgcolor=#FFFFCC|15
!bgcolor=#FFFFCC|20
!bgcolor=#FFFFCC|25
!bgcolor=#FFFFCC|30
!bgcolor=#FFFFCC|35
!bgcolor=#FFFFCC|40
!bgcolor=#FFFFCC|45
!bgcolor=#FFFFCC|50
EOF

print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));

for(my $stufe=1; $stufe<=$maxstufe; $stufe++)
{
    print FILE "|-\n";
    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";
    my $blockfarbe = (($stufe-1)/5)%2;
    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)
    {
        my $lernfaktor = 0.95 ** $lerntech;
        my $sekunden = ($stufe-1) * $grundwert * $lernfaktor;
        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", 
            (($lerntech + $blockfarbe) % 2) ? "" : "FFEECB",
            $sekunden / 86400,
            ($sekunden % 86400) / 3600, 
            ($sekunden % 3600) / 60;
    }
    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));
}


print FILE <<EOF;
|}


'''Gesamtlernzeit bis zur jeweiligen Stufe, abhängig von der Lerntechnik: ''' ''(Angaben in Tagen:Stunden:Minuten)''
{| {{Prettytable}}
|
|colspan="$colspan" align="center" bgcolor=#FFFFCC |'''[[Lerntechnik]]'''
|-
!bgcolor=#FFEECB|Stufe
!bgcolor=#FFFFCC|0
EOF

print FILE <<EOF if ($maxlt>0);
!bgcolor=#FFFFCC|5
!bgcolor=#FFFFCC|10
!bgcolor=#FFFFCC|15
!bgcolor=#FFFFCC|20
!bgcolor=#FFFFCC|25
!bgcolor=#FFFFCC|30
!bgcolor=#FFFFCC|35
!bgcolor=#FFFFCC|40
!bgcolor=#FFFFCC|45
!bgcolor=#FFFFCC|50
EOF
print FILE "!bgcolor=#FFEECB|".$ex->{"head"}."\n" if (defined($ex));

my $step = 1;
$step = 5 if ($maxstufe > 14);
my $zeile = 1;

for(my $stufe=$step; $stufe<=$maxstufe; $stufe+=$step)
{
    print FILE "|-\n";
    print FILE "|bgcolor=#FFFFCC|'''$stufe'''\n";
    my $blockfarbe = (($zeile-1)/5)%2;
    for (my $lerntech = 0; $lerntech <= $maxlt; $lerntech += 5)
    {
        my $lernfaktor = 0.95 ** $lerntech;
        my $sekunden = reihe($stufe-1) * $grundwert * $lernfaktor;
        printf FILE "|bgcolor=#%s|%02d:%02d:%02d\n", 
            (($lerntech + $blockfarbe) % 2) ? "FFEECB" : $blockfarbe,
            $sekunden / 86400,
            ($sekunden % 86400) / 3600, 
            ($sekunden % 3600) / 60;
    }
    print FILE "|bgcolor=#FFFFCC|".$ex->{$stufe}."\n" if (defined($ex));
    $zeile++;
}

print FILE "|}\n";

close FILE;
}

sub reihe
{
    my $z = shift;
    return ($z * ($z + 1) / 2);
}