User talk:Green Dragon/Archive 25

From D&D Wiki
Jump to navigation Jump to search
Archive This is an archive of past discussions. Its contents should be preserved in their current form. If you wish to start a new discussion or revive an old one, please do so on the current talk page.


Archive 25 |

2.5e Homebrew What Links Here

Discussion moved to Talk:2.5e Homebrew#What Links Here. --Green Dragon 20:53, 5 September 2011 (MDT)

Enlightened Soul BAB and save issues

You placed a notice on the enlightened soul stating that it did not adhere to wiki formatting, as the table does not have BAB and saves listed. While this is accurate, it is also an epic prestige class, and as such adheres to epic rules in this regard. I felt uncomfortable taking down the notice myself, but would highly appreciate it if you would, or leave a fuller explanation why it would be necessary in the talk section. Thanks for your time and your hard work. --Lefthandroger 15:31, 6 September 2011 (MDT)

Ah, I didn't notice that. Sorry, I forgot to look at the prerequisites. Feel free to remove and add templates as appropriate as that is why they are there. --Green Dragon 19:36, 6 September 2011 (MDT)
Thanks much; I've put a lot of time into that class and am rather proud of it. Is there any chance that it might be featured article material, or, barring that, at least high enough quality to warrant a proper review? Granted, I have no doubt that that requires quite a bit of time from you, but I've rather run into a brick wall in terms of improving the class on my own ideas. As always, thanks for your time and effort. --Lefthandroger 15:49, 7 September 2011 (MDT)

Help

I can't replace my Vilethrone map. The old map always appears,.

On the media repository did you use the "Upload a new version of this file" option? --Green Dragon 21:09, 9 September 2011 (MDT)
It may also be that the setting of your pixels on your new map image is too small. Put it in without any pixel limit, and then make it smaller as you need it. When it returns to the old map, use the last setting that used your new map. --Axl 16:12, 29 September 2011 (MDT)
Additionally logging in was not working with Firefox at the time and you may have initially uploaded it with Internet Explorer and then not have seen any options, such as "Upload a new version of this file", present. If you see this again please let someone know. --Green Dragon 12:47, 1 October 2011 (MDT)

Spam (again/still)

As I'm sure you've noticed, the spamming is getting a little out of hand. Is something not working right? I thought CAPTCHA was supposed to stop this. JazzMan 08:48, 17 September 2011 (MDT)

Any updates here? JazzMan 14:36, 4 October 2011 (MDT)
The default CloudFlare threat challenge page settings have now been changed to "high" so more suspicious traffic will be challenged with Captchas. Does this help? --Green Dragon 16:46, 8 October 2011 (MDT)
Hopefully that'll do the trick without catching too many "real" editors. I guess we will have to wait and see. JazzMan 22:57, 8 October 2011 (MDT)
Hard to say...but, i think spam is hurting the wiki, and if these are our counter measures, we have to use them. However, maybe we could implement them to only hit someone on log on, not every time they visit the front page. --Ganre 21:10, 9 January 2012 (MST)
Here are their options. --Green Dragon 11:38, 10 January 2012 (MST)

2e Management

I was actually wondering if I could help edit the many articles that could come into 2e Homebrew (e.g making guidelines, telling people if thier customs break rules ETC.)

Please do. 2.5e Homebrew as well as Category:2.5e provide direction as to where 2.5e pages can be found. --Green Dragon 14:11, 1 October 2011 (MDT)

2e Management

I was actually wondering if I could help edit the many articles that could come into 2e Homebrew (e.g making guidelines, telling people if thier customs break rules ETC.)

Can Spammers be a 4e Race?

I'm tired of the non-paid advertising put on this site. I was wondering, therefore, if it would be okay if I create a race out of these 'spammers', a.k.a. those whose only purpose on this site is to make it their own free commercial. Or would that be against the warning policy? I wouldn't say or write anything threatening or offensive, although the people sending spam should be criticized for a lack of decency. It's a shame that such a good site is being infiltrated by these advertisements, and it's also a shame to all companies who rightfully pay to have a product advertised instead of taking advantage of the internet. Anyways, I just wanted to know whether or not I could create a scathing "Spammer (4e Race)" If not, then that's okay. (Also note, I won't be able to be on the site for the next two days, but after that I would have all the time in the world to create the race, if it's acceptable.) --Obake 20:04, 30 September 2011 (MDT)

Don't include any swear words, external links, or advertisements. Do include the template {{April_Fools}}. Have fun. --Badger 23:24, 30 September 2011 (MDT)

Just wanted to let you know

Hey green dragon. It's me, Dj00345. Since I created the 2.5e Homebrew, I have been watching the recent changes log to see if anyone creates anything for the 2.5e Homebrew. I just fixed one page created by someone, they forgot the categories that would link it to a certain page, I was wondering if I can do that for any 2.5e page that doesn't make it to the right places??? Apparently when I created the Homebrew, something happened that screwed things up. Just wanted to let you know. Dj00345 17:08, 7 October 2011 (MDT)

