Skip to content

Commit

Permalink
+Metatalente
Browse files Browse the repository at this point in the history
  • Loading branch information
flyx committed Jul 3, 2022
1 parent d5752e6 commit ce6f606
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 31 deletions.
20 changes: 10 additions & 10 deletions heldensoftware-meta.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1237,13 +1237,13 @@
<plus gott="Angrosch">KL|FF|KO|KK|Selbstbeherrschung|Menschenkenntnis|Überzeugen|Gesteinskunde|Hüttenkunde|Mechanik|Rechnen|Schätzen</plus>
<wahl gott="Angrosch" num="4">Baukunst|Bergbau|Feinmechanik|Feuersteinbearbeitung|Glaskunst|Grobschmied|Holzbearbeitung|Kristallzucht|Metallguss|Steinmetz|Steinschneider|Juwelier|Zimmermann</wahl>
<minus gott="Angrosch">Akrobatik|Fliegen|Gaukeleien|Schwimmen|Boote Fahren|Seefahrt</minus>
<plus gott="Aves">IN|CH|GE|KO|Ausweichen|Gefahreninstinkt|Athletik|Klettern|Sinnesschärfe|Gassenwissen|Menschenkenntnis|Überreden|Überzeugen|Orientierung|Wettervorhersage|Wildnisleben|Geographie|Sprachenkunde|Handel|Instrumentenbauer|Musizieren|Kartographie</plus>
<plus gott="Aves">IN|CH|GE|KO|Ausweichen|Gefahreninstinkt|Athletik|Klettern|Sinnenschärfe|Gassenwissen|Menschenkenntnis|Überreden|Überzeugen|Orientierung|Wettervorhersage|Wildnisleben|Geographie|Sprachenkunde|Handel|Instrumentenbauer|Musizieren|Kartographie</plus>
<minus gott="Aves">Kampf (Nah, bewaffnet)|Kriegskunst</minus>
<plus gott="Boron">MU|KL|IN|CH|MR|Prophezeien|Schleichen|Selbstbeherrschung|Lehren|Menschenkenntnis|Überzeugen|Geschichtswissen|Götter/Kulte|Pflanzenkunde|Alchimie|Heilkunde Krankheiten|Heilkunde Seele</plus>
<minus gott="Boron">Gaukeleien|Singen|Stimmen Imitieren|Tanzen|Betören|Schauspielerei|Glücksspiel|Instrumentenbauer|Musizieren</minus>
<plus gott="Efferd">IN|GE|KK|KO|Schwimmen|Sinnesschärfe|Überzeugen|Fesseln/Entfesseln|Fischen/Angeln|Orientierung|Wettervorhersage|Boote Fahren|Seefahrt|Zimmermann</plus>
<plus gott="Efferd">IN|GE|KK|KO|Schwimmen|Sinnenschärfe|Überzeugen|Fesseln/Entfesseln|Fischen/Angeln|Orientierung|Wettervorhersage|Boote Fahren|Seefahrt|Zimmermann</plus>
<minus gott="Efferd">Alchimie|Glaskunst|Grobschmied|Hüttenkunde|Kochen|Metallguss</minus>
<plus gott="Firun">MU|GE|KO|KK|Gefahreninstinkt|Körperbeherrschung|Schleichen|Selbstbeherrschung|Sich Verstecken|Sinnesschärfe|Fährtensuchen|Orientierung|Wettervorhersage|Wildnisleben</plus>
<plus gott="Firun">MU|GE|KO|KK|Gefahreninstinkt|Körperbeherrschung|Schleichen|Selbstbeherrschung|Sich Verstecken|Sinnenschärfe|Fährtensuchen|Orientierung|Wettervorhersage|Wildnisleben</plus>
<wahl gott="Firun">Fernkampftalent</wahl>
<wahl gott="Firun" num="1">Fischen/Angeln|Pflanzenkunde|Tierkunde|Abrichten|Bogenbau|Boote Fahren|Fahrzeug Lenken|Feuersteinbearbeitung|Gerber/Kürschner|Heilkunde Wunden|Holzbearbeitung|Lederarbeiten|Seefahrt|Zimmermann</wahl>
<minus gott="Firun">Gaukeleien|Singen|Tanzen|Falschspiel|Musizieren|Betören|Etikette|Gassenwissen|Menschenkenntnis|Schauspielerei|Schriftlicher Ausdruck|Sich Verkleiden|Überreden|Überzeugen</minus>
Expand All @@ -1252,7 +1252,7 @@
<plus gott="Hesinde">KL|IN|CH|MR|Etikette|Lehren|Menschenkenntnis|Überzeugen|Geschichtswissen|Götter/Kulte|Magiekunde|Pflanzenkunde|Sternkunde|Tierkunde|Alchimie</plus>
<wahl gott="Hesinde">Wissenstalent</wahl>
<minus gott="Hesinde">Zechen|Überreden (Lügen)</minus>
<plus gott="Himmelswölfe">MU|IN|GE|KK|Gefahreninstinkt|Selbstbeherrschung|Sinnesschärfe|Stimmen Imitieren|Lehren|Menschenkenntnis|Fährtensuchen|Orientierung|Wettervorhersage|Wildnisleben|Sagen/Legenden|Abrichten</plus>
<plus gott="Himmelswölfe">MU|IN|GE|KK|Gefahreninstinkt|Selbstbeherrschung|Sinnenschärfe|Stimmen Imitieren|Lehren|Menschenkenntnis|Fährtensuchen|Orientierung|Wettervorhersage|Wildnisleben|Sagen/Legenden|Abrichten</plus>
<minus gott="Himmelswölfe">Falschspiel|Kriegskunst|Gerber/Kürschner</minus>
<plus gott="H'Szint">MU|KL|IN|CH|Lehren|Menschenkenntnis|Überzeugen|Götter/Kulte|Magiekunde|Pflanzenkunde|Rechnen|Sternkunde|Tirekunde</plus>
<wahl gott="H'Szint" num="3">Geschichtswissen|Gesteinskunde|Kryptographie|Alchimie|Heilkunde Gift|Heilkunde Krankheiten|Heilkunde Wunden|Holzbearbeitung|Lederarbeiten|Steinschneider|Juwelier|Töpfern</wahl>
Expand All @@ -1263,9 +1263,9 @@
<plus gott="Ingerimm">MU|FF|KO|KK|Selbstbeherrschung|Lehren|Überzeugen|Gesteinskunde|Hüttenkunde|Mechanik|Rechnen|Schätzen|Bergbau|Steinmetz</plus>
<wahl gott="Ingerimm" num="2">Alchimie|Baukunst|Bogenbau|Feinmechanik|Glaskunst|Grobschmied|Holzbearbeitung|Instrumentenbauer|Maurer|Metallguss|Steinschneider|Juwelier|Zimmermann</wahl>
<minus gott="Ingerimm">Fischen/Angeln|Gaukeleien|Schwimmen|Seefahrt</minus>
<plus gott="Kamaluq">MU|IN|CH|KO|Gefahreninstinkt|Schleichen|Selbstbeherrschung|Sich Verstecken|Sinnesschärfe|Lehren|Menschenkenntnis|Überzeugen|Fährtensuchen|Orientierung|Wettervorhersage|Wildnisleben</plus>
<plus gott="Kamaluq">MU|IN|CH|KO|Gefahreninstinkt|Schleichen|Selbstbeherrschung|Sich Verstecken|Sinnenschärfe|Lehren|Menschenkenntnis|Überzeugen|Fährtensuchen|Orientierung|Wettervorhersage|Wildnisleben</plus>
<minus gott="Kamaluq">Betören|Falschspiel|Überreden (Lügen)|Feinmechanik|Drucker</minus>
<plus gott="Kor">MU|GE|KO|KK|Ausweichen|Infanteriewaffen|Athletik|Körperbeherrschung|Reiten|Selbtbeherrschung|Sinnesschärfe|Menschenkenntnis|Überzeugen|Kriegskunst|Fahrzeug Lenken (Streitwagen)</plus>
<plus gott="Kor">MU|GE|KO|KK|Ausweichen|Infanteriewaffen|Athletik|Körperbeherrschung|Reiten|Selbtbeherrschung|Sinnenschärfe|Menschenkenntnis|Überzeugen|Kriegskunst|Fahrzeug Lenken (Streitwagen)</plus>
<wahl gott="Kor">bewaffnetes Nahkampftalent</wahl>
<minus gott="Kor">Heilkunde Gift|Heilkunde Krankheiten|Heilkunde Wunden|Gefahreninstinkt</minus>
<plus gott="Nandus">KL|IN|CH|FF|Lehren|Menschenkenntnis|Überreden|Überzeugen|Kryptographie|Philosophie|Rechnen|Sternkunde</plus>
Expand All @@ -1278,20 +1278,20 @@
<plus gott="Praios">MU|IN|CH|MR|Selbstbeherrschung|Etikette|Lehren|Menschenkenntnis|Überzeugen|Götter/Kulte|Rechtskunde|Staatskunst</plus>
<wahl gott="Praios" num="4">Abrichten|Baukunst|Brettspiel|Hauswirtschaft|Heilkunde Seele|Heraldik|Magiekunde</wahl>
<minus gott="Praios">Fliegen|Gaukeleien|Schleichen|Sich Verstecken|Stimmen Imitieren|Taschendiebstahl|Überreden (Betteln, Lügen)|Sich Verkleiden|Falschspiel|Schlösser Knacken</minus>
<plus gott="Rahja">MU|IN|CH|GE|Ausweichen|Körperbeherrschung|Reiten|Sinnesschärfe|Zechen|Betören|Lehren|Menschenkenntnis|Überreden|Überzeugen</plus>
<plus gott="Rahja">MU|IN|CH|GE|Ausweichen|Körperbeherrschung|Reiten|Sinnenschärfe|Zechen|Betören|Lehren|Menschenkenntnis|Überreden|Überzeugen</plus>
<wahl gott="Rahja" num="2">Abrichten|Akrobatik|Brauer|Etikette|Gaukeleien|Heilkunde Seele|Musizieren|Schnaps Brennen|Singen|Steinmetz|Steinscheinder/Juwelier|Stoffe Färben|Tanzen|Tätowieren|Winzer</wahl>
<minus gott="Rahja">Kampf (bewaffnet)|Kriegskunst</minus>
<plus gott="Rondra">MU|GE|KO|KK|Athletik|Körperbeherrschung|Reiten|Selbstbeherrschung|Kriegskunst</plus>
<wahl gott="Rondra">zwei bewaffnete Nahkampftalente</wahl>
<wahl gott="Rondra" num="5">Brettspiel|Fahrzeug Lenken|Grobschmied|Heilkunde Wunden|Heraldik|Rechtskunde|Sinnesschärfe|Staatskunst|Überzeugen</wahl>
<wahl gott="Rondra" num="5">Brettspiel|Fahrzeug Lenken|Grobschmied|Heilkunde Wunden|Heraldik|Rechtskunde|Sinnenschärfe|Staatskunst|Überzeugen</wahl>
<minus gott="Rondra">Kampf (Fern)|Schleichen|Sich Verstecken|Sich Verkleiden|Überreden|Bogenbau|Falschspiel</minus>
<plus gott="Swafnir">MU|GE|KO|KK|Körperbeherrschung|Schwimmen|Selbstbeherrschung|Zechen|Lehren|Orientierung|Wettervorhersage|Seefahrt</plus>
<wahl gott="Swafnir" num="1">Raufen|Ringen</wahl>
<wahl gott="Swafnir" num="3">Athletik|Boote Fahren|Fesseln/Entfesseln|Fischen/Angeln|Rechtskunde|Sagen/Legenden|Tierkunde|Zimmermann</wahl>
<minus gott="Swafnir">Überreden (Lügen)|Kryptographie|Magiekunde|Mechanik</minus>
<plus gott="Tairach">MU|CH|KO|KK|Athletik|Selbstbeherrschung|Sinnesschärfe|Lehren|Menschenkenntnis|Überzeugen|Orientierung|Wettervorhersage|Pflanzenkunde|Sagen/Legenden|Tierkunde</plus>
<plus gott="Tairach">MU|CH|KO|KK|Athletik|Selbstbeherrschung|Sinnenschärfe|Lehren|Menschenkenntnis|Überzeugen|Orientierung|Wettervorhersage|Pflanzenkunde|Sagen/Legenden|Tierkunde</plus>
<minus gott="Tairach">Heilkunde Gift|Heilkunde Krankheiten|Heilkunde Seele|Heilkunde Wunden|Überreden (Lügen)</minus>
<plus gott="Travia">MU|IN|CH|FF|Selbstbeherrschung|Sinnesschärfe|Zechen|Lehren|Menschenkenntnis|Überzeugen|Sagen/Legenden|Hauswirtschaft|Helikunde Krankheiten|Heilkunde Seele|Kochen|Viehzucht</plus>
<plus gott="Travia">MU|IN|CH|FF|Selbstbeherrschung|Sinnenschärfe|Zechen|Lehren|Menschenkenntnis|Überzeugen|Sagen/Legenden|Hauswirtschaft|Helikunde Krankheiten|Heilkunde Seele|Kochen|Viehzucht</plus>
<minus gott="Travia">Kampf (Fern)|Schleichen|Taschendiebstahl|Betören|Überreden (Lügen)|Bogenbau|Falschspiel</minus>
<plus gott="Tsa">IN|CH|FF|GE|Sich Verkleiden|Singen|Tanzen|Menschenkenntnis|Überreden|Überzeugen|Philosophie|Sagen/Legenden</plus>
<wahl gott="Tsa" num="4">Abrichten|Brauer|Feinmechanik|Glaskunst|Grobschmied|Holzbearbeitung|Instrumentenbauer|Lehren|Malen/Zeichnen|Maurer|Metallguss|Pflanzenkunde|Schätzen|Schnaps Brennen|Schneidern|Seiler|Steinmetz|Steinschneider/Juwelier|Stellmacher|Stoffe Färben|Tätowieren|Tierkunde|Töpfern|Webkunst|Winzer|Zimmermann|Heilkunde Gift|Heilkunde Krankheiten|Heilkunde Seele|Heilkunde Wunden</wahl>
Expand Down
31 changes: 26 additions & 5 deletions import.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
<xsl:param name="min_kampf" as="xs:integer" select="12"/>
<xsl:param name="min_koerper" as="xs:integer" select="17"/>
<xsl:param name="min_gesellschaft" as="xs:integer" select="10"/>
<xsl:param name="min_natur" as="xs:integer" select="7"/>
<xsl:param name="min_wissen" as="xs:integer" select="17"/>
<xsl:param name="min_natur" as="xs:integer" select="10"/>
<xsl:param name="min_wissen" as="xs:integer" select="16"/>
<xsl:param name="min_sprachen" as="xs:integer" select="10"/>
<xsl:param name="min_handwerk" as="xs:integer" select="15"/>
<xsl:param name="min_handwerk" as="xs:integer" select="13"/>
<xsl:param name="min_waffen_nk" as="xs:integer" select="5"/>
<xsl:param name="min_waffen_fk" as="xs:integer" select="3"/>
<xsl:param name="min_schilde" as="xs:integer" select="2"/>
Expand Down Expand Up @@ -438,7 +438,10 @@ Talente.Koerper {</xsl:text><xsl:apply-templates select="$koerper" mode="koerper
Talente.Gesellschaft {</xsl:text><xsl:apply-templates select="$gesellschaft"/><xsl:text>
}

Talente.Natur {</xsl:text><xsl:apply-templates select="$natur"/><xsl:text>
Talente.Natur {</xsl:text>
<xsl:apply-templates select="$natur"/>
<xsl:apply-templates select="../ausrüstungen" mode="meta"/>
<xsl:text>
}

Talente.Wissen {</xsl:text><xsl:apply-templates select="$wissen"/><xsl:text>
Expand Down Expand Up @@ -583,6 +586,24 @@ Talente.Handwerk {</xsl:text><xsl:apply-templates select="$handwerk"/><xsl:text>
<xsl:apply-templates select="." mode="spezialisierungen"/>
<xsl:text>},</xsl:text>
</xsl:template>

<xsl:template match="ausrüstungen" mode="meta">
<xsl:variable name="jw" select="heldenausruestung[@name='jagtwaffe' and @set='0']"/>
<xsl:if test="$jw and ../talentliste/talent[@name='Tierkunde'] and ../talentliste/talent[@name='Fährtensuchen']">
<xsl:text>
Meta {"Pirschjagd", "MU", "IN", "GE", {"Wildnisleben", "Tierkunde", "Fährtensuchen", "Schleichen", </xsl:text>
<xsl:variable name="ha" select="heldenausruestung[@name=concat('fkwaffe', $jw/@nummer) and @set='0']"/>
<xsl:value-of select="concat('&quot;', $ha/@talent, '&quot;')"/>
<xsl:text>}},</xsl:text>
<xsl:text>
Meta {"Ansitzjagd", "MU", "IN", "GE", {"Wildnisleben", "Tierkunde", "Fährtensuchen", "Sich Verstecken", </xsl:text>
<xsl:value-of select="concat('&quot;', $ha/@talent, '&quot;')"/>
<xsl:text>}},</xsl:text>
</xsl:if>
<xsl:if test="../talentliste/talent[@name='Pflanzenkunde']">
Meta {"Nahrung Sammeln / Kräuter Suchen", "MU", "IN", "FF", {"Wildnisleben", "Sinnenschärfe", "Pflanzenkunde"}},
</xsl:if>
</xsl:template>

<xsl:template match="talent" mode="sprachen-schriften">
<xsl:param name="kind" select="'Sprache'"/>
Expand Down Expand Up @@ -944,7 +965,7 @@ SF.Magisch {
<xsl:value-of select="dsa:stringVal($meta/@tp)"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>{}</xsl:text>
<xsl:text>""</xsl:text>
</xsl:otherwise>
</xsl:choose>
</func:result>
Expand Down
12 changes: 8 additions & 4 deletions src/schema.lua
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,10 @@ function schema.Layout.example(printer)
Kampf(13),
Koerper(17),
Gesellschaft(9),
Natur(7),
Wissen(17),
Natur(10),
Wissen(16),
SprachenUndSchriften(10),
Handwerk(15)
Handwerk(13)
},
Kampfbogen {},
Ausruestungsbogen {},
Expand Down Expand Up @@ -319,6 +319,10 @@ d.Row:def({name = "KoerperTalent", description = "Ein Talent aus der Gruppe der
{"Name", String}, {"Probe1", BasisEig, ""}, {"Probe2", BasisEig, ""}, {"Probe3", BasisEig, ""}, {"BE", Behinderung, ""}, {"TaW", OptNum, {}}, {"Spezialisierungen", Spezialisierungen, {}})
d.Row:def({name = "Talent", description = "Ein allgemeines Talent."},
{"Name", String}, {"Probe1", BasisEig, ""}, {"Probe2", BasisEig, ""}, {"Probe3", BasisEig, ""}, {"TaW", OptNum, {}}, {"Spezialisierungen", Spezialisierungen, {}})
d.List:def({name = "Talentreferenzen", description = "Liste von Talenten (referenziert über deren Namen), aus denen sich ein Metatalent zusammensetzt"}, {String})
d.Row:def({name = "Meta", description = "Ein Metatalent."},
{"Name", String}, {"Probe1", BasisEig, ""}, {"Probe2", BasisEig, ""}, {"Probe3", BasisEig, ""},
{"Talente", schema.Talentreferenzen, {}})

d.List:def({name = "Familie", description = "Liste von Sprachen oder Schriften in einer Familie."}, {String})
d.Row:def({name = "Muttersprache", description = "Die Muttersprache des Helden. Anders als andere Sprachen definiert eine Muttersprache Listen der verwandten Sprachen und Schriften, welche nicht ausgegeben werden, sondern nur zur Berechnung der Steigerungsschwierigkeit anderer Sprachen und Schriften dienen."},
Expand Down Expand Up @@ -358,7 +362,7 @@ schema.Talente = {
{"Menschenkenntnis", "KL", "IN", "CH"},
{"Überreden", "MU", "IN", "CH"},
},
Natur = d:singleton(d.List, {name = "Talente.Natur", description = "Liste von Naturtalenten."}, {schema.Talent}) {
Natur = d:singleton(d.List, {name = "Talente.Natur", description = "Liste von Naturtalenten und Metatalenten.", item_name = "NaturTalent"}, {schema.Talent, schema.Meta}) {
{"Fährtensuchen", "KL", "IN", "IN"},
{"Orientierung", "KL", "IN", "IN"},
{"Wildnisleben", "IN", "GE", "KO"},
Expand Down
14 changes: 2 additions & 12 deletions src/schemadef.lua
Original file line number Diff line number Diff line change
Expand Up @@ -504,21 +504,11 @@ end

function d.List:append(v, sort)
local mt = getmetatable(v)
if (mt == nil or mt == string_metatable) and #self.items == 1 then
if mt == nil or mt == string_metatable then
v = self.items[1](v)
mt = getmetatable(v)
end
if mt == nil or mt == string_metatable then
local e = "("
for i,t in ipairs(self.items) do
if i > 1 then
e = e .. ","
end
e = e .. t.name
end
e = e .. ')'
return string.format("unerlaubter Wert ohne Typ. erlaubt sind: %s", e)
elseif mt == d.Poison then
if mt == d.Poison then
return
end

Expand Down
33 changes: 33 additions & 0 deletions src/talentbogen.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
local schema = require("schema")
local data = require("data")
local common = require("common")

local talent = {}

Expand All @@ -19,6 +20,8 @@ function talent.render(value)
talent.sprache(value, "")
elseif mt.name == "Schrift" then
talent.schrift(value)
elseif mt.name == "Meta" then
talent.meta(value)
else
talent.sonstige(value)
end
Expand Down Expand Up @@ -158,6 +161,36 @@ function talent.schrift(v, mod)
end
end

function talent.meta(v)
tex.sprint([[& \hspace{-8pt}\faShapes{} ]])
tex.sprint(-2, v[1])
tex.sprint(" & ")
for i=2,4 do
tex.sprint(-2, v[i])
tex.sprint(" & ")
end
local sum = 0
for _, tn in ipairs(v[5]) do
for _, g in ipairs({"Gaben", "Kampf", "Koerper", "Gesellschaft", "Natur", "Wissen", "SprachenUndSchriften", "Handwerk"}) do
for _, t in ipairs(data.Talente[g]) do
if t.Name == tn then
if type(t.TaW) == "number" and sum ~= nil then
sum = sum + t.TaW
else
sum = nil
end
goto found
end
end
end
tex.error("[Naturtalente] Metatalent '" .. v[1] .. "' referenziert unbekanntes Talent '" .. tn .. "'")
::found::
end
if sum ~= nil and #v[5] > 0 then
tex.sprint(-2, common.round(sum / #v[5]))
end
end

function talent.sonstige(v)
for i=1,5 do
tex.sprint(" & ")
Expand Down

0 comments on commit ce6f606

Please sign in to comment.