Roleplaying Resources

Roleplay Plugin

This Dokuwiki plugin facilitates the creation of web sites for role-playing games.

Every feature uses this syntax:

<roleplay mode="xxxxxx">
data here
</roleplay>

Dice roller

<roleplay mode="dice_roller"/>

Configuration

Configuration is done through a wiki page called roleplay_config, which is in the same namespace as the game turns.

<roleplay mode="config_turns">
game_name: My Amazing Game
turn_idx: index
turn_list: [001-010], name=Turn *num*
turn_list: chapter[1-6], name=Chapter *num*
turn_list: [011-?], name=Turn *num*
book_start: chapter1,011,038,087,101,128,133,154
show_future_events:30
xp_chart:default:1000,3000,6000,10000,15000,21000
xp_chart:scooby:1250,2600
</roleplay>

<roleplay mode="config_events">
type: _none,#FFFFFF
type: _default,#FFFFFF
type: _current_date,#DDFFDD
type: season,#FFFFDD
type: secular,#FFDDFF
type: religious,#FFDDDD
type: lunar,#DDDDFF
</roleplay>

<roleplay mode="config_calendar">
name: Sun
year_len: 364
type: solar
month_len: 36
year_len: 1944
week_len: 9
month: Onemonth, length=100
month: Twomonth, length=100
month: Threemonth, length=100
month: Fourmonth, length=100
</roleplay>

<roleplay mode="config_calendar">
name: Special Moon
month_len: 100
year_len: 400
month: Onemonth, length=100
month: Twomonth, length=100
month: Threemonth, length=100
month: Fourmonth, length=100
new_reference_date: 0-1-1
event: 1/1, Some holiday
event: 2/1, Some other holiday
event: 3/10, An important thing of some kind
event_global: Mondays and Wednesdays are amazing!
phase: full,ns1:ns2:full.png
phase: new,ns1:ns2:1q.png
phase: 1q,ns1:ns2:new.png
phase: 3q,ns1:ns2:3q.png
</roleplay>

<roleplay mode="config_text">
turn_name_default: Chapter *num*
end_note: It is [a *weather* *time*|*weather*|*time*][ on this *day_ord* day of *month*| in the month of *month*][, *year*][, *location*].
</roleplay>
config_turns parameters

game_name: The name of the game. This will appear at the top of every game turn.

turn_idx: The page containing a list of game turns.

turn_list: A list of page names containing turns. This field can contain numeric ranges. The name is what the turn is called in the header, and in wiki links. These pages are sequenced with “next” and “previous” links.

book_start: Use this to divide your game turns into books. In a turn list, turns will be listed in sections.

show_future_events: A number of upcoming in-game events to display at the bottom of the turn.

xp_chart: The number of experience points required to go up in level. The “default” entry applies to all characters. It may be set to “d20” to use the d20 system. Other entries apply to specific characters. This is useful for systems like AD&D, where each character class goes up in level at a different rate.

config_solar parameters

This is the definition of the solar year.

year_len: The number of days in a year. Leap years are not supported.

config_moon parameters

This defines a lunar calendar. There may be multiple moons, each with its own calendar. A summary of the lunar calendars appears at the bottom of each turn.

Game turns

This feature may be used for turns, chapters or character journals. It produces a common layout, and a variety of useful footers.

Example
<roleplay mode="turn_data">
turn: 15
title: Stuff Happens
start: 1001/10/18 12:00
end: 1001/10/19 10:30
played_date: 09/22/2012
posted_date: 10/07/2012
weather: cold
location: New York
author: fred
xp_fred: 1500
xp_velma: 1600:Nice job!
xp_scooby: 1450
</roleplay>

<roleplay mode="turn_start"/>

Content goes here.

<roleplay mode="turn_notes"/>

Footnotes here.

<roleplay mode="turn_end"/>
Parameters

turn: Required. The number of the turn. This references the current page, which, in the above example, should have a name like “015.” To use a non-numeric page name, you can call the turn something like, “chapter2.”

title: Required. The title of the page. This will appear at the top of the page, and will be the page's “abstract” for the purpose of plug-ins and search results.

