Roll20 General/Macro/Ability Tricks for Pathfinder
Macro Syntax
Offizielle Doku hier (Macros) und 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,**
Exponenzierenfloor()
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
(keep higher one), aus min(a, b)
wird '{a, b}kl1
(keep lower 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
undF
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 Starker Kiefer und/oder 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 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 mitdefault
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 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 nicht2d6
sondern einen 1d6 und verdoppelt das Ergebnis.- Division ist keine Integerdivision, es können rationale Zahlen entstehen (
3/2 = 1.5
und nicht1
)! - 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 hier.
Buffs sind in Wirklichkeit kein Freitextfeld sondern parsen das was man dort einträgt (siehe hier unter “Buffs”)
Beispiel, der Buff 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 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 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 mitdmg1flag
,dmg1
, etc. Erst wenn man mehr als einen Angriff hat, darf manrolldmg1
, etc. für den Schaden benutzen. Siehe 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 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: