Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0b2457e
Delete rpg-complex.py
Duriel7 Jan 13, 2025
19811b4
fix: Now the player can enter, exit, and re enter the dungeon without…
Duriel7 Jan 15, 2025
f50b18b
new ideas and bug fixed
Duriel7 Jan 27, 2025
369cced
feature: added preparation for exploration, and corresponding global …
Duriel7 Jan 27, 2025
85bc058
WIP: preparing exploration function + small fixes in the code
Duriel7 Jan 27, 2025
226ca21
feat: added function skeletons for exploration functionality
Duriel7 Feb 6, 2025
ee5de53
WIP: continuing implementation of exploration function
Duriel7 Feb 6, 2025
cda9f9e
WIP: files for organization created
Duriel7 Feb 10, 2025
cd5f7cd
WIP: small modification of exploration function
Duriel7 Feb 10, 2025
80f1358
WIP: continuation of exploration feature implementation
Duriel7 Feb 11, 2025
df013a7
WIP: file separation pending
Duriel7 Feb 11, 2025
1fd2625
feat/fix/WIP: database connection and feeding finally separated in th…
Duriel7 Feb 12, 2025
ad494c0
WIP: prepared lists file first step
Duriel7 Feb 12, 2025
480b37c
WIP: lists are being made in the right file
Duriel7 Feb 13, 2025
0c4984b
WIP: Lists completion in progress + new ideas in file
Duriel7 Feb 13, 2025
49d8e6f
feat/WIP: templates for monsters are now functional for goblins
Duriel7 Feb 13, 2025
17c85dc
WIP: importation of few more data in the lists file
Duriel7 Feb 13, 2025
7be03e0
WIP: list update
Duriel7 Feb 14, 2025
e4d7424
WIP: added demons in monsters list
Duriel7 Feb 14, 2025
dc471ec
WIP: ihneritance tree functional for goblin type
Duriel7 Feb 14, 2025
8dbb4fa
WIP: organized template lists and added origin lists
Duriel7 Feb 14, 2025
026a7ad
WIP: organized better the lists file + added characteristics to templ…
Duriel7 Feb 14, 2025
3e05e9d
WIP: added idea -> damage types need specific characteristics ; added…
Duriel7 Feb 18, 2025
e57cc8d
WIP: lists progress, added stats for stamina and mana + regeneration,…
Duriel7 Feb 18, 2025
68d895d
WIP: added some monster templates + added idea for frequencies of enc…
Duriel7 Feb 18, 2025
b2dc29f
WIP: precised more lists and indications
Duriel7 Feb 18, 2025
0766be0
WIP: lists updated with detailed dictionaries for human origin and en…
Duriel7 Feb 19, 2025
f4cd2e0
WIP: noted few idead + revamped some lists + made new dictionaries
Duriel7 Feb 19, 2025
6f65dbc
WIP: noted ideas + redefined the way human origin will be given
Duriel7 Feb 19, 2025
7ca4a49
WIP: updated lists file + prepared environment types templates
Duriel7 Feb 19, 2025
ccb86af
WIP: added climatic events in previsions + environment types ltemplat…
Duriel7 Feb 19, 2025
338882a
fix: fixed some dictionary wrong key names
Duriel7 Feb 20, 2025
b7eed3f
WIP feat: implemented new way to calculate coins and XP points for hu…
Duriel7 Feb 20, 2025
0fa2553
WIP: ideas added, precisions updated
Duriel7 Feb 20, 2025
14ab99d
WIP: pushing a new idea just to save it
Duriel7 May 3, 2025
0b900ba
chore: renaming files
Duriel7 Sep 16, 2025
99f1408
adding to ideas
Duriel7 Sep 16, 2025
b5f399a
adding to ideas
Duriel7 Sep 30, 2025
977779b
bunch of fixed done
Duriel7 Sep 30, 2025
e539de3
WIP: more lists and ideas have been noted
Duriel7 Sep 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 58 additions & 5 deletions ideas.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,64 @@
features :