start: The start date and time of this story fragment, in game time.

end: The end date and time of this story fragment, in game time.

posted_date: The date this page was created, in real time. This date will show up at the top of the page.

played_date: The last date this game fragment was played, in real time. If this is included, the top of the page will show “Played” and “Posted” dates.

weather: The current weather during this game fragment.

location: The location where this game fragment takes place.

author: The person who wrote the turn.

xp_???: Experience points and optional notes for each player character.

Listing game turns

<roleplay mode="turn_list">
base: zioth:turn
list: chapter[1-6],[011-?]
book_start: chapter1,011,038,087,101,128,133,154,169,187
short: false
</roleplay>

<roleplay mode="turn_list">
base: zioth:turn
list: g[01-?]
short: false
</roleplay>

Statistics

<roleplay mode="stats">
base: zioth:turn
list: chapter[1-6],[011-?],g[01-?]
summary: wordcount
</roleplay>

<roleplay mode="stats">
base: zioth:turn
list: chapter[1-6],[011-?],g[01-?]
chart: xp,wordcount,date,start,end,weather
</roleplay>

Class

3rd edition D&D classes or prestige classes.

<roleplay mode="class">
system:D&D3.5
bab:low
fortitude:low
reflex:low
will:high
levels:20
1:Bonus Feat, Learned, Diversification
4:Bonus Feat
8:Bonus Feat
12:Bonus Feat
16:Bonus Feat
20:Bonus Feat
</roleplay>

Calendar

Calendar based on configuration. If the config isn't in the current path, use the “config” parameter.

<roleplay mode="calendar">
config: roleplay:campaign:magewood:recaps:roleplay_config
current: 2575-45-06
type:solar,sun
</roleplay>

Spells

Requires the data plugin. Spells are added to the database, which can be searched using the data plugin.

Spells are laid out in a readable format on the page. Field names are arbitrary.

<roleplay mode="spell">
System: AD&D2
Name: Animal Spirit Focus 
School: Necromancy
Level: Wizard 1
Range: Touch
Components: V,S,M.
Duration: 1 year    
Casting Time: 1d6 turns
Area of Effect: 1 animal skull
Saving Throw: Negates
Author: Icewalker
</roleplay>

Character Sheet

Multiple character sheets:

<roleplay mode="charsheet">
no_default: true
data Ardith: zioth:private:ardith:character_sheet
data Arnell: zioth:private:arnell:character_sheet
</roleplay>

Define one character sheet:

