# HG changeset patch # User sirebral # Date 1272875354 18000 # Node ID b29454610f36663dad8506ab3935878e0acddaa6 # Parent bb7b9648792cd817ac50651ed7616886c81b56e6 Traipse Beta 'OpenRPG' {100503-00} Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to the code. 'Ornery-Orc's main goal is to offer more advanced features and enhance the productivity of the user. Update Summary (Patch-2) Moved to Stable! New Features: New Namespace method with two new syntaxes New Namespace Internal is context sensitive, always! New Namespace External is 'as narrow as you make it' New Namespace FutureCheck helps ensure you don't receive an incorrect node New Namespace 2.0 documentation in the User Manual New Namespace plugin, Allows Traipse users to use the Standard syntax !@ :: @! New Mini Library with minis from Devin Knight New PluginDB access for URL2Link plugin New to Forms, they now show their content in Design Mode New to Update Manager, checks Repo for updates on software start New to Mini Lib node, change title in design mode New to Game Tree, never lose a node, appends a number to the end of corrupted trees New to Server GUI, Traipse Suite's Debug Console New Warhammer PC Sheet Updates: Update to White Board layer, uses a pencil image for color button Update to Grid Layer, uses a grid image for color button Update to Chat Window, size of drop down menus Update to default lobby message Update to template Text node Update to 4e PC Sheet node Update to how display names are acquired Update to Server, added some 'Pious' technology Update to features node Fixes: Fix to Server GUI startup errors Fix to Server GUI Rooms tab updating Fix to Chat and Settings if non existant die roller is picked Fix to Dieroller and .open() used with .vs(). Successes are correctly calculated Fix to Alias Lib's Export to Tree, Open, Save features Fix to alias node, now works properly Fix to Splitter node, minor GUI cleanup Fix to Backgrounds not loading through remote loader Fix to Node name errors Fix to rolling dice in chat Whispers Fix to Splitters Sizing issues Fix to URL2Link plugin, modified regex compilation should remove memory leak Fix to mapy.py, a roll back due to zoomed grid issues Fix to whiteboard_handler, Circles work by you clicking the center of the circle Fix to Servers parse_incoming_dom which was outdated and did not respect XML Fix to a broken link in the server welcome message Fix to InterParse and logger requiring traceback Fix to Update Manager Status Bar Fix to failed image and erroneous pop up Fix to Mini Lib node that was preventing use Fix to plugins that parce dice but did not call InterParse Fix to nodes for name changing by double click Fix to Game Tree, node ordering on drag and drop corrected Fix to Game Tree, corrupted error message was not showing Fix to Update Manager, checks for internet connection Fix to Update Manager, Auto Update corrections Fix to Server GUI's broadcast, room, player messaging diff -r bb7b9648792c -r b29454610f36 data/tips.txt --- a/data/tips.txt Sun May 02 16:30:28 2010 -0500 +++ b/data/tips.txt Mon May 03 03:29:14 2010 -0500 @@ -43,3 +43,6 @@ You can search your chat session by opening the text view of it (click the button to the right of the dice). Type in the search term and hit "find". The map has a tape measure. Hold down SHIFT and drag with the left mouse button down. + +Traipse's Namespace 2.0 offers much more control over your gametree references. With the Standard Namespace plugin you can play with your friends who use the older model + diff -r bb7b9648792c -r b29454610f36 images/draw.png Binary file images/draw.png has changed diff -r bb7b9648792c -r b29454610f36 images/grid.png Binary file images/grid.png has changed diff -r bb7b9648792c -r b29454610f36 orpg/chat/chatwnd.py --- a/orpg/chat/chatwnd.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/chat/chatwnd.py Mon May 03 03:29:14 2010 -0500 @@ -1371,8 +1371,7 @@ alias = msg.get_alias() # who sent us the message? if alias: display_name = self.chat_display_name([alias, player[1], player[2]]) - elif player: display_name = self.chat_display_name(player) - else: display_name = "Server Administrator" + else: display_name = self.chat_display_name(player) ######### START plugin_incoming_msg() ########### for plugin_fname in self.activeplugins.keys(): @@ -1595,10 +1594,10 @@ # This subroutine builds a chat display name. # def chat_display_name(self, player): - if self.settings.get_setting("ShowIDInChat") == "0": - display_name = player[0] - else: - display_name = "("+player[2]+") " + player[0] + if player == None: + player = ['Server Administrator-> ', '127.0.0.1', '0'] + if self.settings.get_setting("ShowIDInChat") == "0": display_name = player[0] + else: display_name = "("+player[2]+") " + player[0] return display_name # This subroutine will get a hex color and return it, or return nothing diff -r bb7b9648792c -r b29454610f36 orpg/main.py --- a/orpg/main.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/main.py Mon May 03 03:29:14 2010 -0500 @@ -929,10 +929,9 @@ etreeEl = Element('msg') try: etreeEl.append(fromstring(data)) except: etreeEl.text = data - if player: display_name = self.chat.chat_display_name(player) - else: display_name = "Server Administrator" - if etreeEl.text: self.chat.Post(etreeEl.text) + display_name = self.chat.chat_display_name(player) + if etreeEl.text:self.chat.Post(display_name+etreeEl.text) for child in etreeEl.getchildren(): if child.tag == 'tree': diff -r bb7b9648792c -r b29454610f36 orpg/mapper/grid_handler.py --- a/orpg/mapper/grid_handler.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/mapper/grid_handler.py Mon May 03 03:29:14 2010 -0500 @@ -40,13 +40,11 @@ self.grid_snap = wx.CheckBox(self, wx.ID_ANY, " Snap") self.grid_size = wx.TextCtrl(self, wx.ID_ANY, size=(32,-1) ) self.grid_ratio = wx.TextCtrl(self, wx.ID_ANY, size=(32,-1) ) - #self.color_button = wx.Button(self, wx.ID_ANY, "Color", style=wx.BU_EXACTFIT) - self.color_button = createMaskedButton(self, dir_struct["icon"]+'grid.gif', + self.color_button = createMaskedButton(self, dir_struct["icon"]+'grid.png', 'Grid Color', wx.ID_ANY, '#bdbdbd', - wx.BITMAP_TYPE_GIF) + wx.BITMAP_TYPE_PNG) self.apply_button = wx.Button(self, wx.ID_OK, "Apply", style=wx.BU_EXACTFIT) self.color_button.SetBackgroundColour(wx.BLACK) - self.color_button.SetForegroundColour(wx.WHITE) self.sizer.Add(wx.StaticText(self, -1, "Size: "), 0, wx.ALIGN_CENTER) self.sizer.Add(self.grid_size, 0, wx.ALIGN_CENTER) self.sizer.Add((6,0)) diff -r bb7b9648792c -r b29454610f36 orpg/mapper/whiteboard_handler.py --- a/orpg/mapper/whiteboard_handler.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/mapper/whiteboard_handler.py Mon May 03 03:29:14 2010 -0500 @@ -57,9 +57,9 @@ def build_ctrls(self): base_layer_handler.build_ctrls(self) - self.color_button = createMaskedButton(self, dir_struct["icon"]+'draw.gif', + self.color_button = createMaskedButton(self, dir_struct["icon"]+'draw.png', 'Pen Color', wx.ID_ANY, '#bdbdbd', - wx.BITMAP_TYPE_GIF) + wx.BITMAP_TYPE_PNG) self.color_button.SetBackgroundColour(wx.BLACK) self.color_button.SetForegroundColour(wx.WHITE) self.drawmode_ctrl = wx.Choice(self, wx.ID_ANY, choices = ["Freeform", "Polyline","Text", "Cone", "Circle"]) diff -r bb7b9648792c -r b29454610f36 orpg/networking/mplay_server.py --- a/orpg/networking/mplay_server.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/networking/mplay_server.py Mon May 03 03:29:14 2010 -0500 @@ -890,8 +890,14 @@ print "'help' or '?' or 'h' - for this help message" print - def broadcast(self,msg): - self.send_to_all("0","" + msg + "") + def broadcast(self, msg): + broadcast = '' +msg+ '' + chat = Element('chat') + chat.set('type', '1') + chat.set('version', '1.0') + chat.text = broadcast + msg = self.buildMsg('all', '0', '1', tostring(chat)) + self.send_to_all('0', msg) def console_log(self): if self.log_to_console == 1: @@ -1118,8 +1124,8 @@ bad_xml_string += "Please report this bug to the development team at:
" bad_xml_string += "Traipse-Dev " bad_xml_string += "(http://www.assembla.com/spaces/traipse_dev/tickets/)
" - self.sendMsg( newsock, "" +bad_xml_string, - new_stub.useCompression, new_stub.compressionType) + msg = self.buildMsg(props['id'], props['id'], '0', bad_xml_string) + self.sendMsg( newsock, msg, new_stub.useCompression, new_stub.compressionType) time.sleep(2) newsock.close() @@ -1224,7 +1230,6 @@ newsock.close() # Display the lobby message - print 'lobby message' self.SendLobbyMessage(newsock, props['id']) def checkClientVersion(self, clientversion): @@ -1897,21 +1902,27 @@ self.players[from_id].self_message('The lobby map may not be altered.') elif to_id.lower() == 'all': #valid map for all players that is not the lobby. - self.send_to_group(from_id,group_id,data) - self.groups[group_id].game_map.init_from_xml(data) + msg = self.buildMsg('all', from_id, group_id, data) + self.send_to_group(from_id,group_id,msg) + self.groups[group_id].game_map.init_from_xml(msg) else: #attempting to send map to specific individuals which is not supported. self.players[from_id].self_message('Invalid map message. Message not sent to others.') elif msg[:6] == '' + msg = self.buildMsg('all', '0', group_id, msg) self.log_msg("ban_msg:" + ban_msg) if (silent == 0): self.send_to_group("0", group_id, ban_msg) time.sleep( .1 ) @@ -2279,6 +2291,10 @@ self.log_msg("Exception: check_group_members(): " + str(e)) self.log_msg( ('exception', str(e)) ) + def buildMsg(self, toId, fromId, roomId, data): + msg = '' + msg += data+ '' + return msg def remote_admin_handler(self,xml_dom,data): """ @@ -2327,102 +2343,107 @@ #determine action to take based on command (cmd) if cmd == "list": #return player list to this user. - msg ="" + self.player_list_remote() + msg = self.buildMsg(pid, '0', gid, self.player_list_remote()) self.players[pid].outbox.put(msg) elif cmd == "banip": ip = xml_dom.get("bip") name = xml_dom.get("bname") - msg = " Banned: " + str(ip) + msg = self.buildMsg(pid, '0', gid, str(ip)) self.admin_banip(ip, name) elif cmd == "ban": id = xml_dom.get("bid") - msg = " Banned!" + msg = self.buildMsg(id, '0', gid, 'Banned!') self.players[pid].outbox.put(msg) self.admin_ban(id, "") ### Alpha ### and untested elif cmd == "boot": id = xml_dom.get("bid") - msg = " Booted!" + msg = self.buildMsg(id, '0', gid, 'Booted!!') self.players[pid].outbox.put(msg) self.admin_kick(id, "") ############# elif cmd == "unban": ip = xml_dom.get("ip") self.admin_unban(ip) - msg = " Unbaned: " + str(ip) + msg = self.buildMsg(pid, '0', gid, str(ip)) self.players[pid].outbox.put(msg) elif cmd == "banlist": - msg = "" + self.admin_banlist() + msg = self.buildMsg(pid, '0', gid, self.admin_banlist()) self.players[pid].outbox.put(msg) elif cmd == "killgroup": ugid = xml_dom.get("gid") if ugid == "0": - m = "" - m += "Cannot Remove Lobby! Remote administrator request denied!" - self.players[pid].outbox.put(m) + m + "Cannot Remove Lobby! Remote administrator request denied!" + msg = self.buildMsg(pid, '0', gid, m) + self.players[pid].outbox.put(msg) else: result = self.prune_room(ugid) - msg = "" + str(result) + msg = self.buildMsg(pid, '0', gid, str(result)) self.players[pid].outbox.put(msg) elif cmd == "message": tuid = xml_dom.get("to_id") msg = xml_dom.get("msg") - pmsg = "" + msg + pmsg = self.buildMsg(tuid, '0', self.players[tuid].group_id, msg) try: self.players[tuid].outbox.put(pmsg) except: - msg = "" + self.uptime(1) + msg = self.uptime(1) + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put(msg) elif cmd == "help": - msg = "" - msg += self.AdminHelpMessage() + msg = self.AdminHelpMessage() + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put( msg) elif cmd == "roompasswords": # Toggle if room passwords are allowed on this server - msg = "" - msg += self.RoomPasswords() + msg = self.RoomPasswords() + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put( msg) elif cmd == "createroom": rm_name = xml_dom.get("name") rm_pass = xml_dom.get("pass") rm_boot = xml_dom.get("boot") result = self.create_temporary_persistant_room(rm_name, rm_boot, rm_pass) - msg = "" + result + msg = self.buildMsg(pid, '0', gid, result) self.players[pid].outbox.put(msg) elif cmd == "nameroom": rm_id = xml_dom.get("rmid") rm_name = xml_dom.get("name") result = self.change_group_name(rm_id,rm_name,pid) - msg ="" + result + msg = self.buildMsg(pid, '0', gid, result) self.players[pid].outbox.put(msg) elif cmd == "passwd": tgid = xml_dom.get("gid") npwd = xml_dom.get("pass") if tgid == "0": - msg ="" - msg += "Server password may not be changed remotely!" + msg = "Server password may not be changed remotely!" + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put(msg) else: try: self.groups[tgid].boot_pwd = npwd - msg ="Password changed for room " + tgid + msg = "Password changed for room " + tgid + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put(msg) except: pass elif cmd == "savemaps": for g in self.groups.itervalues(): g.save_map() - msg ="Persistent room maps saved" + msg = "Persistent room maps saved" + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put(msg) else: - msg ="[Unknown Remote Administration Command]" + msg = "[Unknown Remote Administration Command]" + msg = self.buildMsg(pid, '0', gid, msg) self.players[pid].outbox.put(msg) except Exception, e: self.log_msg("Exception: Remote Admin Handler Error: " + str(e)) @@ -2599,4 +2620,4 @@ self.p_lock.release() return pl -server = mplay_server() +server = mplay_server() diff -r bb7b9648792c -r b29454610f36 orpg/networking/mplay_server_gui.py --- a/orpg/networking/mplay_server_gui.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/networking/mplay_server_gui.py Mon May 03 03:29:14 2010 -0500 @@ -321,7 +321,7 @@ BanMsg = wx.TextEntryDialog( self, "Enter A Message To Send:", "Ban Message", message, wx.OK|wx.CANCEL|wx.CENTRE ) if BanMsg.ShowModal() == wx.ID_OK: message = BanMsg.GetValue() - else: message = '' + else: return Silent = wx.MessageDialog(None, 'Silent Ban?', 'Question', wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION) if Silent.ShowModal() == wx.ID_YES: silent = 1 @@ -330,14 +330,30 @@ self.remove( playerID ) elif menuItem == 4: msg = self.GetMessageInput( "Send a message to player" ) - if len(msg): self.main.server.server.send( msg, playerID, str(groupID) ) + + broadcast = '' +msg+ '' + chat = Element('chat') + chat.set('type', '1') + chat.set('version', '1.0') + chat.text = broadcast + msg = self.main.server.server.buildMsg(str(playerID), '0', '1', msg) + + if len(msg): self.main.server.server.players[playerID].outbox.put(msg) #Leave this in for now. elif menuItem == 5: msg = self.GetMessageInput( "Send message to room of this player") + + broadcast = '' +msg+ '' + chat = Element('chat') + chat.set('type', '1') + chat.set('version', '1.0') + chat.text = broadcast + msg = self.main.server.server.buildMsg('all', '0', '1', tostring(chat)) + if len(msg): self.main.server.server.send_to_group('0', str(groupID), msg ) elif menuItem == 6: msg = self.GetMessageInput( "Broadcast Server Message" ) - if len(msg): self.main.server.server.broadcast( msg ) + if len(msg): self.main.server.server.broadcast(msg ) elif menuItem == 3: version_string = self.main.server.server.obtain_by_id(playerID, 'client_string') if version_string: wx.MessageBox("Running client version " + version_string,"Version") @@ -479,7 +495,6 @@ else: self.debugger.Show() def TraipseSuiteWarn(self, menuitem): - print 'traipse warn' #logger.debug('traipse warn') ### Allows for the reuse of the 'Attention' menu. ### component.get('frame').TraipseSuiteWarn('item') ### Portable self.mainMenu.Remove(3) @@ -595,7 +610,7 @@ self.conns.updateRoom(data) def OnUpdateGroup(self, data): - (room, room_id, players) = data; print 'update group', data + (room, room_id, players) = data self.groups.UpdateGroup(data) def OnSetRole( self, data ): diff -r bb7b9648792c -r b29454610f36 orpg/orpg_version.py --- a/orpg/orpg_version.py Sun May 02 16:30:28 2010 -0500 +++ b/orpg/orpg_version.py Mon May 03 03:29:14 2010 -0500 @@ -2,9 +2,9 @@ SERVER_MIN_CLIENT_VERSION = "1.7.1" #BUILD NUMBER FORMAT: "YYMMDD-##" where ## is the incremental daily build index (if needed) -DISTRO = "Traipse Beta" +DISTRO = "Traipse Alpha" DIS_VER = "Ornery Orc" -BUILD = "100502-00" +BUILD = "100503-01" # This version is for network capability. PROTOCOL_VERSION = "1.2" diff -r bb7b9648792c -r b29454610f36 orpg/templates/feature.xml --- a/orpg/templates/feature.xml Sun May 02 16:30:28 2010 -0500 +++ b/orpg/templates/feature.xml Mon May 03 03:29:14 2010 -0500 @@ -65,7 +65,7 @@ - + Persistant users who wanted the stability of Traipse and the ease of Namespace have described to me how they envision Namespace should work. When I heard this I immediately realized that my method provided the aspects users wanted, but not simplicity in design this method would provide. The Traipse Namespace is a little different than Standard but it offers more stability in it's approach There are two methods provided with the Traipse Namespace, and these two allow you to a great deal of control when you choose to use Namespace to reference your nodes. @@ -102,7 +102,7 @@ Grids can now be called from by adding a Row, Column to the end of the grid reference. Example: !&Abilities::2,2&! - + Quick Help: diff -r bb7b9648792c -r b29454610f36 orpg/templates/nodes/Warhammerv2CS2-Traipse.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/orpg/templates/nodes/Warhammerv2CS2-Traipse.xml Mon May 03 03:29:14 2010 -0500 @@ -0,0 +1,6591 @@ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + Meduim + + + + + + + + + + + + + + + + + + + + + + + + + + Copper + + + + Silver + + + + Gold + + + + Platinum + + + + Astral Diamonds + + + + + + + + + + + + [1d20 + (!=Character Level=! / 2) + ((!=Ability Init=! / 2) - 5) + !=Feat Init Bonus=! + !=Misc Init Bonus=!] + + + 6 + + + + + + !=Dexterity=! + + + 0 + + + 0 + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + [!=Racial Speed Base=! + !=Armor Speed Bonus=! + !=Item Speed Bonus=! + !=Misc Speed Bonus=!] + + + + + + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + + + + + + + + + + + + 10 + + + 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + + Maximum Health + 10 + + + Bloodied At + 10 + + + Current Health + 5 + + + Temporary Health + 0 + + + + + + + Healing Surge Value + 5 + + + Healing Surges per Day + 6 + + + Healing Surges Remaining + 6 + + + + + + + Death Saving Throw Attempts + 0 + + + + + + + + + + Armor Class + 10 + + + Fortitude + 10 + + + Reflex + 10 + + + Willpower + 10 + + + + + + + + + [1d20 + !=Class Save Bonus=! + !=Racial Save Bonus=! + !=Feat Save Bonus=! + !=Misc Save Bonus=!] + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + !=Dexterity=! + + + 0 + + + 0 + + + 0 + + + [10 + (!=Character Level=! / 2) + ((!=AC Ability=! / 2) - 5) + !=Class AC Bonus=! + !=Feat AC Bonus=! + !=Equipment AC Bonus=! + !=Misc AC Bonus=!] + + + + + + 0 + + + !=Strength=! + + + 0 + + + 0 + + + 0 + + + [10 + (!=Character Level=! / 2) + ((!=Fort Ability=! / 2) - 5) + !=Class Fort Bonus=! + !=Feat Fort Bonus=! + !=Equipment Fort Bonus=! + !=Misc Fort Bonus=!] + + + + + + 0 + + + !=Dexterity=! + + + 0 + + + 0 + + + 0 + + + [10 + (!=Character Level=! / 2) + ((!=Ref Ability=! / 2) - 5) + !=Class Ref Bonus=! + !=Feat Ref Bonus=! + !=Equipment Ref Bonus=! + !=Misc Ref Bonus=!] + + + + + + 0 + + + !=Wisdom=! + + + 0 + + + 0 + + + 0 + + + [10 + (!=Character Level=! / 2) + ((!=Will Ability=! / 2) - 5) + !=Class Will Bonus=! + !=Feat Will Bonus=! + !=Equipment Will Bonus=! + !=Misc Will Bonus=!] + + + + + + + + + Weapon 1 Name + + + + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 1 + + + 4 + + + 1 + + + 0 + + + + + + + + !=Strength=! + + + !=Weapon 1 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 1 Attack Class and Feat Bonus=! + !=Weapon 1 Attack Proficiency Bonus=! + ((!=Weapon 1 Melee Attack Ability=! / 2) - 5) + !=Weapon 1 Attack Misc Bonus=!] + + + !=Strength=! + + + !=Weapon 1 Name=!: [Q((!=Weapon 1 Damage Multiplier=! * !=Weapon 1 Damage Dice Count=!)**std(!=Weapon 1 Damage Dice Sides=!)) + !=Weapon 1 Damage Feat Bonus=! + ((!=Weapon 1 Melee Damage Ability=! / 2) - 5) + !=Weapon 1 Damage Misc Bonus=!] + + + !=Weapon 1 Name=! = [Q(!=Weapon 1 Damage Multiplier=! * !=Weapon 1 Damage Dice Count=!*!=Weapon 1 Damage Dice Sides=!) + (!=Weapon 1 Critical Extra Damage=!) + !=Weapon 1 Damage Feat Bonus=! + ((!=Weapon 1 Melee Damage Ability=! / 2) - 5) + !=Weapon 1 Damage Misc Bonus=!] + + + + + + !=Dexterity=! + + + !=Weapon 1 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 1 Attack Class and Feat Bonus=! + !=Weapon 1 Attack Proficiency Bonus=! + ((!=Weapon 1 Range Attack Ability=! / 2) - 5) + !=Weapon 1 Attack Misc Bonus=!] + + + !=Dexterity=! + + + !=Weapon 1 Name=!: [Q((!=Weapon 1 Damage Multiplier=! * !=Weapon 1 Damage Dice Count=!)**std(!=Weapon 1 Damage Dice Sides=!)) + !=Weapon 1 Damage Feat Bonus=! + ((!=Weapon 1 Range Damage Ability=! / 2) - 5) + !=Weapon 1 Damage Misc Bonus=!] + + + !=Weapon 1 Name=! = [Q(!=Weapon 1 Damage Multiplier=! * !=Weapon 1 Damage Dice Count=!*!=Weapon 1 Damage Dice Sides=!) + (!=Weapon 1 Critical Extra Damage=!) + !=Weapon 1 Damage Feat Bonus=! + ((!=Weapon 1 Range Damage Ability=! / 2) - 5) + !=Weapon 1 Damage Misc Bonus=!] + + + + + + !=Strength=! + + + 0 + + + !=Weapon 1 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 1 Attack Class and Feat Bonus=! + !=Weapon 1 Attack Proficiency Bonus=! + ((!=Weapon 1 Charge Attack Ability=! / 2) - 5) + !=Weapon 1 Attack Misc Bonus=! + !=Weapon 1 Charge Attack Bonus=!] + + + !=Strength=! + + + 1 + + + !=Weapon 1 Name=!: [Q((!=Weapon 1 Damage Multiplier=! * !=Weapon 1 Damage Dice Count=!)**std(!=Weapon 1 Damage Dice Sides=!)) + !=Weapon 1 Damage Feat Bonus=! + ((!=Weapon 1 Charge Damage Ability=! / 2) - 5) + !=Weapon 1 Damage Misc Bonus=! + !=Weapon 1 Charge Damage Bonus=!] + + + !=Weapon 1 Name=! = [Q(!=Weapon 1 Damage Multiplier=! * !=Weapon 1 Damage Dice Count=!*!=Weapon 1 Damage Dice Sides=!) + (!=Weapon 1 Critical Extra Damage=!) + !=Weapon 1 Damage Feat Bonus=! + ((!=Weapon 1 Charge Damage Ability=! / 2) - 5) + !=Weapon 1 Damage Misc Bonus=! + !=Weapon 1 Charge Damage Bonus=!] + + + + + + + + Weapon 2 Name + + + + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 1 + + + 4 + + + 1 + + + 0 + + + + + + + + !=Strength=! + + + !=Weapon 2 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 2 Attack Class and Feat Bonus=! + !=Weapon 2 Attack Proficiency Bonus=! + ((!=Weapon 2 Melee Attack Ability=! / 2) - 5) + !=Weapon 2 Attack Misc Bonus=!] + + + !=Strength=! + + + !=Weapon 2 Name=!: [Q((!=Weapon 2 Damage Multiplier=! * !=Weapon 2 Damage Dice Count=!)**std(!=Weapon 2 Damage Dice Sides=!)) + !=Weapon 2 Damage Feat Bonus=! + ((!=Weapon 2 Melee Damage Ability=! / 2) - 5) + !=Weapon 2 Damage Misc Bonus=!] + + + !=Weapon 2 Name=! = [Q(!=Weapon 2 Damage Multiplier=! * !=Weapon 2 Damage Dice Count=!*!=Weapon 2 Damage Dice Sides=!) + (!=Weapon 2 Critical Extra Damage=!) + !=Weapon 2 Damage Feat Bonus=! + ((!=Weapon 2 Melee Damage Ability=! / 2) - 5) + !=Weapon 2 Damage Misc Bonus=!] + + + + + + !=Dexterity=! + + + !=Weapon 2 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 2 Attack Class and Feat Bonus=! + !=Weapon 2 Attack Proficiency Bonus=! + ((!=Weapon 2 Range Attack Ability=! / 2) - 5) + !=Weapon 2 Attack Misc Bonus=!] + + + !=Dexterity=! + + + !=Weapon 2 Name=!: [Q((!=Weapon 2 Damage Multiplier=! * !=Weapon 2 Damage Dice Count=!)**std(!=Weapon 2 Damage Dice Sides=!)) + !=Weapon 2 Damage Feat Bonus=! + ((!=Weapon 2 Range Damage Ability=! / 2) - 5) + !=Weapon 2 Damage Misc Bonus=!] + + + !=Weapon 2 Name=! = [Q(!=Weapon 2 Damage Multiplier=! * !=Weapon 2 Damage Dice Count=!*!=Weapon 2 Damage Dice Sides=!) + (!=Weapon 2 Critical Extra Damage=!) + !=Weapon 2 Damage Feat Bonus=! + ((!=Weapon 2 Range Damage Ability=! / 2) - 5) + !=Weapon 2 Damage Misc Bonus=!] + + + + + + !=Strength=! + + + 0 + + + !=Weapon 2 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 2 Attack Class and Feat Bonus=! + !=Weapon 2 Attack Proficiency Bonus=! + ((!=Weapon 2 Charge Attack Ability=! / 2) - 5) + !=Weapon 2 Attack Misc Bonus=! + !=Weapon 2 Charge Attack Bonus=!] + + + !=Strength=! + + + 1 + + + !=Weapon 2 Name=!: [Q((!=Weapon 2 Damage Multiplier=! * !=Weapon 2 Damage Dice Count=!)**std(!=Weapon 2 Damage Dice Sides=!)) + !=Weapon 2 Damage Feat Bonus=! + ((!=Weapon 2 Charge Damage Ability=! / 2) - 5) + !=Weapon 2 Damage Misc Bonus=! + !=Weapon 2 Charge Damage Bonus=!] + + + !=Weapon 2 Name=! = [Q(!=Weapon 2 Damage Multiplier=! * !=Weapon 2 Damage Dice Count=!*!=Weapon 2 Damage Dice Sides=!) + (!=Weapon 2 Critical Extra Damage=!) + !=Weapon 2 Damage Feat Bonus=! + ((!=Weapon 2 Charge Damage Ability=! / 2) - 5) + !=Weapon 2 Damage Misc Bonus=! + !=Weapon 2 Charge Damage Bonus=!] + + + + + + + + Weapon 3 Name + + + + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 1 + + + 4 + + + 1 + + + 0 + + + + + + + + !=Strength=! + + + !=Weapon 3 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 3 Attack Class and Feat Bonus=! + !=Weapon 3 Attack Proficiency Bonus=! + ((!=Weapon 3 Melee Attack Ability=! / 2) - 5) + !=Weapon 3 Attack Misc Bonus=!] + + + !=Strength=! + + + !=Weapon 3 Name=!: [Q((!=Weapon 3 Damage Multiplier=! * !=Weapon 3 Damage Dice Count=!)**std(!=Weapon 3 Damage Dice Sides=!)) + !=Weapon 3 Damage Feat Bonus=! + ((!=Weapon 3 Melee Damage Ability=! / 2) - 5) + !=Weapon 3 Damage Misc Bonus=!] + + + !=Weapon 3 Name=! = [Q(!=Weapon 3 Damage Multiplier=! * !=Weapon 3 Damage Dice Count=!*!=Weapon 3 Damage Dice Sides=!) + (!=Weapon 3 Critical Extra Damage=!) + !=Weapon 3 Damage Feat Bonus=! + ((!=Weapon 3 Melee Damage Ability=! / 2) - 5) + !=Weapon 3 Damage Misc Bonus=!] + + + + + + !=Dexterity=! + + + !=Weapon 3 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 3 Attack Class and Feat Bonus=! + !=Weapon 3 Attack Proficiency Bonus=! + ((!=Weapon 3 Range Attack Ability=! / 2) - 5) + !=Weapon 3 Attack Misc Bonus=!] + + + !=Dexterity=! + + + !=Weapon 3 Name=!: [Q((!=Weapon 3 Damage Multiplier=! * !=Weapon 3 Damage Dice Count=!)**std(!=Weapon 3 Damage Dice Sides=!)) + !=Weapon 3 Damage Feat Bonus=! + ((!=Weapon 3 Range Damage Ability=! / 2) - 5) + !=Weapon 3 Damage Misc Bonus=!] + + + !=Weapon 3 Name=! = [Q(!=Weapon 3 Damage Multiplier=! * !=Weapon 3 Damage Dice Count=!*!=Weapon 3 Damage Dice Sides=!) + (!=Weapon 3 Critical Extra Damage=!) + !=Weapon 3 Damage Feat Bonus=! + ((!=Weapon 3 Range Damage Ability=! / 2) - 5) + !=Weapon 3 Damage Misc Bonus=!] + + + + + + !=Strength=! + + + 0 + + + !=Weapon 3 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 3 Attack Class and Feat Bonus=! + !=Weapon 3 Attack Proficiency Bonus=! + ((!=Weapon 3 Charge Attack Ability=! / 2) - 5) + !=Weapon 3 Attack Misc Bonus=! + !=Weapon 3 Charge Attack Bonus=!] + + + !=Strength=! + + + 1 + + + !=Weapon 3 Name=!: [Q((!=Weapon 3 Damage Multiplier=! * !=Weapon 3 Damage Dice Count=!)**std(!=Weapon 3 Damage Dice Sides=!)) + !=Weapon 3 Damage Feat Bonus=! + ((!=Weapon 3 Charge Damage Ability=! / 2) - 5) + !=Weapon 3 Damage Misc Bonus=! + !=Weapon 3 Charge Damage Bonus=!] + + + !=Weapon 3 Name=! = [Q(!=Weapon 3 Damage Multiplier=! * !=Weapon 3 Damage Dice Count=!*!=Weapon 3 Damage Dice Sides=!) + (!=Weapon 3 Critical Extra Damage=!) + !=Weapon 3 Damage Feat Bonus=! + ((!=Weapon 3 Charge Damage Ability=! / 2) - 5) + !=Weapon 3 Damage Misc Bonus=! + !=Weapon 3 Charge Damage Bonus=!] + + + + + + + + Weapon 4 Name + + + + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 1 + + + 4 + + + 1 + + + 0 + + + + + + + + !=Strength=! + + + !=Weapon 4 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 4 Attack Class and Feat Bonus=! + !=Weapon 4 Attack Proficiency Bonus=! + ((!=Weapon 4 Melee Attack Ability=! / 2) - 5) + !=Weapon 4 Attack Misc Bonus=!] + + + !=Strength=! + + + !=Weapon 4 Name=!: [Q((!=Weapon 4 Damage Multiplier=! * !=Weapon 4 Damage Dice Count=!)**std(!=Weapon 4 Damage Dice Sides=!)) + !=Weapon 4 Damage Feat Bonus=! + ((!=Weapon 4 Melee Damage Ability=! / 2) - 5) + !=Weapon 4 Damage Misc Bonus=!] + + + !=Weapon 4 Name=! = [Q(!=Weapon 4 Damage Multiplier=! * !=Weapon 4 Damage Dice Count=!*!=Weapon 4 Damage Dice Sides=!) + (!=Weapon 4 Critical Extra Damage=!) + !=Weapon 4 Damage Feat Bonus=! + ((!=Weapon 4 Melee Damage Ability=! / 2) - 5) + !=Weapon 4 Damage Misc Bonus=!] + + + + + + !=Dexterity=! + + + !=Weapon 4 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 4 Attack Class and Feat Bonus=! + !=Weapon 4 Attack Proficiency Bonus=! + ((!=Weapon 4 Range Attack Ability=! / 2) - 5) + !=Weapon 4 Attack Misc Bonus=!] + + + !=Dexterity=! + + + !=Weapon 4 Name=!: [Q((!=Weapon 4 Damage Multiplier=! * !=Weapon 4 Damage Dice Count=!)**std(!=Weapon 4 Damage Dice Sides=!)) + !=Weapon 4 Damage Feat Bonus=! + ((!=Weapon 4 Range Damage Ability=! / 2) - 5) + !=Weapon 4 Damage Misc Bonus=!] + + + !=Weapon 4 Name=! = [Q(!=Weapon 4 Damage Multiplier=! * !=Weapon 4 Damage Dice Count=!*!=Weapon 4 Damage Dice Sides=!) + (!=Weapon 4 Critical Extra Damage=!) + !=Weapon 4 Damage Feat Bonus=! + ((!=Weapon 4 Range Damage Ability=! / 2) - 5) + !=Weapon 4 Damage Misc Bonus=!] + + + + + + !=Strength=! + + + 0 + + + !=Weapon 4 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 4 Attack Class and Feat Bonus=! + !=Weapon 4 Attack Proficiency Bonus=! + ((!=Weapon 4 Charge Attack Ability=! / 2) - 5) + !=Weapon 4 Attack Misc Bonus=! + !=Weapon 4 Charge Attack Bonus=!] + + + !=Strength=! + + + 1 + + + !=Weapon 4 Name=!: [Q((!=Weapon 4 Damage Multiplier=! * !=Weapon 4 Damage Dice Count=!)**std(!=Weapon 4 Damage Dice Sides=!)) + !=Weapon 4 Damage Feat Bonus=! + ((!=Weapon 4 Charge Damage Ability=! / 2) - 5) + !=Weapon 4 Damage Misc Bonus=! + !=Weapon 4 Charge Damage Bonus=!] + + + !=Weapon 4 Name=! = [Q(!=Weapon 4 Damage Multiplier=! * !=Weapon 4 Damage Dice Count=!*!=Weapon 4 Damage Dice Sides=!) + (!=Weapon 4 Critical Extra Damage=!) + !=Weapon 4 Damage Feat Bonus=! + ((!=Weapon 4 Charge Damage Ability=! / 2) - 5) + !=Weapon 4 Damage Misc Bonus=! + !=Weapon 4 Charge Damage Bonus=!] + + + + + + + + Weapon 5 Name + + + + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 1 + + + 4 + + + 1 + + + 0 + + + + + + + + !=Strength=! + + + !=Weapon 5 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 5 Attack Class and Feat Bonus=! + !=Weapon 5 Attack Proficiency Bonus=! + ((!=Weapon 5 Melee Attack Ability=! / 2) - 5) + !=Weapon 5 Attack Misc Bonus=!] + + + !=Strength=! + + + !=Weapon 5 Name=!: [Q((!=Weapon 5 Damage Multiplier=! * !=Weapon 5 Damage Dice Count=!)**std(!=Weapon 5 Damage Dice Sides=!)) + !=Weapon 5 Damage Feat Bonus=! + ((!=Weapon 5 Melee Damage Ability=! / 2) - 5) + !=Weapon 5 Damage Misc Bonus=!] + + + !=Weapon 5 Name=! = [Q(!=Weapon 5 Damage Multiplier=! * !=Weapon 5 Damage Dice Count=!*!=Weapon 5 Damage Dice Sides=!) + (!=Weapon 5 Critical Extra Damage=!) + !=Weapon 5 Damage Feat Bonus=! + ((!=Weapon 5 Melee Damage Ability=! / 2) - 5) + !=Weapon 5 Damage Misc Bonus=!] + + + + + + !=Dexterity=! + + + !=Weapon 5 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 5 Attack Class and Feat Bonus=! + !=Weapon 5 Attack Proficiency Bonus=! + ((!=Weapon 5 Range Attack Ability=! / 2) - 5) + !=Weapon 5 Attack Misc Bonus=!] + + + !=Dexterity=! + + + !=Weapon 5 Name=!: [Q((!=Weapon 5 Damage Multiplier=! * !=Weapon 5 Damage Dice Count=!)**std(!=Weapon 5 Damage Dice Sides=!)) + !=Weapon 5 Damage Feat Bonus=! + ((!=Weapon 5 Range Damage Ability=! / 2) - 5) + !=Weapon 5 Damage Misc Bonus=!] + + + !=Weapon 5 Name=! = [Q(!=Weapon 5 Damage Multiplier=! * !=Weapon 5 Damage Dice Count=!*!=Weapon 5 Damage Dice Sides=!) + (!=Weapon 5 Critical Extra Damage=!) + !=Weapon 5 Damage Feat Bonus=! + ((!=Weapon 5 Range Damage Ability=! / 2) - 5) + !=Weapon 5 Damage Misc Bonus=!] + + + + + + !=Strength=! + + + 0 + + + !=Weapon 5 Name=!: [Q1d20 + (!=Character Level=! / 2) + !=Weapon 5 Attack Class and Feat Bonus=! + !=Weapon 5 Attack Proficiency Bonus=! + ((!=Weapon 5 Charge Attack Ability=! / 2) - 5) + !=Weapon 5 Attack Misc Bonus=! + !=Weapon 5 Charge Attack Bonus=!] + + + !=Strength=! + + + 1 + + + !=Weapon 5 Name=!: [Q((!=Weapon 5 Damage Multiplier=! * !=Weapon 5 Damage Dice Count=!)**std(!=Weapon 5 Damage Dice Sides=!)) + !=Weapon 5 Damage Feat Bonus=! + ((!=Weapon 5 Charge Damage Ability=! / 2) - 5) + !=Weapon 5 Damage Misc Bonus=! + !=Weapon 5 Charge Damage Bonus=!] + + + !=Weapon 5 Name=! = [Q(!=Weapon 5 Damage Multiplier=! * !=Weapon 5 Damage Dice Count=!*!=Weapon 5 Damage Dice Sides=!) + (!=Weapon 5 Critical Extra Damage=!) + !=Weapon 5 Damage Feat Bonus=! + ((!=Weapon 5 Charge Damage Ability=! / 2) - 5) + !=Weapon 5 Damage Misc Bonus=! + !=Weapon 5 Charge Damage Bonus=!] + + + + + + + + + + + 0 + + + 0 + + + 0 + + + + + + + + !=Strength=! + + + 0 + + + Bull Rush: [Q1d20 + (!=Character Level=! / 2) + !=Unarmed Attack Class and Feat Bonus=! + !=Unarmed Attack Proficiency Bonus=! + ((!=Unarmed Rush Attack Ability=! / 2) - 5) + !=Unarmed Attack Misc Bonus=! + !=Unarmed Rush Attack Bonus=!] + + + + + + !=Strength=! + + + 0 + + + Grab: [Q1d20 + (!=Character Level=! / 2) + !=Unarmed Attack Class and Feat Bonus=! + !=Unarmed Attack Proficiency Bonus=! + ((!=Unarmed Grab Attack Ability=! / 2) - 5) + !=Unarmed Attack Misc Bonus=! + !=Unarmed Grab Attack Bonus=!] + + + + + + !=Strength=! + + + 0 + + + Fortitude + + + Escape: [Q1d20 + (!=Character Level=! / 2) + !=Unarmed Attack Class and Feat Bonus=! + !=Unarmed Attack Proficiency Bonus=! + ((!=Unarmed Escape Attack Ability=! / 2) - 5) + !=Unarmed Attack Misc Bonus=! + !=Unarmed Escape Attack Bonus=!] vs. !=Unarmed Escape Target Defense=! + + + + + + + + + + + 1 + + + + + Power Name + Uses + Remaining + + + Action Point + 1 + 1 + + + Second Wind + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + + + + + + + Power Name + Uses + Remaining + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + 1 + 1 + + + + + + + + + + Power Name + Recharge + Uses + Remain + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + 1 + 1 + + + + + + + + + + + + + At-Will 1 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 1 Name=! + + + /me uses power !=At-Will 1 Name=! + + + /me uses power !=At-Will 1 Name=! + + + /me uses power !=At-Will 1 Name=! + + + + + + + + At-Will 2 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 2 Name=! + + + /me uses power !=At-Will 2 Name=! + + + /me uses power !=At-Will 2 Name=! + + + /me uses power !=At-Will 2 Name=! + + + + + + + + At-Will 3 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 3 Name=! + + + /me uses power !=At-Will 3 Name=! + + + /me uses power !=At-Will 3 Name=! + + + /me uses power !=At-Will 3 Name=! + + + + + + + + At-Will 4 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 4 Name=! + + + /me uses power !=At-Will 4 Name=! + + + /me uses power !=At-Will 4 Name=! + + + /me uses power !=At-Will 4 Name=! + + + + + + + + At-Will 5 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 5 Name=! + + + /me uses power !=At-Will 5 Name=! + + + /me uses power !=At-Will 5 Name=! + + + /me uses power !=At-Will 5 Name=! + + + + + + + + At-Will 6 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 6 Name=! + + + /me uses power !=At-Will 6 Name=! + + + /me uses power !=At-Will 6 Name=! + + + /me uses power !=At-Will 6 Name=! + + + + + + + + At-Will 7 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 7 Name=! + + + /me uses power !=At-Will 7 Name=! + + + /me uses power !=At-Will 7 Name=! + + + /me uses power !=At-Will 7 Name=! + + + + + + + + At-Will 8 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 8 Name=! + + + /me uses power !=At-Will 8 Name=! + + + /me uses power !=At-Will 8 Name=! + + + /me uses power !=At-Will 8 Name=! + + + + + + + + At-Will 9 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=At-Will 9 Name=! + + + /me uses power !=At-Will 9 Name=! + + + /me uses power !=At-Will 9 Name=! + + + /me uses power !=At-Will 9 Name=! + + + + + + + + + + Encounter 1 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 1 Name=! + + + /me uses power !=Encounter 1 Name=! + + + /me uses power !=Encounter 1 Name=! + + + /me uses power !=Encounter 1 Name=! + + + + + + + + Encounter 2 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 2 Name=! + + + /me uses power !=Encounter 2 Name=! + + + /me uses power !=Encounter 2 Name=! + + + /me uses power !=Encounter 2 Name=! + + + + + + + + Encounter 3 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 3 Name=! + + + /me uses power !=Encounter 3 Name=! + + + /me uses power !=Encounter 3 Name=! + + + /me uses power !=Encounter 3 Name=! + + + + + + + + Encounter 4 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 4 Name=! + + + /me uses power !=Encounter 4 Name=! + + + /me uses power !=Encounter 4 Name=! + + + /me uses power !=Encounter 4 Name=! + + + + + + + + Encounter 5 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 5 Name=! + + + /me uses power !=Encounter 5 Name=! + + + /me uses power !=Encounter 5 Name=! + + + /me uses power !=Encounter 5 Name=! + + + + + + + + Encounter 6 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 6 Name=! + + + /me uses power !=Encounter 6 Name=! + + + /me uses power !=Encounter 6 Name=! + + + /me uses power !=Encounter 6 Name=! + + + + + + + + Encounter 7 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 7 Name=! + + + /me uses power !=Encounter 7 Name=! + + + /me uses power !=Encounter 7 Name=! + + + /me uses power !=Encounter 7 Name=! + + + + + + + + Encounter 8 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 8 Name=! + + + /me uses power !=Encounter 8 Name=! + + + /me uses power !=Encounter 8 Name=! + + + /me uses power !=Encounter 8 Name=! + + + + + + + + Encounter 9 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Encounter 9 Name=! + + + /me uses power !=Encounter 9 Name=! + + + /me uses power !=Encounter 9 Name=! + + + /me uses power !=Encounter 9 Name=! + + + + + + + + + + Daily 1 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 1 Name=! + + + /me uses power !=Daily 1 Name=! + + + /me uses power !=Daily 1 Name=! + + + /me uses power !=Daily 1 Name=! + + + + + + + + Daily 2 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 2 Name=! + + + /me uses power !=Daily 2 Name=! + + + /me uses power !=Daily 2 Name=! + + + /me uses power !=Daily 2 Name=! + + + + + + + + Daily 3 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 3 Name=! + + + /me uses power !=Daily 3 Name=! + + + /me uses power !=Daily 3 Name=! + + + /me uses power !=Daily 3 Name=! + + + + + + + + Daily 4 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 4 Name=! + + + /me uses power !=Daily 4 Name=! + + + /me uses power !=Daily 4 Name=! + + + /me uses power !=Daily 4 Name=! + + + + + + + + Daily 5 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 5 Name=! + + + /me uses power !=Daily 5 Name=! + + + /me uses power !=Daily 5 Name=! + + + /me uses power !=Daily 5 Name=! + + + + + + + + Daily 6 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 6 Name=! + + + /me uses power !=Daily 6 Name=! + + + /me uses power !=Daily 6 Name=! + + + /me uses power !=Daily 6 Name=! + + + + + + + + Daily 7 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 7 Name=! + + + /me uses power !=Daily 7 Name=! + + + /me uses power !=Daily 7 Name=! + + + /me uses power !=Daily 7 Name=! + + + + + + + + Daily 8 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 8 Name=! + + + /me uses power !=Daily 8 Name=! + + + /me uses power !=Daily 8 Name=! + + + /me uses power !=Daily 8 Name=! + + + + + + + + Daily 9 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 0 + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /me uses power !=Daily 9 Name=! + + + /me uses power !=Daily 9 Name=! + + + /me uses power !=Daily 9 Name=! + + + /me uses power !=Daily 9 Name=! + + + + + + + + + + Utility 1 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 2 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 3 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 4 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 5 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 6 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 7 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 8 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + Utility 9 Name + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AC + + + !=Strength=! + + + 0 + + + !=Strength=! + + + 0 + + + + + + 1 + + + 0 + + + 6 + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Passive Insight + + + + Passive Perception + + + + + + + + Acrobatics + + + + Arcana + + + + Athletics + + + + Bluff + + + + Diplomacy + + + + Dungeoneering + + + + Endurance + + + + Heal + + + + History + + + + Insight + + + + Intimidate + + + + Nature + + + + Perception + + + + Religion + + + + Stealth + + + + Streetwise + + + + Thievery + + + + + + + + + + + + + Player Name + + + + Character Name + + + + Deity + + + + Alignment + + + + Race + + + + + + + + Level + + + + Class + + + + Paragon Path + + + + Epic Destiny + + + + + + + + + + + Maximum Health + + + + Bloodied At + + + + + + + + Healing Surge Value + + + + Healing Surges per Day + + + + + + + + Aromor Class + + + + Fortitude + + + + Reflex + + + + Willpower + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + 10 + + + + + + + + + + + + + + + + Maximum Health + 10 + + + Bloodied At + 10 + + + Current Health + 5 + + + Temporary Health + 0 + + + + + + + Healing Surge Value + 5 + + + Healing Surges per Day + 6 + + + Healing Surges Remaining + 6 + + + + + + + Death Saving Throw Attempts + 0 + + + + + + + + + 10 + + + 10 + + + 10 + + + 10 + + + + + 0 + + + [!=Companion Base AC=! + !=Companion Level=!] + + + + + 0 + + + [!=Companion Base Fort=! + !=Companion Level=!] + + + + + 0 + + + [!=Companion Base Ref=! + !=Companion Level=!] + + + + + 0 + + + [!=Companion Base Will=! + !=Companion Level=!] + + + + + + + + + + Attack 1 Name + + + 0 + + + !=Attack 1 Name=!: [Q1d20 + !=Companion Level=! + !=Attack 1 Bonus=!] + + + !=Strength=! + + + 0 + + + 1 + + + 4 + + + 0 + + + !=Attack 1 Name=!: [Q(!=Attack 1 Damage Dice Count=!d!=Attack 1 Damage Dice Sides=!) + ((!=Attack 1 Damage Ability=! / 2) - 5) + !=Attack 1 Damage Other Bonus=!] + + + !=Attack 1 Name=! = [Q(!=Attack 1 Damage Dice Count=!*!=Attack 1 Damage Dice Sides=!) + (!=Attack 1 Critical Extra Damage=!) + ((!=Attack 1 Damage Ability=! / 2) - 5) + !=Attack 1 Damage Other Bonus=!] + + + + + + Attack 2 Name + + + 0 + + + !=Attack 2 Name=!: [Q1d20 + !=Companion Level=! + !=Attack 2 Bonus=!] + + + !=Strength=! + + + 0 + + + 1 + + + 4 + + + 0 + + + !=Attack 2 Name=!: [Q(!=Attack 2 Damage Dice Count=!d!=Attack 2 Damage Dice Sides=!) + ((!=Attack 2 Damage Ability=! / 2) - 5) + !=Attack 2 Damage Other Bonus=!] + + + !=Attack 2 Name=! = [Q(!=Attack 2 Damage Dice Count=!*!=Attack 2 Damage Dice Sides=!) + (!=Attack 2 Critical Extra Damage=!) + ((!=Attack 2 Damage Ability=! / 2) - 5) + !=Attack 2 Damage Other Bonus=!] + + + + + + \ No newline at end of file diff -r bb7b9648792c -r b29454610f36 plugins/xxstdnamespace.py --- a/plugins/xxstdnamespace.py Sun May 02 16:30:28 2010 -0500 +++ b/plugins/xxstdnamespace.py Mon May 03 03:29:14 2010 -0500 @@ -18,8 +18,8 @@ self.help = 'The Standard Namespace plugin allows for users of Traipse to use ' self.help += 'the Standard Namespace syntax of !@ :: @!\n\n' self.help += 'This plugin modifies the External method, so context sensivity\n' - self.help += 'is not calculted when using the Standard syntax. References must\n' - self.help += 'a unique name.' + self.help += 'is not calculated when using the Standard syntax. References must ' + self.help += 'have a unique name.' self.parseMethods = {'Traipse': Parse.NameSpaceE, 'Standard': self.NameSpaceS}