Mekkis |
Occasionally, people are trying to explain things visually, and on these forums, they resort to using ascii-art.
For instance, when describing Alice being flanked by Bob and Charlie (with a reach weapon, on a diagonal), they might post something like:
.C....
......
...A..
....B.
Yuck.
In addition, some coders amoung us might want to display how they generated some data, like:
import pandas as pd
import numpy as np
# For each attack routine, define each attack bonus, normal damage, and crit damage
# Level 1 character with 18 Str and Power Attack
Bonus = 5
DiceDamage = 6.5
BonusDamage = 4
PowerAttack18Str = [[Bonus, (DiceDamage*2)+BonusDamage, (DiceDamage*3)+2*BonusDamage], [Bonus-5, DiceDamage+BonusDamage, (DiceDamage*2)+BonusDamage]]
Bonus = 5
DiceDamage = 6.5
BonusDamage = 4
Str18 = [[Bonus, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2],[Bonus-5, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2],[Bonus-10, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2]]
# Level 1 character with 18 Dex and 12 Str, attacking three times with a 1d6 agile deadly weapon with an attack bonus of 1.5xDex
Bonus = 7
DiceDamage = 3.5
BonusDamage = 2
BonusCritDamage = 5.5
DexNimbleDeadly = [[Bonus, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2+BonusCritDamage], [Bonus-4, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2+BonusCritDamage], [Bonus-8, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2+BonusCritDamage]]
Routines = [PowerAttack18Str, Str18, DexNimbleDeadly]
ACs = range(10,26)
Damage = np.zeros((len(ACs),len(Routines)))
Crits = np.zeros((len(ACs),len(Routines)))
Hits = np.zeros((len(ACs),len(Routines)))
Fumbles = np.zeros((len(ACs),len(Routines)))
index = 0
for routine in Routines:
RoutineDamage = np.zeros((20,len(ACs)))
RoutineCrits = np.zeros((20,len(ACs)))
RoutineHits = np.zeros((20,len(ACs)))
RoutineFumbles = np.zeros((20,len(ACs)))
for attack in routine:
AttackDamage = np.zeros((20,len(ACs)))
AttackCrits = np.zeros((20,len(ACs)))
AttackHits = np.zeros((20,len(ACs)))
AttackFumbles = np.zeros((20,len(ACs)))
for roll in range(1,21):
for AC in ACs:
Result = roll + attack[0]
if (Result >= AC+10) or (roll==20):
AttackDamage[roll-1,AC-ACs[0]] = attack[2]
AttackCrits[roll-1,AC-ACs[0]] = 1
elif Result >= AC:
AttackDamage[roll-1,AC-ACs[0]] = attack[1]
AttackHits[roll-1,AC-ACs[0]] = 1
elif Result <= AC-10:
AttackFumbles[roll-1,AC-ACs[0]] = 1
RoutineDamage = RoutineDamage + AttackDamage
RoutineCrits = RoutineCrits + AttackCrits
RoutineHits = RoutineHits + AttackHits
RoutineFumbles = RoutineFumbles + AttackFumbles
Damage[:,index] = np.sum(RoutineDamage, axis=0)/20
Crits[:,index] = np.sum(RoutineCrits, axis=0)/20
Hits[:,index] = np.sum(RoutineHits, axis=0)/20
Fumbles[:,index] = np.sum(RoutineFumbles, axis=0)/20
index = index+1
np.savetxt("Damage.csv", Damage, delimiter=",")
np.savetxt("Crits.csv", Crits, delimiter=",")
np.savetxt("Hits.csv", Hits, delimiter=",")
np.savetxt("Fumbles.csv", Fumbles, delimiter=",")
Note how difficult to read this is. It also might not copy properly because python is white-space aware.
Can you throw us nerds a bone and give us a [code], [verbatim] or [fixed-width] tag?
Oladon |
Hey Mekkis,
Just so you know, you can do this with my Paizo Forum Tools browser extension. Among its features is the addition of support for [code], [color], and [u]nderline.