<roleplay mode="charsheet_inline">
function CPlayer()
{
	this.attributes = {
		STR:9, DEX:15, CON:14, INT:18, WIS:7, CHA:10
	};

	this.classSkills = new Set(
		"appraise", "balance", "bluff", "concentration", "climb", "diplomacy", "disable device",
		"escape artist", "gather information", "hide", "jump", "move silently", "open lock",
		"ride", "search", "sleight of hand", "spellcraft", "swim", "tumble",
		"use magic device", "knowledge (arcana)", "knowledge (architecture and engineering)",
		"knowledge (dungeoneering)", "knowledge (geography)", "knowledge (history)",
		"knowledge (local)", "knowledge (nature)", "knowledge (nobility)",
		"knowledge (religion)", "knowledge (planes)", "knowledge (psionics)"
	);

	this.skillRanks = {
		"appraise": 1,
		"balance": 1,
		"bluff": 1,
		"concentration": 5,
		"climb": 1,
		"diplomacy": 6,
		"disable device": 10,
		"escape artist": 1,
		"gather information": 1,
		"hide": 11,
		"jump": 1,
		"move silently": 11,
		"open lock": 11,
		"ride": 1,
		"search": 11,
		"sleight of hand": 1,
		"spellcraft": 6,
		"speak language": 1,
		"swim": 1,
		"tumble": 1,
		"use magic device": 12,
		"knowledge (arcana)": 9,
		"knowledge (local)": 5,
		"knowledge (natural philosophy)": 6,
		"knowledge (religion)": 8
	};

	this.feats = new Set(
		/*1*/ "exotic weapon proficiency (whip)", "weapon finesse",
		/*3*/ "combat expertise",
		/*6*/ "improved trip",
		/*9*/ "improved disarm"
	);

	this.abilities = [
		"Inspiration Points: 5",
		"Trapfinding",
		"Cunning Insight - competence bonus equal to int bonus to attack, damage or save (cost 1 inspiration).",
		"Cunning Knowledge - Add factotum level to a skill with at least one rank 1/day per skill (cost 1 inspiration).",
		"Brains over Brawn - Int modifier to dexterity and strength checks, including initiative (not incorporated into sheet yet).",
		"Cunning Defense - Int bonus to AC vs. one enemy for for 1 round (cost 1 inspiration).",

		"<del>Arcane Dilettante – 4 spells, 3rd level spell maximum. Caster Level 9.</del>",
		"<del>Opportunistic Piety - Heal (Level x 2 + Int. bonus) or turn undead (1 inspiration point), 3/day</del>",
		"Cunning Surge - Extra standard action for 3 inspiration points"
	];


	this.strings = {
		name:          "Corbyn Wren",
		player:        "Brendan Bridgeland",
		race:          "Human",
		level:         9,
		"class":       'Factotum 9',
		hp:            38,
		bab:           6,
		experience:    0,
		save_will:     3,
		save_fortitude:3,
		save_reflex:   6,
		alignment:     "CG",
		languages:     "Rouch, Sarnam, Terradian, Elvan",
		skill_points:  "122",
		age:           "19",
		birthday:      "",
		gender:        "Male",
		size:          "M",
		speed:         30,
		weight:        "130lb",
		height:        "5'7",
		skin:          "white",
		hair:          "straw colored",
		eyes:          "hazel",
		religion:      "Andrithan",
		hp_record:     "8,1,2,6,8,7,3,1,2",
		attr_record:   "STR,INT",
		description:
			"Corbyn is a 19 year old man with straw colored hair (indeed his thick locks greatly resemble a thatched roof upon his brow).  He is quite thin and has rather spindly limbs that are nevertheless quite agile.  Despite his youth, he wears the short robes of a scholar over his breeches and introduces himself as a tutor for hire.  He prefers scarlet cloth for his robes and more pedestrian materials for his trousers. His eyes are hazel and his features unremarkable, giving him a face that is rather forgettable (but fortunately not unpleasant).  He stands about 5'7 but often seems shorter than he is, due to a tendency to slouch when sitting.  His limbs are quite long and his torso is considerably shorter than average.  His boots are of dark leather and generally of quality make. He wears hardened leather armor under his cloak and robes, a habit he says he developed when he had to ride out to various houses each day to offer lessons in several locations.  He carries a knife on his belt and a coiled whip on his left hip - to correct impolite serfs and poor students he offers with a wink.  Following the rather dramatic events in the barony of late, he has also taken to carrying a crossbow and small elm buckler when he leaves his rooms for an extended period - in case the a riot should break or an army invade. His skin is fair, and his hands lack the calloused nature of a working man.  He speaks Rouche without a trace of accent and appears to hale from Rang.  The handle of his whip is emblazoned with the symbol of a raven with one bright blue feather.  While affable enough, he seems inattentive and easily distracted.",
		errors:
			""
	};

	this.equipment = new CContainer("hide", true,
		new CWeapon(
			"equipped", true,
			"name", "light crossbow",
			"attribute", "DEX",
			"damage", "1d8",
			"range", 80,
			"weight", 4+1,
			"dmg_type", "P",
			"size", "M",
			"crit", "19x2",
			"desc", "10 bolts"
		),
		new CWeapon(
			"equipped", true,
			"name", "whip",
			"attribute", "DEX",
			"damage", "1d3-1",
			"range", 0,
			"weight", 2,
			"dmg_type", "S",
			"size", "M",
			"crit", "20x2",
			"desc", "Nonlethal. 15ft reach."
		),
		new CArmor(
			"equipped", true,
			"name", "leather",
			"ac_bonus", 2,
			"max_dex", 22,
			"penalty", 0,
			"spell_failure", "10%",
			"speed_penalty", 0,
			"weight", 15
		),
		new CArmor(
			"equipped", true,
			"name", "masterwork buckler",
			"ac_bonus", 1,
			"max_dex", 100,
			"penalty", 0,
			"spell_failure", "5%",
			"speed_penalty", 0,
			"weight", 5
		),

		new CContainer("type", "standard", "name", "Backpack", "weight", 2,
			new CItem("type", "standard", "name", "Rations", "weight", 5),
			new CItem("type", "standard", "name", "Three scholastic books", "weight", 9),
			new CItem("type", "standard", "name", "Knife", "weight", 1),
			new CItem("type", "clothing", "name", "Scholar's robes", "weight", 4),
			new CItem("type", "special", "name", "Lockpicks", "weight", 1)
		),

		new CContainer("type", "standard", "name", "Small belt pouch", "weight", 1/2,
			// Treasure
			new CItem("type", "treasure", "name", "attles", "number", 20, "weight", 1/150),
			new CItem("type", "treasure", "name", "aglars", "number", 0, "weight", 1/72),
			new CItem("type", "treasure", "name", "diyars", "number", 0, "weight", 1/20)
		),

		new CContainer("name", "stable cache", "ignore_weight", true, "hide", true,
			new CItem("type", "clothing", "name", "Large guard uniform", "number", 1, "weight", 5),
			new CItem("type", "clothing", "name", "Small guard uniform (torn in half)", "number", 1, "weight", 4),
			new CItem("type", "clothing", "name", "Plague Mask (crushed)", "number", 1, "weight", 1)
		),

		new CContainer("name", "body", "ignore_weight", true, "hide", true,
			new CItem("type", "clothing", "name", "Traveler's outfit", "equipped", true, "weight", 4)
		)
	);
}
</roleplay>