make different areas for start
merchant
make flee chance dependent on mob with a parameter
make quests
random merchants
make flee chance dependent on mob with a parameter (eg : speed or agility) + stamina left
make quests procedurally generated
make floors for the dungeon with floor bosses
make semi random champions and elites spawns
make around village exploration richer, find items, encounter merchants, being ambushed
make choices done by key presses instead of typing a enter each time
randomize some properties like power or health points
make undead monsters have a living state instead of a specific species => abiity for damage types to be efficient against undead + original species
find a way to use ranks but differenciate numeral ranks from letter ranks
make a random name (composed of syllabs) engine for village names
make defined major NPC in a list but make random npc register by characters so it randomizes for every player
add a tag system to make specific damage easier : dictionary of tags inside the dictionary of each template and definition
maybe : include exchange between characters if possible

save feature :
save the boolean for creation and feeding of databases => python file or external file ?
save characters by player and one folder containing all the save file for each player

exploration feature :
integration wanted : exploration => combat OR merchant OR find item OR find place OR find tumb with epitaphs or items...
make a small random to have events playing in the dungeon such as find an item, see a monster and decide to attack or not, find a chest, a hidden way, or a trap
make a counter in case randomness chooses too many times in a row the same monster (store monster name, increment counter, if counter > x then choose another monster)
OR implement dictionaries to have monster frequencies
OR keep the list and make a dictionary with a zip against a list of frequencies
make environment types have a certain difficulty factor : for monsters that appear and climatic events like sandstorms or snow storms, floods... for random funny events
hardcoded dungeons are handplaced into the world, but procedurally generated ones can appear virtually anywhere

debug :
combat feature :
make combat decisions based on character class
make subfunctions for combat turns so I can decide for initiative from the player or from the monster
make another function for choosen combat when the exploration function gives the monster itself, which will call subfunctions
make an arena system with opponent lists (raised monsters, human classes) with another combat function called arena
make a combat loop or partial loop for the arena to be able to alter coins and XP gains
humans have a specific arena characteristic for coins because there will be clandestine arena battles in the wild

death handling feature :
if resurrection function called, it will handle XP and coin losses and resurrect player at 50% life
if not called, ironman mode is activated, and that character is deleted from memory

npc feature :
random npc : names, surnames, nicknames, origin (country, continent, city), specialization (job, class), personalities
make dictionaries for each characteristic

find why the global variable doesn't work for the save of player's data when going out an in the dungeon
statistics feature :
add stats to character templates and definitions
differenciate main and secondary stats
derived stats formulas =>

classes feature :
make classes real dictionnaries to choose from
each class will call it's own definition and template upon choice

transform :
dungeon function to have choice which then leads to other functions
exploration function to be different depending on environment around villages

final before continuing dev :
=> separate functions into files : done for database !

debug :
92 changes: 92 additions & 0 deletions precisions.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
LISTS :

human list :

humanoid list :
corrupted humans => will have some human origins and different levels and ranks
corrupted elves => dark, high, wood, blood (unique to corrupted ones), crystal (crystal elves are elves imprisoned in stone by an ancient curse, end game enemy)
corrupted dwarves => deep, high, forest, blood (same as elves counterpart), crystal (same)
beastmen => centaur, lizardman, wolfman, foxman, tigerman, lionman, dogman, catman, goatman, cowman
homonculii => homonculus,

pseudohumanoid list :
goblinoids => goblin, hobgoblin, goblin warrior, goblin lieutenant, goblin chief, goblin priest, goblin general, goblin king, goblin emperor
orcoids => orc, high orc, orc warrior, orc priest, orc chief, orc general, orc king
ogres => ogre, red ogre, green ogre, blue ogre, black ogre, white ogre, mutant ogre, demonic ogre, kijin = divine ogre

undead list :
vampire list =>
zombie list => zombie, ghoul, plant zombie (corpse invaded by plants), zombie beast, lich, archlich, dracolich
skeleton list => skeleton, skeleton warrior, skeleton mage, skeleton knight, skeleton general, skeletal beast, skeletal demon, skeletal dragon
ghost list => dead spirit, ghost, fallen spirit, corrupted spirit
specter list => specter, wraith, fantom, poltergheist, animal specter, divine specter

demon list :
demonic beast => demonic animal (choose species),
lesser demon => imp, great imp,
medium demon =>
greater demon =>
high demon =>
lords =>
archdemon =>