Yes, if someone creates a page in the wrong place or forgets to add the correct categories, feel free to fix it if you know the correct place it should be. JazzMan 19:21, 7 October 2011 (MDT)
You can feel free to do this for any page in the wrong place, not just ones in 2.5e. It's one of those jobs that admins tend to do, but anyone can move a page if they want. --Badger 20:00, 7 October 2011 (MDT)
ok was just making sure! Thanks! Dj00345 20:11, 7 October 2011 (MDT)

New 4e Deity Template

Hey Green Dragon,

I created a new Deity Template that follows the 4e Player's Handbook. It's here. I am also going to do a Racial Hybrid system like the Class Hybrid system. If there's any ideas for that, I'm open for suggestions. I'll create a draft of it in my sandbox.

--Axl 17:06, 14 October 2011 (MDT)

I'm finished with my Racial Hybrid system, if you want to check it. --Axl 11:39, 5 November 2011 (MDT)

Welcome Message

I'm not really sure what your system is, but you could probably save yourself some time if you only welcomed the people who were still around. I counted about 30 people in this most recent batch that I have blocked for being spammers. JazzMan 20:23, 30 October 2011 (MDT)

It would probably save time, true, but in any case I just go up the user creation log so I click them in any case. --Green Dragon 20:28, 30 October 2011 (MDT)

Cloud flare

The new ip protection tool you are using is stop ping me from accessing at work

What is the error message you are getting exactly? Does it prompt for a captcha? Was this the case a month ago (before the protection settings were increased based off levels of vandalism)? --Green Dragon 18:03, 2 November 2011 (MDT)
Mind if I pop in here? Are you sure that it's the ip protection tool, or if it's your work place blocking it? --Axl 21:43, 4 November 2011 (MDT)

4e Race Preload

Discussion moved to Talk:4e Race Preload#Racial Options. --Green Dragon 12:15, 21 December 2011 (MST)

Restarting the Warmage

Hey Green Dragon. I appreciate the effort on your part on keeping my idea from being deleted over the past couple of years. I've seriously neglected completing it, but to be honest I was in the process of creating powers as I posted the first information on the class over two years ago. I've recently happened upon my old notebooks and have been revising old powers I'd written there (but not posted here) and have reformed my approach to the class. I'm currently in school for Game Art and Design, so this is a wonderful outlet for my Systems Design work. As such, I'll be completing this class over the next few months.

Again, I thank you for your unexpected patience in this matter.

--Biral 18:22, 28 November 2011 (MST)

Help and review

== Greetings Green Dragon ==
I am but a humble servant of fantasy world and seek to enlighten my self.
I have contributed a few things to this wiki and have used a lot more for my own campaigns.
But so fare I haven't seen much user activity on this mighty site other then new things being added from time to time.
I know there is a discussion page for literally every thing in her, but they don't seam to be used that much (or am I just browsing the wrong subjects?).

There fore I write to you as the first administrator I have detected and humbly ask if there is a place where I can ask people so go over my additions?
Also I would like to use this opportunity to applaud you for you work as I know that it can sometimes be frustrating being an admin.

Sincerely
[Elven King Slave]

Which pages in particular? --Green Dragon 21:43, 28 November 2011 (MST)
If you go to my user page they are all linked under "my submissions", but her they are for quick reference.
[Weapon Summoner(3.5 class)][Boltgun(3.5 Equipment)][Lasgun(3.5 Equipment)][Shield_Knight_(3.5e_Prestige_Class)]
--ElvenKingSlave · Weapons Summoner · Talk 02:09, 29 November 2011 (MST)
I took a look at them. --Green Dragon 13:09, 1 December 2011 (MST)
Thanks ill find time to adjust them. --ElvenKingSlave · Weapons Summoner · Talk 15:23, 1 December 2011 (MST)
No problem. If you need any help let me know. --Green Dragon 16:42, 1 December 2011 (MST)
I have done some changes as you suggested and since none of my friends come with any constructive suggestions I would like you to look at it again when you have time and tell me if its still underpowered (If I understood your balance issue correct) --ElvenKingSlave · Weapons Summoner · Talk 08:08, 2 December 2011 (MST)
I took a look at it again. If you need any help let me know. --Green Dragon 11:31, 2 December 2011 (MST)
I have redone most of the features and would like an opinion when you have time. --ElvenKingSlave · Weapons Summoner · Talk 04:46, 5 December 2011 (MST)

Sourcebook/Campaign

Hi Green Dragon, I wonder if it is possible to put a Campaign in the sourcebook section. I think this would make reading and understanding the Campaign easier. --Warkan 18:03, 28 November 2011 (MST)

Of course. It may make sense to link to the campaign as appropriate. --Green Dragon 21:42, 28 November 2011 (MST)
I don't understand your answer.
I think this might be because I didn't explain myself enough. I want to contribute an adventure but find that the source book template would make it way simpler to understand. So can I put an adventure in the sourcebook section? --Warkan 08:25, 29 November 2011 (MST)
I worded it to be vague ;). I did this because you should link to it or transclude it. If your wiki syntax has not reached this level of understanding I intended my answer to imply that you could supply a link (and I would fix it). Of course neither must be the case as eventually it would be corrected one way or the other– no matter how you went about it. --Green Dragon 22:36, 29 November 2011 (MST)

Thanks for clarifying. I have not actually put the campaign up yet, but when I do, I will link it here. --Warkan 19:53, 30 November 2011 (MST)

Formatting and licensing for transcriptions

Greetings- I've been working on and off on transcribing one of Mongoose Publishing's books in the Quintessential series (The Quintessential Monk). I'm pretty sure I've been getting the formatting in acceptable shape, but would love someone with an experienced eye to take a look. However, the main question I have is about the OGL. I've been taking the "please help transcribe" tags on this page at face value, and have basically been doing just that: a word-for-word transcription. Are there exceptions or limitations to what can and can't be legally duplicated on the internet? I'm not very clear on how the OGL works. Any help would be greatly appreciated. Thank you. --Klichka 17:21, 6 December 2011 (MST)

The formatting works. The ideal is like Crime and Punishment - The Players Sourcebook of the Law with the links but if you don't do it like that someone will come along eventually and format it like that.
You can post every word. The exceptions are Product Identity which basically can only be used by Wizards anyway. --Green Dragon 11:58, 10 January 2012 (MST)

Looking for advice... and help.

I have built a few things here on the D&DWiki page, all under the 3.5 sections; (Jachyrines, Matter Shifter, Velloreans, SoulChain Warrior, Slithzirkhai and a few others).

I am trying to find someone who can look these over and tell me if I have over-powered them or made the Level Adjustment on the races right.

Also, I am looking at building two "mirror" 3.5 classes, the Lunarian and Solarian... Basically mages that draw their power from the Moon and Sun, respectively. I am wanting to do it up like the psion with "Spell Points" vs a set number of spells per day, so they have like a set amoung of "Lunar Power" or "Solar Power" to cast spells with. Its just I want to make sure I go about it right, so if you know of anyone who can give me advice on how to go about this without overpowering it, but not making it completely weak and useless, that'd be great. And yes, they'd each have powers they gain on certain levels related to their source of power.

Also, is there any word on getting the small book "Secret College of Necromancy" transcribed into the site? I used to own it, my ex lost it, and now I can't find a new one. Just curious.

Many Thanks for any help; Tom.

Redirect

Um, the redirect isn't working properly. I want to move my User: Axl/My Sandbox/4e Future Power to User: Axl/My Sandbox/4e Future Power Preload, but it already has that name as a redirect. While I was trying to move it, I clicked the cancel button on my browser so that I could change it to the latter link, but it instead goes to the former when I click on the link. Can this be fixed, and when is the 4e Power creator going to be fixed? The reason why I created the 4e Future Power Preload was so that I would not have to type out the links that say <!-Main PageHomebrew →-> etc. What I'll do is I'll create a breadcrumb that I'll just type into the power while I'm creating it, but could you fix the redirect? Thanks. --Axl 17:30, 24 December 2011 (MST)

Are those pages now how you wanted them to be?
Also, Add New 4e Power is working– or what do you mean is not? --Green Dragon 12:46, 27 December 2011 (MST)
When I tried it in my D&D 4.0 Future sourcebook, it didn't work. I thought that the add power in my sourcebook and the homebrew was the same. I have since changed it. I'll try it again, this time in the homebrew. Thanks. --Axl 22:30, 30 December 2011 (MST)
Oh, did you fix the redirector? I said it wrong. I said "could you fix the redirect?" when I should have said "could you fix the redirector?". Sorry about that. I'm deleting the 4e Future Power Preload. Sorry for the hassle. --Axl 22:31, 30 December 2011 (MST)

4e race design guideline

Hi Green Dragon, just a quick question about my article 4e Race Design (DnD Guideline). I see it's been copied to 4e Race Add Instructions‎ - If make further updates (and I do have some planned), will this need to be copied over manually? I was also hoping someone else familiar with 4e mechanics could check through this before it's used "officially", what do you think? :) Marasmusine 07:20, 4 January 2012 (MST)

I read through it and it seemed to cover the design bases well. And no, when you change it will automatically change (it is transcluded). --Green Dragon 14:25, 4 January 2012 (MST)
Great, thanks. Marasmusine 15:50, 4 January 2012 (MST)

Stub tag removal

I recently created a new prestige class, Badass (3.5e Prestige Class). It isn't rated yet or anything, but for the most part it is complete. How do I go about getting the stub tag removed? -Silverkin 15:01, 4 January 2012 (MST)

Does the wording on Template:Stub make more sense now? --Green Dragon 15:45, 4 January 2012 (MST)

Fixing double redirects

There are quite a few double redirects to be cleaned up manually, and they have been accumulating far faster than they have been fixed manually. Due to this, I was wondering if it would be worth it to have a programming adept wiki user, or hire somebody in your area to design a program to automatically fix the problem by cleaning up double redirects. I'm fairly certain Wikipedia has a form of this. Would it be possible to base the program off a similar idea? With the number of double redirects growing it may be worth investing the time. On a similar note, if a program like this is made, would it be possible to alter it slightly to perform other menial tasks around the wiki such as moving (DnD) pages to their respective edition? I realize many of them have already been moved, however some are still in the wrong places. --173.245.55.116 22:05, 8 January 2012 (MST)

Does the following python code help you?
#!/usr/bin/python3.0

#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

# We need to use the urllib library to access MediaWiki's API
import urllib.request
from urllib.parse import quote_plus, urlencode
from urllib.error import URLError, HTTPError
from http.cookiejar import CookieJar

