[DSA Manager] DSAdmin Datenstruktur
Status: Planning
Brought to you by:
alexnofftz
From: Oliver S. <da...@we...> - 2001-11-13 17:42:39
|
Hi Leute! Mit einiger Verzögerung hier endlich die Struktur, die wir für DSAdmin geplant hatten. Ich hab einiges angespaßt, um mich an der Diskussion hier zu orientieren und Alex Vorschlag mit den universellen Files übernommen. kann sein, daß durch die Änderungen Inkonsistenzen reingekommen sind, einfach ignorieren :-). Die Struktur ist komplett internationalisiert (bis auf zwei oder drei Dinge), um den Gerüchten um ein englisches Myranor und Aventurien Rechnung zu tragen. Da besteht sicherlich Diskussionsbedarf. Einige Übersetzungen (einfach erstmal so gewählt): AV = Attribute Value SkV = Skill Value (TaW) Kurze Erläuterung zum Skipting: talent('swords').SkV.base spricht z.B. den Basiswert des Schwerter-TaW an, talent('swords').SkV ist eine Abkürzung für talent('swords').SkV.effective. Attribut-Effektivwerte können statt mit attribute('MU').AV.effective auch mit MU angesprochen werden, usw. Modifikatoren, Änderungen, usw. werden grundsätzlich über <action on="TRIGGER" do="EXPRESSION"/> gehandhabt. Dabei ist TRIGGER "once" für einmal (z.B. für feste Änderungen), "calc" für Berechnung von Effektivwerten. Denkbar sind auch Auslöser wie "bei Stufenanstieg" (wer weiß, was so an Regeln noch kommt ...). Das Skripting ist recht heftig geworden. Ich denke, so in der Art können wir tatsächlich auch die wildesten Regeln umsetzen. Die Implementierung wird allerdings nicht unaufwendig. Vielleicht sollte man aber auch für einfache Modifikatoren neben <action> noch ein simpler gestaltetes <mod> vorsehen. Here we go: Die Regeln ---------------------- <dsa xmlns="http://dsaman.sf.net/dsa-4.0"> <attributes> <base-attributes> <attribute id="MU"> <name xml:lang="de">Mut</name> <short-name xml:lang="de">MU</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="KL"> <name xml:lang="de">Klugheit</name> <short-name xml:lang="de">KL</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="IN"> <name xml:lang="de">Intuition</name> <short-name xml:lang="de">IN</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="CH"> <name xml:lang="de">Charisma</name> <short-name xml:lang="de">CH</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="FF"> <name xml:lang="de">Fingerfertigkeit</name> <short-name xml:lang="de">FF</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="GE"> <name xml:lang="de">Gewandtheit</name> <short-name xml:lang="de">GE</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="KK"> <name xml:lang="de">KK</name> <short-name xml:lang="de">Körperkraft</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> <attribute id="KO"> <name xml:lang="de">KO</name> <short-name xml:lang="de">Konstitution</short-name> <AV base="0" base-min="8" base-max="gen ? 14 : 21"/> </attribute> </base-attributes> <derived-attributes> <attribute id="LE"> <name xml:lang="de">Lebensenergie</name> <short-name xml:lang="de">LE</short-name> <AV base="0" base-max="floor(KO/2)" add="ceil((KO+KO+KK)/2)" cost="..."/> </attribute> <attribute id="AU"> <name xml:lang="de">Ausdauer</name> <short-name xml:lang="de">AU</short-name> <AV base="0" base-max="KO*2" add="ceil((MU+KO+GE)/2)" cost="..."/> </attribute> <attribute id="MR"> <name xml:lang="de">Magieresistenz</name> <short-name xml:lang="de"></short-name> <AV base="0" add="round((MU+KL+KO)/5)"/> </attribute> <attribute id="AE"> <name xml:lang="de">Astralenergie</name> <short-name xml:lang="de">AE</short-name> <AV base="0" base-max="CH" add="ceil((MU+IN+CH)/2)" cost="..."/> </attribute> </derived-attributes> <level-attributes> <attribute id="AP"> <name xml:lang="de">Abenteuerpunkte</name> <short-name xml:lang="de">AP</short-name> </attribute> <attribute id="AP_REST"> <name xml:lang="de">AP-Guthaben</name> <short-name xml:lang="de">AP_REST</short-name> </attribute> <attribute id="ST"> <name xml:lang="de">Stufe</name> <short-name xml:lang="de">ST</short-name> <AV base="1" cost="100*(ST+1)"/> </attribute> <attribute id="SO"> <name xml:lang="de">Sozialstatus</name> <short-name xml:lang="de">SO</short-name> <AV base="0" base-min="1"/> </attribute> </level-attributes> <combat-attributes> <attribute id="AT_BASE"> <name xml:lang="de">Attacke-Basiswert</name> <short-name xml:lang="de">AT-Basis</short-name> <AV base="0" add="round((MU+GE+KK)/5)"/> </attribute> <attribute id="PA_BASE"> <name xml:lang="de">Parade-Basiswert</name> <short-name xml:lang="de">PA-Basis</short-name> <AV base="0" add="round((IN+GE+KK)/5)"/> </attribute> <attribute id="FK_BASE"> <name xml:lang="de">Fernkampf-Basiswert</name> <short-name xml:lang="de">FK-Basis</short-name> <AV base="0" add="round((IN+FF+KK)/5)"/> </attribute> <attribute id="INI_BASE"> <name xml:lang="de">Initiative-Basiswert</name> <short-name xml:lang="de">Ini-Basis</short-name> <AV base="0" add="round((MU+MU+IN+GE)/2)"/> </attribute> <attribute id="BE"> <name xml:lang="de">Behinderung</name> <short-name xml:lang="de">BE</short-name> <AV base="0"/> </attribute> </combat-attributes> </attributes> <advantages> <advantage id="lucky" cost="15"> <name xml:lang="de">Glück</name> <description xml:lang="de"> <p> Ein Held, an dem sprichwörtlich das Glück klebt, bla, bla, ... </p> </description> <short-description xml:lang="de"> <p> Bis 3-mal am Tag eine Probe <emph>einmal</emph> wiederholen und günstigeres Ergebnis wählen.</p> </short-description> </advantage> <advantage id="gifted-skill" specialisation="required" cost="oh shit!"> <name xml:lang="de">Begabung für Talent</name> <prerequisite expr="not Advantage('gifted-skill-group')"/> <action on="once" do="Talent(spec).TaW.base += 1"/> <action on="once" do="Talent(spec).TaW.cost_factor -= 1"/> </advantage> <advantage id="gifted-skill-group" specialisation="required" cost="ohshit!"> <name xml:lang="de">Begabung für Talentgruppe</name> <prerequisite expr="not Advantage('gifted-skill')"/> <action on="once" do="this will be complicated ..."/> </advantage> <advantage id="special-possession" specialisation="required" cost="12"> <name xml:lang="de">Besonderer Besitz</name> </advantage> <advantage id="high-spell-resistance" cost="choose([5,10,15])"> <name xml:lang="de">Hohe Magieresistenz</name> <action on="once" do="Attribute(MR).AV += cost/5"/> </advantage> </advantages> <disadvantages> ... </disadvantages> <races> <race id="human"> <action on="calc" do="..."/> ... <culture id="mittelreich"/> <culture id="..."/> </race> </races> <skills> <skill-category id="combat-skills"> <name xml:lang="de">Kampftalente</name> <skill-category id="armed-combat"> <name xml:lang="de">Bewaffneter Nahkampf</name> <skill id="swords"> <name xml:lang="de">Schwerter</name> <SkV base="0" cost-table="5"/> <eBE base="BE-2"/> <similar to="sabers"/> <similar to="fencing"/> <similar to="blunt-weapons"/> </skill> </skill-category> </skill-category> <skill-category id="special-skills"> <name xml:lang="de">Sonderfertigkeiten</name> <skill id="armor-tolerance-1" cost="150" specialisation="required" spec-type="armor" > <name xml:lang="de">Rüstungsgewöhnung I</name> <action on="calc" do="! skill(armor-tolerance-2) ? armor(spec).BE -= 1" /> </skill> <skill id="armor-tolerance-2" cost="profession_class('fighter') ? 150 : 300" > <name xml:lang="de">Rüstungsgewöhnung II</name> <prerequisite expr="skill('armor-tolerance-1')" <action on="calc" do="BE -= 1"/> </skill> </skill-category> </skills> <professions> <profession id="mercenary" cost="10"> <name xml:lang="de">Söldner</name> <action on="once" do="talent('athletics').SkV.base += 2"/> <action on="once" do="talent('climbing').SkV.base += 1"/> ... <action on="once" do="skills.add('armor-tolerance-1')"/> </profession> </professions> </dsa> Ein Charakter (skizzenhaft): ---------------------------- <?xml-stylesheet type="text/xsl" href="character2xhtml.xsl"?> <charakter xmlns="http://www.lowangen.de/dsa-4.0" age="21" size="90" weight="80" > <name xml:lang="de">Alrik</name> <race id="human"/> <culture id="mittelreich"/> <description> Alrik ist ... bla, bla </description> <standing id="common"/> <siblings xml:lang="de">Alrik hat keine Geschwister</siblings> <attributes> <base-attributes> <attribute id="MU"><AV base="9" effective="9"/></attribute> ... </base-attributes> <derived-attributes> ... </derived-attributes> <level-attributes> <attribute id="ST"><AV base="1"/></attribute> ... </level-attributes> <combat-attributes> <attribute id="AT_BASE"> <name xml:lang="de">Attacke-Basiswert</name> <short-name xml:lang="de">AT-Basis</short-name> <AV effective="8"/> </attribute> <attribute id="PA_BASE"> <name xml:lang="de">Parade-Basiswert</name> <short-name xml:lang="de">PA-Basis</short-name> <AV effective="8"/> </attribute> ... </combat-attributes> </attributes> <professions> <profession id="mercenary" veteran="false" cost="10"/> </professions> <advantages> <advantage id="USER-ADVANTAGE-2f394e7a829" cost="10"> <name xml:lang>Schwertmeister</name> <action on="calc" do="skill('swords').AT += 1"/> <action on="calc" do="skill('swords').PA += 2"/> </advantage> <advantage id="lucky"/> </advantages> <skills> <skill id="swords"> <SkV base="4" effective="4"/> <AT base="13" effective="14"/> <PA base="11" effective="13"/> </skill> <skill id="armor-tolerance-1" spec="plate-armor" > </skill> </skills> <spells> </spells> <notes> </notes> ... </charakter> |