Introduction to Ren'Geon


Hey folks, hope you are all doing well. I'd actually intended to post this back in March but...well. It was delayed until now (October 2020.) I've been working on this off and on for a while.  The first  iteration you can see of it is in a LemmaSoft post from March 2017 when I was bumbling my way through stuff. I'm the first to admit that I'm not great at coding stuff, but I try to get better as time goes on. That is to say, I'm not great at Python or Ren'Py but they're the closest I can get to doing any code despite years of trying to learn it. 

So the aforementioned thread helped me get to this result:

init python:              # this will run before the game loads
    def roll_stats():     # the name of the function
        a = renpy.random.randint(1, 6)     # first roll of d6
        b = renpy.random.randint(1, 6)     # second roll of d6
        c = renpy.random.randint(1, 6)     # third roll of d6
        d = renpy.random.randint(1, 6)     # fourth roll of d6
        list = [a, b, c, d]     # list the resulting rolls
        list.sort()             # sort the rolls from larger to smaller 
        add = sum(list[1:3])    # add the three highest rolls
        return add              # return sum of add
default physical = 0            # define default strength stat
label start:
    $ physical = roll_stats()    # determine physical stat by using roll_stats() function

What the above function does is  roll four die (d6), drop the lowest result and add the remaining for an output, as one might do for rolling their base stats at the beginning of character creation. This makes use of renpy.random, which is different from the standard Python random module. 

Later in April 2017 I posted the following thread on Lemmasoft, expanding the original concept. 

The following would be placed in options.rpy

init python:
    def roll_stats():
        a = renpy.random.randint(1, 6)
        b = renpy.random.randint(1, 6) 
        c = renpy.random.randint(1, 6)
        d = renpy.random.randint(1, 6)
        list = [a, b, c, d]
        list.sort()
        add = sum(list[1:4])
        return add
default physical= 0
default agility = 0
default endurance = 0
default charm = 0
default mental = 0
default perception = 0
default movement = 0
default ability = 0

To roll your initial stats in the script.rpy file:

$ physical = roll_stats()
$ agility = roll_stats()     
$ endurance = roll_stats()     
$ charm = roll_stats()     
$ mental = roll_stats()     
$ perception = roll_stats()
"Your physical is [physical]. Your Agility is [agility]. Your endurance is [endurance]. Your charm is [charm]. Your mental is [mental]. Your perception is [perception]."

To choose a race from the core races in the species_select.rpy file:

label species_select:      
    menu:
         dm "Now let's pick a species."
         "Dragonfriendos":
             $ race = "Dragonfriendos"
             $ language_Humanish = True
             $ language_draconic = True
             $ physical += 2
             $ charm += 1
             $ movement += 30
             "You chose Dragonfriendos! You speak Humanish and Draconic languages. Your physical has increased by two to become [physical]. Meanwhile your charm has increased by one, becoming [charm]. Your movement is [movement]."
             jump job_select
         "Dwarf":
             $ race = "Dwarf"
             $ language_Humanish = True
             $ language_dwarvish = True
             $ endurance += 2
             $ movement += 25
             $ alteredvision += 60
             #$ size = medium
             #advantage on saving throws against poison
             #resistance against poison 
            #proficiency with battleaxe, handaxe, light hammer, warhammer
            #tool proficiency of choice: smith, brewer, or mason
             #Stonecunning: Whenever you make an mental (History) check related to the origin of stonework, you are considered proficient in the History skill and add double your proficiency bonus to the check, instead of your normal proficiency bonus.             "You chose Dwarf! You speak Humanish and Dwarvish languages. Your endurance has increased by two to become [endurance]. Your movement is [movement]. You have Dark Vision up to [alteredvision] feet."
             jump job_select
         "Fae":
             $ race = "Fae"
             $ language_Humanish = True
             $ language_Fae = True
             $ agility += 2
             $ movement += 30
             $ alteredvision += 60
             "You chose Fae! You speak Humanish and Faerish languages. Your agility has increased by two to become [agility]. Your movement is [movement]. You have Dark Vision up to [alteredvision] feet."
             jump job_select
         "Gnome":
             $ race = "Gnome"
             $ language_Humanish = True
             $ language_gnomish = True
             $ mental += 2
             $ movement += 25
             $ alteredvision += 60
             "You chose Gnome! You speak Humanish and Gnomish languages. Your mental has increased by two to become [mental]. Your movement is [movement]. You have Dark Vision up to [alteredvision] feet."
             jump job_select
         "Fae-touched":
             $ race = "Fae-touched"
             $ language_Humanish = True
             $ language_Fae = True
             #one extra language of choice
             $ charm += 2
             #choose two other ability scores to increase by 1.
             $ movement += 30
             $ alteredvision += 60
             "You chose Fae-touched! You speak Humanish and Faerish languages. Your charm has increased by two to become [charm]. Your movement is [movement]. You have Dark Vision up to [alteredvision] feet."
             jump job_select
         "Tusked":
             $ race = "Tusked"
             $ language_Humanish = True
             $ language_orc = True
             $ physical += 2
             $ endurance += 1
             $ movement += 30
             $ alteredvision += 60
             "You chose Tusked! You speak Humanish and Tusky languages. Your physical has increased by two to become [physical]. Meanwhile your endurance has increased by one to become [endurance]. Your movement is [movement]. You have Dark Vision up to [alteredvision] feet."
             jump job_select
         "Weefriendos":
             $ race = "Weefriendos"
             $ language_Humanish = True
             $ language_Weefriendos = True
             $ charm += 2
             $ movement += 25            
             "You chose Weefriendos! You speak Humanish and Weefriendos languages. Your charm has increased by two to become [charm]. Your movement is [movement]."
             jump job_select
         "Human":
             $ race = "Human"
             $ language_Humanish = True
             $ physical += 1
             $ agility += 1
             $ endurance += 1
             $ charm += 1
             $ mental += 1
             $ perception += 1
             $ movement += 30
             "You chose Human! You speak Humanish language. Each of your ability scores has increased by 1. Your physical is now [physical]. Your agility is now [agility]. Your endurance is now [endurance]. Your charm is now [charm]. Your mental is now [mental]. Your perception is now [perception]. Your movement is now [movement]."
             jump job_select
         "Demon-touched":
             $ race = "Demon-touched"
             $ language_Humanish = True
             $ language_demonic = True
             $ charm += 2
             $ mental += 1
             $ movement += 30
             $ alteredvision += 60
             "You chose Demon-touched! You speak Humanish and demonic languages. Your charm has incrased by two to become [charm]. Meanwhile your mental has increased by one to become [mental]. Your movement is [movement]. You have Dark Vision up to [alteredvision] feet."
             jump job_select

In the current version I've moved the species script bits from script.rpy to species_select.rpy and have been trying to make some quality of life improvements. Progress has been slow due to 2020 being the way it is and my poor health also being the way it is. 

I hope this has provided some insight into the process of making this tool and I hope that I'll be able to add to it and make improvements as time goes on. 

Thank you for reading. 

Important: I've updated this page as of January 17, 2023 to make temporary adjustments in response to recent news about the OGL. I will update to further polish and make this project distinct from any D20 OGL to prevent issues in the future.

Files

RenGeon.zip 646 kB
Oct 24, 2020

Get Ren'Geon

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.