====== Roll20 General/Macro/Ability Tricks for Pathfinder ======
==== Macro Syntax ====
Offizielle Doku [[https://roll20.zendesk.com/hc/en-us/articles/360037256794-Macros|hier]] (Macros) und [[https://wiki.roll20.net/Dice_Reference|hier]] (Würfel).
Vorweg: Die Roll20 Syntax kann nur rechnen, würfeln und Fragen stellen.
Bedingungen und Schleifen sind nicht möglich.
Generell wird nur in doppelten eckigen Klammern ''[[ ]]'' gerechnet und gewürfelt. Diese können auch verschachtelt werden.
Normale Mathe die geht:
- ''+'' Addition, ''-'' Subtraktion, ''*'' Multiplikation, ''/'' Division, ''%'' Modulo/Rest, ''**'' Exponenzieren
- ''floor()'' Abrunden, ''ceil()'' Aufrunden, ''round()'' Runden, ''abs()'' Absolutwert
Es gibt kein ''max()'' oder ''min()'', dies muss über "Grouped Rolls" behandelt werden.
Aus ''max(a, b)'' wird ''{a, b}kh1'' (**k**eep **h**igher **one**), aus ''min(a, b)'' wird '''{a, b}kl1'' (**k**eep **l**ower **one**).
Attribute können mit ''@{attribute}'' abgerufen werden.
Bedingungen können emuliert werden, indem 1 als wahr und 0 als falsch angesehen wird und man mit den entsprechenden Werten multipliziert:
* Ein ''if @{attr} then VAL'' wäre dann ''[[ VAL * @{attr} ]]''
* Ein ''if @{attr} then T else F'' lässt sich dann so bauen: ''[[ [[{{@{attr},0}>1}*(T - F) + F]] ]]''. ''T'' und ''F'' können selber weitere Ausdrücke sein.
* Negation ist durch ''1 - @{attr}'' machbar.
* Logisches UND durch Multiplikation aller Attribute: ''@{attr1} * @{attr2}''
* Logisches ODER durch Addition aller Attribute und kl1: ''{@{attr1} + @{attr2},1}kl1''
----
Beispiel:
Schadenswürfel ändern sich mit Buffs (z.B. durch [[http://prd.5footstep.de/Expertenregeln/Zauber/StarkerKiefer|Starker Kiefer]] und/oder [[http://prd.5footstep.de/Grundregelwerk/Zauber/Tierwachstum|Tierwachstum]]). Im Folgenden wird angenommen:
- Grundschadenswürfel 1w6
- mit Starker Kiefer: 2w6
- mit Tierwachstum: 1w8
- mit beiden: 3w6
- ''@{knowledge_history_bonus}'' ist 1 wenn Starker Kiefer aktiv ist, sonst 0 (siehe dazu auch [[tutorial:roll20:tricks#Buffs|Buffs]])
- ''@{knowledge_local_bonus}'' ist 1 wenn Tierwachstum aktiv ist, sonst 0
Mit ''if .. then ..'':
[[ {{ @{knowledge_history_bonus},0 }>1 }*([[ 2 + @{knowledge_local_bonus} ]] - 1) + 1]]d[[ {{ 1-@{knowledge_history_bonus},0 }>1 }*([[6 + @{knowledge_local_bonus}*2 ]] - 6) + 6 ]]
Mit Logik:
[[ (@{knowledge_history_bonus} * @{knowledge_local_bonus})*(3) + ((1-@{knowledge_history_bonus}) * @{knowledge_local_bonus})*(1) + (@{knowledge_history_bonus} * (1-@{knowledge_local_bonus}))*(2) + ((1-@{knowledge_history_bonus})*(1-@{knowledge_local_bonus}))*(1) ]]d[[ (@{knowledge_history_bonus} * @{knowledge_local_bonus})*(6) + ((1-@{knowledge_history_bonus}) * @{knowledge_local_bonus})*(8) + (@{knowledge_history_bonus} * (1-@{knowledge_local_bonus}))*(6) + ((1-@{knowledge_history_bonus})*(1-@{knowledge_local_bonus}))*(6) ]]
Dies lässt sich z.B. in einem Attribut speichern und dann immer wieder abrufen und den aktuellen Würfel zu erhalten.
----
Fragen können mit ''?{}'' gestellt werden.
Hier gibt es mehrere Syntaxformen:
- ''?{question}'' Beim ersten Auftreten wird ein leeres Freitextfeld erzeugt dessen Inhalt dann die Frage ersetzt. Diese Syntax wird auch benutzt um auf die Antwort später noch einmal zuzugreifen.
- ''?{question|default}'' Erzeugt ein Freitextfeld welches mit ''default'' gefüllt ist.
- ''?{question|label 1,value 1|label 2, value 2}'' Erzeugt ein Dropdownmenü dessen Optionen aus der angegebenen Liste erzeugt werden.
Beispiele:
* Einen W20 würfeln: ''[[ 1d20 ]]''
* Einen W8 + meine Charakterstufe: ''[[ 1d8 + @{class1_level} ]]''
* Einen W8 + meine Charakterstufe aber maximal 5: ''[[ 1d8 + {@{class1_level}, 5}kl1 ]]''
* Einen Nachkampfangriffs und Schadenswurf:
Angriffswurf: [[ 1d20 + @{class1_bab} + @{strength_mod} ]]
Schaden: [[ 1d8 + @{strength_mod} ]]
* Einen Nachkampfangriffs und Schadenswurf mit Abfrage für [[http://prd.5footstep.de/Grundregelwerk/Talente/HeftigerAngriff|Heftiger Angriff]]:
Angriffswurf: [[ 1d20 + @{class1_bab} + @{strength_mod} - (floor(@{class1_bab}/4) + 1) * ?{Heftig|ja, 1|nein, 0} ]]
Schaden: [[ 1d8 + @{strength_mod} + ((floor(@{class1_bab}/4) + 1) * 2) * ?{Heftig} ]]
Dinge die man wissen sollte:
- ''2 * (1d6)'' würfelt nicht ''2d6'' sondern einen 1d6 und verdoppelt das Ergebnis.
- Division ist keine Integerdivision, es können rationale Zahlen entstehen (''3/2 = 1.5'' und nicht ''1'')!
- Man kann Zahlen Namen geben. Dies ist nützlich da man sonst nicht weiß wie sich die "+ 5 + 1 + 0 - 3" sonst zusammensetzt. Namen werden durch einfache eckige Klammern hinter der Zahl angegeben, z.B.: ''[[ 1d20 + @{strengh_mod}[STR] + 1[MAGISCHEWAFFE] ]]''
==== Zauber ====
Entfernungen:
- ''Nah ([[ 7.5 + 1.5 * floor(@{class1_level}/2) ]] m / [[ floor([[ 7.5 + 1.5 * floor(@{class1_level}/2) ]]/1.5) ]] Felder)''
- ''Mittel ([[ 30 + 3 * @{class1_level} ]] m)''
- ''Lang ([[ 120 + 12 * @{class1_level} ]] m)''
==== Buffs ====
Eine Liste mit fertigen Buffs findet sich [[tutorial:roll20:buffs|hier]].
Buffs sind in Wirklichkeit kein Freitextfeld sondern parsen das was man dort einträgt (siehe [[https://roll20.zendesk.com/hc/en-us/articles/360037773733-Pathfinder-Official|hier]] unter "Buffs")
Beispiel, der Buff [[http://prd.5footstep.de/Grundregelwerk/Zauber/Baerenstaerke|Bärenstärke]]:
+4 enhancement to Strength
Stacking wird automatisch behandelt.
Dies ist allerdings nicht immer gwünscht, z.B. gibt Tierwachstum einen Bonus auf die natürliche RK der explizit mit dem aktuellem stackt.
Dieser Bonus darf also nicht als ''+2 natural to AC'' angegeben werden, sonder muss ungetypt angegeben werden: ''+2 to AC''.
Beispiel für Tierwachstum:
+8 size to Strength
+4 size to Constitution
+(2*@{class1_level}) to hit points
-2 size to Dexterity
# +2 natürlich stacked mit bisherigem
+2 to AC
# local = 1 -> wir haben TW
+1 to knowledge_local_bonus
Buffs können leider gewisse Attribute nicht verändern, z.B. nicht die Größe (und damit auch nicht den Größenmalus/bonus) oder einzelne Angriffe. Entweder Boni auf alle Angriffe einer Kategorie (Meele/Ranged) oder gar nicht.
Dies lässt sich (für Tiergefährten z.B.) umgehen, indem man Boni auf Skills gibt, die man nicht benutzt und diese Boni dann zu einzelnen Angriffen dazurechnet.
Beispiel [[http://prd.5footstep.de/Grundregelwerk/Zauber/MagischeFaenge|Mächtige Magische Fänge]] die nur auf Klauen gelten:
+[[1+floor(@{class1_level}/4)]] to knowledge_arcana_bonus
Hier wird ein Bonus auf Wissen (Arkanes) gegeben. Dieser Bonus kann dann mit ''@{knowledge_arcana_bonus}'' bei dem Klauenangriff dazugerechnet werden.
Tiergefährten haben normalerweise überhaupt keine Wissensfertigkeiten wodurch man hier elf mögliche Variablen erhält.
==== Abilities ====
Im Charakterbogen auf ''Attributes & Abilites'' klicken.
Links ist eine Liste aller mit ''@{}'' abfragbaren Attribute.
Rechts können Abilities erstellen werden, quasi Macros speziell für diesen Charakter.
Beispiel für eine Ability die den umgekehrten Reflexwurf für den Zauber "Blitzkugeln" durchführt:
=== Blitzkugel:
Reflexwurf: [[ 1d20 + 4[GRAD] + @{wisdom_mod}[WIS] ]] (gegen Metallrüstung +4) / keine Wirkung
Schaden: [[ 3d6 ]]
=== Templates ===
Abilities werden bei der Auswertung in den Chat gepostet.
Das sieht potenziell hässlich aus.
Man kann diese "stylen" wenn man ein Template anwendet.
Offizielle Template Doku für Pathfinder ist [[https://roll20.zendesk.com/hc/en-us/articles/360037257814-Pathfinder-Official-Templates|hier]], aber die ist ziemlich uff.
Dinge die man wissen sollte:
- Möchte man exakt einen Angriff visualisieren, dann würfelt man mit ''roll'' den Angriff, macht den Schaden aber mit ''dmg1flag'', ''dmg1'', etc. Erst wenn man mehr als einen Angriff hat, darf man ''rolldmg1'', etc. für den Schaden benutzen. Siehe [[https://app.roll20.net/forum/post/6400044/pathfinder-official-sheet-roll-template-macro-not-showing-damage|hier]].
- Die gesamte Ability muss in eine Zeile wenn ein Template benutzt wird.
Beispiel für den Vollen Angriff einer Katze (Biss und 2 Klauen) mit potentiellen Mächtigen Magischen Fängen auf den Klauen und Abfrage für Heftiger Angriff, einem Wurf auf zu Fall bringen und dem Schadenswurfs des Talents [[http://prd.5footstep.de/Expertenregeln/Talente/Reisskrallen|Reißkrallen]]:
&{template:pc} {{showchar=[[1]]}} {{charname=Luna}} {{name=Voller Angriff}} {{type=attack damage}} {{attack=1}} {{roll=[[ 1d20 + @{melee_mod}[MELEE] - @{_pa_attack_q}[HA]]]}} {{critconfirm=[[ 1d20 + @{melee_mod}[MELEE] - @{_pa_attack}[HA]]]}} {{rolldmg1=[[ @{_bite_dmg_roll} + @{strength_mod}[STR] + [[((floor(@{class1_bab}/4) + 1) * 2) * ?{Heftig}]][HA]]]}} {{rolldmg1type=Biss, Hieb/Wucht/Stich}} {{rolldmg1crit=[[ @{_bite_dmg_roll} + @{_bite_dmg_roll} + 2*(@{strength_mod}[STR] + @{_pa_dmg}[HA])]]}} {{rolldmg2=[[ 1d20 + @{cmb_mod}[CMB] ]]}} {{rolldmg2type=Zu Fall bringen}} {{roll1=[[ 1d20 + @{melee_mod}[MELEE] + @{knowledge_arcana_bonus}[MAGFANGS] - @{_pa_attack}[HA]]]}} {{critconfirm1=[[ 1d20 + @{melee_mod}[MELEE] + @{knowledge_arcana_bonus}[MAGFANGS] - @{_pa_attack}[HA]]]}} {{roll1dmg1=[[ @{_claw_dmg_roll} + @{strength_mod}[STR] + @{knowledge_arcana_bonus}[MAGFANGS] + @{_pa_dmg}[HA]]]}} {{roll1dmg1type=Klaue, Hieb}} {{roll1dmg1crit=[[@{_claw_dmg_roll} + @{_claw_dmg_roll} + 2*(@{strength_mod}[STR] + @{knowledge_arcana_bonus}[MAGFANGS] + @{_pa_dmg}[HA])]]}} {{roll2=[[ 1d20 + @{melee_mod}[MELEE] + @{knowledge_arcana_bonus}[MAGFANGS] - @{_pa_attack}[HA] ]]}} {{critconfirm2=[[ 1d20 + @{melee_mod}[MELEE] + @{knowledge_arcana_bonus}[MAGFANGS] - @{_pa_attack}[HA] ]]}} {{roll2dmg1=[[@{_claw_dmg_roll} + @{strength_mod}[STR] + @{knowledge_arcana_bonus}[MAGFANGS] + @{_pa_dmg}[HA] ]]}} {{roll2dmg1type=Klaue, Hieb}} {{roll2dmg1crit=[[@{_claw_dmg_roll} + @{_claw_dmg_roll} + 2*(@{strength_mod}[STR] + @{knowledge_arcana_bonus}[MAGFANGS] + @{_pa_dmg}[HA])]]}} {{roll2dmg2=[[1d6]]}} {{roll2dmg2type=Reißkrallen}}
Zur besseren Übersicht wurden hier die Schadenswürfel der Angriffe in eigene Attribute ausgelagert (''@{_bite_dmg_roll}'' und ''@{_claw_dmg_roll}'') genauso wie der Heftige Angriff (''@{_pa_attack_q}'' ''@{_pa_attack}'' und ''@{_pa_dmg}'').
Endresultat: {{ :tutorial:roll20:luna_full_atk.png?nolink|}}