# Also, to parse the output data we need to handle XML
import xml.dom.minidom as minidom

# We need to handle HTML parsing
from html.parser import HTMLParser
import re

# We need to be able to handle temporary download files
from uuid import uuid4
import os

# Here, we are going to build an HTML parser for editing pages
class EditPageParser(HTMLParser):
    # We are looking for:
    wpStarttime = ''
    wpEdittime = ''
    wpEditToken = ''
    wpSave = ''
    wpAutoSummary = ''

    def handle_starttag(self, tag, attrs):
        # Determine if this is a tag we are interested in
        if tag == "input":
            name = ""
            value = ""
            for attr in attrs:
                if str(attr[0]) == "value":
                    value = str(attr[1])
                elif str(attr[0]) == "name":
                    name = str(attr[1])

            # Now, we can save the value to the given vars
            if name == "wpStarttime":
                self.wpStarttime = value
            elif name == "wpEdittime":
                self.wpEdittime = value
            elif name == "wpEditToken":
                self.wpEditToken = value
            elif name == "wpSave":
                self.wpSave = value
            elif name == "wpAutoSummary":
                self.wpAutoSummary = value

class MWBot:
    """This is the most basic structure for a simple MediaWiki bot.

    It supports the following functions:
    """

    def __init__(self, wikiurl):
        """This will set the URL for this instance to the provided URL
        
        Parameters:
            The arguments should look something like the following:
            wikiurl = "http://www.WIKINAME.com/w/"
        """

        self.url = wikiurl
        self.cookiejar = CookieJar()

        # We need a regular expression to parse the content from a textarea
        self.wpTextbox1_sub = re.compile(
            r"""^.*<textarea.*?name="wpTextbox1".*?>(.*?)</textarea>.*$""", \
            re.I | re.M | re.S)

    def _retrieve_page(self, url, headers=None, post=None):
        """This function will retrieve and return the given URL"""
       
        opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(self.cookiejar))
        data = None
        if post:
            data = urlencode(post)
        try:
            request = opener.open(url, data=data)
        except HTTPError as e:
            print('Request failed with HTTP error code: %s' % e.code)
            return (None, None)
        except URLError as e:
            print('Request to URL failed: %s' % e.reason)
            return (None, None)

        # Now, save the file [hack]
        filename = "/tmp/MWBot.download-%s" % uuid4()
        with open(filename, 'wb') as fh:
            fh.write(request.read())
        headers = request.headers

        # We need to read in and load the file
        with open(filename, 'r') as fh:
            result = fh.read()

        # Now remove the temporary file
        os.remove(filename)

        # Now, we should have the appropriate response page
        return (result,headers)
    
    def _list_request(self, args, keep, keepchildren=None, cont=None):
        """This function will perform a basic request to the API for lists

        Parameters:
            The arguments for the request should be a dict in args, structured
            in the following manner: {'action': 'query', 'prop': '...} etc.
            
            The XML args desired should be stored in the list keep.

            If keepchildren is specified, then any child nodes in keepchildren
            will be have their first child's content saved

            If cont is true, then the query-continue field will be returned

        Returns:
            A list of all XML items found in keep. This will be a list of
            args in a dict.
        """

        # First, we need to build the query URL
        # TODO: Sanitize inputs!
        url = self.url + "api.php"
        url += "?format=xml"
        for arg in args:
            url += "&%s=%s" % (quote_plus(arg), quote_plus(args[arg]))

        # Perform the actual request
        (result,headers) = self._retrieve_page(url)
        if not result:
            return False

        # Now, we need to parse the XML response
        # We are only going to keep the XML args specified in keep
        dom = minidom.parseString(result)

        # We want to keep stuff in the query
        query = dom.getElementsByTagName("api")[0]\
            .getElementsByTagName("query")[0]

        main_query = query.lastChild

        # We can look through all items to main_query,
        # saving items in keep
        list = []
        for item in main_query.childNodes:
            temp = {}
            # Grab all of the items
            for wanted in keep:
                temp[wanted] = item.getAttribute(wanted)
            if keepchildren:
                for child in keepchildren:
                    content = item.getElementsByTagName(child)[0].firstChild.\
                        firstChild.data
                    temp[child] = content
            # Now, add this result to the global list
            list.append(temp)

        # Determine if we want to keep the continue
        new_cont = None
        if cont:
            try:
                query_continue = dom.getElementsByTagName("api")[0]\
                    .getElementsByTagName("query-continue")[0]
                child = query_continue.firstChild
                new_cont = child.getAttribute(cont)
            except:
                new_cont = None

        if cont:
            return list, new_cont
        else:
            return cont

    def start_edit_page(self, title):
        """Return the content of a page about to be edited"""

        # First, we need to get:
        # wpStarttime
        # wpEdittime
        # wpEditToken
        # wpSave
        # wpAutoSummary

        # We are going to need to request the "action=edit" page
        url = self.url + "index.php"
        url += "?title=" + quote_plus(title)
        url += "&action=edit"
        (editpage,editpage_headers) = self._retrieve_page(url)
        if not editpage:
            return False

        # Then, we can pass this page through our parser
        self.editparser = EditPageParser()
        self.editparser.feed(editpage)

        # Unfortunately, we cannot use the parser to grab the page content
        # (it breaks on brackets)
        # Thus, we will use regular expressions
        content = re.sub(self.wpTextbox1_sub, r"\g<1>", editpage)

        # We need to unescape this
        content = content.replace(">", ">").replace("<", "<")
        content = content.replace(""", "\"").replace("&", "&")
        content = content.rstrip()

        # We can now return the content to be modified
        return content

    def finish_edit_page(self, title, newcontent, summary):
        """This will complete editing a given page"""

        # First, we need to construct the POST fields
        data = []
        data.append(("wpStarttime", self.editparser.wpStarttime))
        data.append(("wpEdittime", self.editparser.wpEdittime))
        data.append(("wpEditToken", self.editparser.wpEditToken))
        data.append(("wpSave", self.editparser.wpSave))
        data.append(("wpMinoredit", "1"))
        data.append(("wpAutoSummary", self.editparser.wpAutoSummary))

        # We need to include the new page contents as well as the edit summary
        data.append(("wpTextbox1", newcontent))
        data.append(("wpSummary", summary))

        # Now, we need to perform the actual request
        url = self.url + "index.php"
        url += "?title=" + quote_plus(title)
        url += "&action=submit"
        (editpage,editpage_headers) = self._retrieve_page(url, post=data)

        if not editpage:
            return False

        # We are done with the given editparser
        del self.editparser

        return True

    def edit_page(self, title, newcontent, summary):
        """This will edit the give page"""

        # Load the page to be editted
        self.start_edit_page(title)

        # Then, finish the page and return the result
        return self.finish_edit_page(title, newcontent, summary)

    def get_embeddedin_pagetitles(self, pagetitle, cont=None):
        """This will return a list of all page ids of pages embedded in
        
        Parameters:
            The title of the page being queried must be specified
            The title to continue at

        Returns:
            A list of the pageids of embedded pages
            The title to continue with
        
        Note: This will return the first 50 results.
        """

        # First, we need to construct the query
        args = {}
        args["action"] = "query"
        args["list"] = "embeddedin"
        args["eititle"] = pagetitle
        args["eilimit"] = "50"
        if cont:
            args["eicontinue"] = cont

        # Now, we can query for the page
        keep = []
        keep.append("title")

        result, new_cont = self._list_request(args, keep, None, "eicontinue")
        if result == False:
            return False

        # To just return the page ids, we need to 
        # move all of the data out of dictionaries
        titles = []
        for item in result:
            titles.append(item["title"])

        return titles, new_cont

    def get_page_contents(self, pageid=None, pagetitle=None):
        """This will return the contents of a page

        Parameters:
            You can query for the particular page by either page id or page
            title.  If pageid is set, then pagetitle will be ignored.

        Returns:
            The contents of the page
        """

        # First, we need to construct the appropriate query
        args = {}
        args["action"] = "query"
        args["prop"] = "revisions"
        args["rvprop"] = "content"
        # Determine whether to use pageid or pagetitle
        if pageid:
            args["pageids"] = pageid
        else:
            args["titles"] = pagetitle

        # Now, we can query for the page
        keep = []
        keep.append("title")
        keepchildren = []
        keepchildren.append("revisions")

        result = self._list_request(args, keep, keepchildren)
        if result == False:
            return false

        return result[0]['revisions']

    def login(self, username, password):
        """This will log in a given user

        Parameters:
            username - a string containing the username to log in as
            password - a string containing the password to use to login
        """

        # We need to construct the login URL
        url = self.url + "api.php?format=xml"

        data = []
        data.append(("action", "login"))
        data.append(("lgname", username))
        data.append(("lgpassword", password))

        # Now, carry out the login request
        (page, headers) = self._retrieve_page(url, post=data)

        # Now, we need to parse and send the request again, but this time
        # with the login token as well
        dom = minidom.parseString(page)

        # We want to get the login token
        token = dom.getElementsByTagName("api")[0]\
            .getElementsByTagName("login")[0].getAttribute("token")
        data.append(("lgtoken", token))

        # Now, we want carry out the login request again
        (page, headers) = self._retrieve_page(url, post=data)

        # TODO: Carry out a "is this success" procedure
        if not page:
            return False

        return True
The following shows how to use the above code.
#!/usr/bin/python3.0

#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

# We need to use the MWBot
from mwbot import MWBot

# We need to use regular expressions
import re

# Also, we want to flush output
import sys

# Load the bot specifically for D&D wiki
bot = MWBot("http://www.dandwiki.com/w/")

# First, login as Green Dragon
bot.login("USERNAME", "PASSWORD")

# We need some regular expressions to match
authors_match = re.compile(r"""\|authors=.*?\n""", re.I | re.M | re.S)
datecreated_match = re.compile(r"""\|datecreated=.*?\n""", re.I | re.M | re.S)
adopters_match = re.compile(r"""\|adopters=.*?\n""", re.I | re.M | re.S)
dateadopted_match = re.compile(r"""\|dateadopted=.*?\n""", re.I | re.M | re.S)

# Retrieve the list of pages embedding Template:Author
cont = None
pages, cont = bot.get_embeddedin_pagetitles("Template:DnD Racial Paragon Class Infobox", cont=cont)
while pages:
    
    print("Found pages: ")
    print(pages)
    print("\nWorking:")

    for page in pages:
        # Work on each page found
        print("\t> %s" % page, end="")
        sys.stdout.flush()

        # If this page contains a colon, warn it
        if page.find(":") != -1:
            with open('infobox_author_removal.badlist.txt', 'a') as fh:
                fh.write("WW\tPage name has a colon: %s\n" % page)

        # If the page is a talk page, don't touch it
        if page.find("talk:") != -1:
            print(" ! Will not edit talk page.")
            with open('infobox_author_removal.badlist.txt', 'a') as fh:
                fh.write("EE\tTried to modify talk page: %s\n" % page)
            continue

        # Grab the content from the page
        contents = bot.start_edit_page(page)
        contents_old = contents

        # Find and remove the |authors= part
        contents = re.sub(authors_match, "", contents)

        # Find and remove the |datecreated= part
        contents = re.sub(datecreated_match, "", contents)

        # Find and remove the |adopters= part
        contents = re.sub(adopters_match, "", contents)

        # Find and remove the |dateadopted= part
        contents = re.sub(dateadopted_match, "", contents)

        # Check and see if there was no change here
        if contents == contents_old:
            print(" ! ERROR: No change made")
            with open('infobox_author_removal.badlist.txt', 'a') as fh:
                fh.write("EE\tDid not make any change: %s\n" % page)
            continue

        # Save the new contents back
        success = bot.finish_edit_page(page, contents, r"""Removed history related parameters -- If necessary please use the "Watch this page" checkbox for authorship. Keep in mind "my preferences" -> "E-mail me when a page I'm watching is changed".""")
        if success == False:
            print(" ! unable to save changes.")
            with open('infobox_author_removal.badlist.txt', 'a') as fh:
                fh.write("EE\tUnable to save changes: %s\n" % page)
        else:
            print(" corrected.")

    print("")

    if cont == None:
        print("")
        print("No more continuation")
        sys.exit(0)

    # Load the next set of pages                                                    
    pages, cont = bot.get_embeddedin_pagetitles("Template:DnD Base Class Infobox", cont)

    print("Continue at:")
    print(cont)
--Green Dragon 20:48, 9 January 2012 (MST)
It's also worth mentioning that this particular user has been blanking pages outside of the rules and guidelines of dandwiki. Please do not do that. Propose deletion instead, or make a discussion about it. Never just blank a page, as that can and often is seen as vandalism. Jwguy 14:35, 23 February 2012 (MST)

Deity Ranks

For some reason their is an error with the deity pages. In the Divine Rank field, when you enter in an applicable information it comes up as {{{DR}}} on the actual page. --Milo High-Hill 05:55, 12 January 2012 (MST)

I made the divine rank parameter only show up when text is present in that parameter. --Green Dragon 09:55, 8 March 2012 (MST)

Forging your own items

Hey! if you reach certain level, are you able to forge, or even create your own weapons, armor, ect. Cuz i wanna make "shell armor" (armor resembling the shell of an armadillo.) --Ja-Snake 22:38, 9 January 2012 (MST)

In which edition? In 4e they removed it because it did not fit the heroic intents of the game. Feel free to make the armor and buy it though or make a variant rule about crafting in 4e. In 3.5e I would recommend making the item and then all you have to do is use Craft (Armorsmithing) to make it in-game. --Green Dragon 11:51, 10 January 2012 (MST)

Flaw submission problem

Hi Green Dragon, Just signed up for D&D Wiki, though I've been here before. I'm trying to submit a character flaw, and the only thing that shows up on the character flaws page is the title, but none of the description and whatnot. Am I doing something wrong, or do the submissions have to be reviewed first? I'll paste the flaw here so maybe you can tell me if the coding is wrong or something... Thanks! =edit= Pasted it in and only that one line shows up.. Argh.. {{3.5e Flaw |name= Large Breasts |types= General |summary= Generally, your large breasts tend to get in the way. |drawback= For whatever reason, your character has been quite well -ahem- endowed. As a result, ever since coming of age your character has noticed a few drawbacks. For one, any Acrobatic checks the character makes take a -5 penalty. The penalty is increased by 1 for each cup size the female has above D. Additionally, any time the character needs to squeeze through a tight spot, her breasts will get in the way again. Any time she has to squeeze through a small tunnel, doorway, escape through a small window, or even push her way through a group of people, she must make an Escape artist check equal to 10 + 1/2 her character level rounded down. The same rule of 1 added to the DC for each size larger than D cup size applies here as well. |roleplay= Generally this can be used for humor's sake, or for misfortune's sake that is up to your DM and how good of a sense of humor he has. I was a very humorous DM with a gentleman who had a curvy female Ninja, and invariably he would mess up the acrobatics roll, so we started joking about her breasts getting in the way, hence this flaw's creation; "Well Dustin, because you chose to build such a well rounded character... Would you care to roll your acrobatics check to jump from that rooftop to the next? A 19. Well normally that jump's DC would be 15. However, since you built such a 'well rounded' character, your DC was 21 because of her DD size chest you keep bragging about. Well luckily you did make the jump, but because of the unequal weight distribution, your character takes a bit of a tumble upon landing, and doesn't land on her feet but rather her stomach and face. She isn't hurt, well, maybe her pride is". <!-- Delete any of the following if they are not used --> |prereqs= Must be FEMALE, Must have breasts of D size or greater |benefit= This flaw gives two benefits: 1 extra feat, and a +2 on Diplomacy checks with any male or female who is attracted to your character |normal= |special= The +2 to Diplomacy only works if your character has 16 Charisma or higher! }}


Green Dragon,
I would like to see this flaw removed. It is immoral. Please, remove it. --Axl 17:12, 9 February 2012 (MST)
And pages like Juvenile Hypertrophy (3.5e Trait) and Elves, Fey (3.5e Race)‎. Feel free to add Template:Delete or Template:Wording to them and see what happens. --Green Dragon 08:54, 29 March 2012 (MDT)
I am unaware of a policy that requires removal of content based on Axl's morality. If this becomes a real debate, expect strong push-back from me. --Ganre 13:36, 29 March 2012 (MDT)
I understand the policy situation, however if Axl could give a convincing reason for the disregarding of that policy it would get done. This is coming from "[i]f a rule prevents you from improving or maintaining D&D Wiki, ignore it". --Green Dragon 14:33, 29 March 2012 (MDT)
I could understand if the feat was blatantly offensive to a reasonable person(happens to be the definition of pornography in the US, as far as the law is concerned), but if a feat is of an adult theme, and well written, I see no way that removing it would improve the wiki. In the above mentioned feat, I feel it is poorly written, but maintains good taste, if a little tongue in cheek. Also, if someone were to desire to make an anime themed character, such traits would really help flesh it out(pun intended). --Ganre 15:06, 29 March 2012 (MDT)
I agree that it could be hard, but one could argue that it is picking an audience while disregarding other audiences (what if someone is not attracted to large breasts, for example). --Green Dragon 17:43, 29 March 2012 (MDT)
It is my understanding that we do not yield to moral, ethical, or social quandaries of any single user, with the content on this site, in regards to the subject matter of the content. Slap an adult disclaimer on the page to fulfill our obligations towards younger or inappropriate audiences, and if Axl wants to propose deletion, let him be met by the community. Otherwise, it'd stay as it is, I believe. Jwguy 19:53, 29 March 2012 (MDT)

Review Request System

I've noticed that it can be somewhat difficult to get reviews on user content, usually requiring contacting individual reviewers to ask for a review. Now, this system does work, but it is far from optimal, especially for newer users on the wiki. What I propose is a new template, say, {{requestreview}}, that would effectively generate a list of completed pages that the author would like feedback on. I don't know a lot about templates, but I don't think it should be especially difficult to start this up. It is my opinion that we'll end up with higher-quality pages overall if we do this. What do you think? -Silverkin 13:20, 24 January 2012 (MST)

That's not a bad idea (and it'd be really easy to implement -- just have the template add pages to Category:NeedsReview or whatever). I see two flaws with it though. 1) a lot of people who post content... don't exactly stick around. We'd need some sort of criteria for removing pages from the category. This shouldn't be a big issue, really. 2) as I've argued here, the rating system is very much messed up and in need of a fix. We really should fix that before we ask people to use it. JazzMan 14:00, 24 January 2012 (MST)
The first issue could be fixed fairly easily, with a bot that removes the template if it was added over two weeks ago, although I don't know it that is feasible. Thus abandoned pages, or pages that have been rated, would drop off the list in two weeks.
I agree with you about the rating system being messed up, but it does provide a way to get feedback on pages. That is to say, it may not work well, but it's better than nothing. -Silverkin 14:43, 24 January 2012 (MST)
I changed the protection for Template:Reviewing Template. Feel free to add a requestreview template and then I will lock it up again. --Green Dragon 15:08, 24 January 2012 (MST)
Okay, I think I did it right, but I'm not sure. I used the others as a guide for formatting, so it should work okay, but I'm notoriously bad at coding. My apologies if I broke the page. -Silverkin 16:21, 24 January 2012 (MST)
I locked Template:Reviewing Template back up. It looks good, and I think that after someone reviews the page the template can get removed. I don't think that we need a time frame. --Green Dragon 17:13, 24 January 2012 (MST)
I'm not sure you understood the meaning behind the template. The idea was to provide a way for users to request feedback on a page through the rating system. I should have been more clear about that; looking back, I realize now that I wasn't at all clear about what I meant. -Silverkin 08:40, 25 January 2012 (MST)
Well the rating system is not wiki-wide (since Meta Pages#Improving, Reviewing, and Removing Articles is a much better option). --Green Dragon 09:54, 25 January 2012 (MST)

Trying to do this right.

So I recently created an optimized character build, a melee oriented Dread Necromancer, and I was wondering if you could help me clean it up a bit (with formatting and such). I would like it too look professional, and I simply lack the wiki know how to do so.

Please and thank you, Eonir


Link: http://www.dandwiki.com/wiki/Melee_Specialized_Dread_Necromancer_(3.5e_Optimized_Character_Build)

I took a look at it. --Green Dragon 15:58, 31 January 2012 (MST)

Adding an SRD Class

I would like to add the Favored Soul class to the wiki. How would I go about doing so?

The Favored Soul from Complete Divine is not licensed under the OGL so it cannot be posted here. If you want to, however, you can make more publications look like Complete Divine therefore being more useable. --Green Dragon 10:26, 1 February 2012 (MST)
I assume you mean going into books like Magic of Incarnum and updating some of the pertinent information there?-- Irykyl 10:32, 1 February 2012 (MST)
Right. That is the closest we can get to letting people know about classes such as the Favored Soul. --Green Dragon 10:39, 1 February 2012 (MST)
Got it. I will start on that one. Thanks! -- Irykyl 10:40, 1 February 2012 (MST)
Could you do me a favor and check the publications I have updated, please. I want to make sure I am doing the right thing before I continue with any others. The list of what I have worked on is on my user page. -- Irykyl 09:57, 6 March 2012 (MST)
The publications that you improved are much better. You are definitely doing the right thing. --Green Dragon 09:53, 8 March 2012 (MST)
Thanks for checking them out.-- Irykyl 09:57, 8 March 2012 (MST)

Changing the Feat Section

I have a suggestion GD. I noticed while adding 3.5e feats they don't instantly add to the tables, I checked the code and noticed that each feat has to placed into the table. Wouldn't it be faster and more efficent for adding new feats if it worked like the Spell List section?--Milo High-Hill 07:01, 9 February 2012 (MST)

Yes. Some of those pages are very old and are not dynamic. Others, however, are. For example 3.5e Heritage Feats is the most useful version, but problems still exist (why are there those "—"'s at the end). Yes, they should all be updated to the DnD Heritage Feats. Also Template:3e Feat Table Row Test L2 needs to be corrected (that is where the problem is coming from). --Green Dragon 10:54, 9 February 2012 (MST)
GD, while we are on the subject of feats, is there a way we can add feats from the other published items, i.e. Complete Divine to the Feat tables, or are we going to keep those seperate? -- Irykyl 11:07, 9 February 2012 (MST)
Since they cannot be used in a game (the mechanics are not present) we will not. Feats from 3.5e Open Game Content are supposed to be added, though. --Green Dragon 11:40, 9 February 2012 (MST)
What if we added the mechanics? Or can we? Maybe I am just confused. -- Irykyl 11:47, 9 February 2012 (MST)
We cannot add the mechanics. They are not licensed under an appropriate license, notably the OGL. --Green Dragon 11:50, 9 February 2012 (MST)
OK, I will stick with the brief summaries. -- Irykyl 11:52, 9 February 2012 (MST)
Brief quotes (research papers do this) or summaries (think about movie summaries for example) should be fine. --Green Dragon 14:00, 9 February 2012 (MST)
The recent overhaul of the Feats page should fix the tables on most of the pages. There only pages that still need to be updated are Racial Feats, The Gift Feats, and the Class Feats' and Fighter Feats' sub-pages. --Salasay Δ 11:29, 17 January 2013 (MST)

Race creation

Hey, I'm sorry for writing on your little guied line page. I'm a bit confused on where I'm soupose to start the creation. You see, the setting isint the same as I last visited. Whenever I type in a name for my race I'm sent to the guide line page. I'm not sure where to start my race page. After being sent to guide lines page where do I go?

After using the inputbox on 4e Races can you scroll to the bottom of that page and is there then an edit box? --Green Dragon 17:53, 12 February 2012 (MST)

Campaign dieties

GD, I know yo have been adding dieties, but I was wondering if there is a particular place where dieties such as Reorx from Dragonlance, Dol Darn from Eberron, or even Lolth from the Realms be listed? Would I create a "pantheon" on your handy-dandy dieties page and specify "Dragonlance Dieties" and list them or do yo have a better suggestion? -- Irykyl 10:09, 22 February 2012 (MST)

You can make a pantheon for them. Please, however, do not add the deities since they are not OGC. Take a look at Outer Planes (3.5e Environment) for inspiration on completing such a task while keeping it within the licensing situation. --Green Dragon 10:16, 22 February 2012 (MST)
I am sorry, but I am going to need some clarification. I can make the pantheon and list their names and a brief summary, or don't even mention their names? If I can submit the pantheon, would it look a bit like what Wikipedia has if you typed in "Dragonlance Dieties?" -- Irykyl 10:49, 22 February 2012 (MST)
You can mention their names. Yes, "Dragonlance Deities" is great information, but I don't think that is a pantheon. Start with a pantheon and then we can talk about the individual deities.
The wording does not need to be just a "brief summary". As long as you wrote it (or it is licensed appropriately) you can write it, like Outer Planes (3.5e Environment), explaining the situation to the unknowing reader. Using this wording you will be able to cover the topic well enough, I think. --Green Dragon 11:01, 22 February 2012 (MST)
Well, for Dragonlance there are twenty-five dieties for most ages, and that number drops by one during the Age of Mortals. Dwarves don't believe in one set, elves another etc. It really is one pantheon. I will create a page as an example, and if it doesn't work, we can delete it, and my feelings won't be hurt. That work for you? -- Irykyl 11:17, 22 February 2012 (MST)
That's fine, and if it is a pantheon then I am wrong– but that does not mean your page will be wrong. --Green Dragon 11:19, 22 February 2012 (MST)