New Ideas

TODO: Base off of new charsheet.

<roleplay mode="charsheet_data">
name:  Some Guy
rules: d&d3.5

attributes: STR:9,DEX:15,CON:14,INT:18,WIS:7,CHA:10

class_skills: appraise, balance, bluff, knowledge (arcana)
skill_ranks: appraise: 1
skill_ranks: balance: 5
skill_ranks: bluff: 3

feat: exotic weapon proficiency (whip)
feat: weapon finesse: Use dex instead of str for attacks

ability: Trapfinding
ability: Rage, 3/day: Go into a fit of rage

player:        Real Name
race:          Elf
level:         3
class:         Rogue 2, Fighter 1
base_hp:       9
bab:           2
experience:    0
save_will:     1
save_fortitude:1
save_reflex:   3
alignment:     CG
languages:     Common, Elvan
skill_points:  122
age:           19
birthday:      1/1/1950
gender:        Male
size:          M
speed:         30
weight:        130lb
height:        5'7"
skin:          white
hair:          brown
eyes:          hazel
religion:      Follower of the Googly Eyed Monster
hp_record:     6,1,2
attr_record:   STR
description:   Some Guy has three arms and a nostril.
errors:        It's time to go up to level 4.

; Can define with name=value pairs, or use * to reference an item created out of this block.
equipment: worn: *Light Crossbow
equipment: worn: *Leather Armor
equipment: worn: Robes, weight=4
equipment: worn: backpack, weight=2
equipment: backpack: Rations, number=5, weight=1
equipment: backpack: Three books, weight=9
equipment: backpack: Knife, weight=1
equipment: worn: belt pouch, weight=0.5
equipment: belt pouch: gp, number=50, weight=0.02
</roleplay>

<roleplay mode="charsheet_equipment">
type: weapon,ranged
equipped: true
name: light crossbow
damage: 1d8
range: 80
weight: 5
damage_type: P
size: M
critical: 19x2
description: Crossbow with 10 bolts
</roleplay>

<roleplay mode="charsheet_equipment">
type: armor
equipped: true
name: Leather Armor
ac_bonus: 2
max_dex: 22
penalty: 0
spell_failure: 10%
speed_penalty: 0
weight: 15
</roleplay>