spirit list :
elemental => nymph, djinn,
magic => djinn,
divine => djinn (named), Sylphide (wind), Callypso (water), Ifrit (fire),

slimy list :
slime => slime (base), glutton slime, plant slime, carrion slime, poison slime, rocky slime, metal slime, crytal slime (base slime but can harden to protect itself),
mana slime (mana fluid charged base slime)
mud => animated mud, muddy corpse (undead too)
gel =>

beast list :
animal =>
deformed animal =>
animal spirit =>

insectoid list :
flying =>
creeping =>
digging =>

vegetal list :
plants => carnivorous plant,
plant spirit =>

dragon list :
wyvern =>
real dragon =>
draconoid (small dragons or manlike dragons who cannot talk) =>
dracohuman (diluted blooded dragons with humans) =>

for cities towns and villages :
make dictionnaries with few characteristics, as name, country, continent, chief or mayor name, specialty (like a food, drink, type of cloth...)...
...environment type (when hardcoded - will see to use cardinal directions for procedurally generated ones, or select environmeent before to assign after)...
...type : village, town, city, or capital
make new lists in order to randomly assign those when procedurally generated
do double lists : one for only name, for story purposes ; the other for the entire definition and template

*************************************************************************

STATS :

main :

add char stats => strength, dexterity, agility, vitality, energy, luck => dictionary ?
add regeneration for life, stamina and mana, based on class or monster species/type
notes :
=> for certain monsters life regen is not 0 (vampire ?)
=> life regen might be negative for some undead

secondary :

speed
masteries : weapons, armors, magic

derived :

flee factor => from agility
power => strength + weapon mastery + wweapon damage + skills + bonus
defense => armor mastery + skills + bonus
Binary file not shown.
Binary file added src/__pycache__/database_feed.cpython-313.pyc
Binary file not shown.
Binary file added src/__pycache__/lists.cpython-313.pyc
Binary file not shown.
Empty file added src/combat.py
Empty file.
24 changes: 24 additions & 0 deletions src/database_connection.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,26 @@
import sqlite3

#Connection to database
def dbconnect():
connection = sqlite3.connect('database/RPG_Database.db')
return connection

#Cursor declaration to feed database
def dbcursor():
connection = dbconnect()
return connection.cursor()

#In case of error in the except block
def dberror(error):
print("Error ", error)
dbConnect = dbconnect()
dbCursor = dbconnect()
dbConnect.rollback()
dbCursor.rollback()

#And finally close all when done
def dbclose():
connection = dbconnect()
cursor = dbcursor()
connection.close()
cursor.close()
82 changes: 82 additions & 0 deletions src/database_feed.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import random, math, sys
from database_connection import *

try:

#Database tables creation functions
def databaseSaves():

#Calling needed variables from databse connection file
connection = dbconnect()
cursor = dbcursor()

#Create saves table
cursor.execute("""
CREATE TABLE IF NOT EXISTS saves(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
characterName TEXT,
characterLevel INTEGER,
characterXP INTEGER
)
""")
connection.commit()

def databaseItems():
pass

def databaseWeapons():

#Calling needed variables from databse connection file
connection = dbconnect()
cursor = dbcursor()

#Create weapons table
cursor.execute("""
CREATE TABLE IF NOT EXISTS weapons(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
weaponName TEXT,
weaponType TEXT,
weaponRank TEXT,
weaponLevel INTEGER,
weaponPrice INTEGER
)
""")
connection.commit()

def databaseArmors():

#Calling needed variables from databse connection file
connection = dbconnect()
cursor = dbcursor()

#Create armors table
cursor.execute("""
CREATE TABLE IF NOT EXISTS armors(
id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
armorName TEXT,
armorType TEXT,
armorRank TEXT,
armorLevel INTEGER,
armorPrice INTEGER
)
""")
connection.commit()

def databasePotions():
pass

def databaseIngredients():
pass

def databaseMonsters():
pass

#Database tables update functions
def databaseSaveCreation():
pass

except Exception as error:
print("Error ", error)

finally:
pass
Empty file added src/death.py
Empty file.
Empty file added src/exploration.py
Empty file.
10 changes: 10 additions & 0 deletions src/game_master.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import random, math, sys

try:
pass

except Exception as error:
print("Error ", error)

finally:
pass
Loading