I'm Gabriel, a software developer from France. You can read more about me or discover my posts over at https://gabnotes.org 🙂
If you're looking for my code repositories, you'll likely find them at https://git.augendre.info.
Manage your RPG party & character using an interactive web app accessible from any browser.
Home Page: https://charasheet.augendre.info
License: The Unlicense
I'm Gabriel, a software developer from France. You can read more about me or discover my posts over at https://gabnotes.org 🙂
If you're looking for my code repositories, you'll likely find them at https://git.augendre.info.
Arme manquante dans le tableau, mais présente dans l'équipement de départ du cavalier :
Infos à confirmer. @vicolivry ?
Les champs sont trop petits sur l'iPad.
Ajouter la double authentification, au moins via OTP et au mieux en plus via Webauthn
Unitaires, fonctionnels, d'intégration... Peu importe leur nom mais il en manque cruellement.
[2022-11-16 11:00:10,406 - ERROR - MainProcess/log.log_response:241] Internal Server Error: /party/2/change/
Traceback (most recent call last):
File "/app/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
return view_func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/src/party/views.py", line 66, in party_change
if form.is_valid():
^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/forms/forms.py", line 205, in is_valid
return self.is_bound and not self.errors
^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/forms/forms.py", line 200, in errors
self.full_clean()
File "/app/venv/lib/python3.11/site-packages/django/forms/forms.py", line 437, in full_clean
self._clean_fields()
File "/app/venv/lib/python3.11/site-packages/django/forms/forms.py", line 449, in _clean_fields
value = field.clean(value)
^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/forms/models.py", line 1596, in clean
qs = self._check_values(value)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/forms/models.py", line 1621, in _check_values
self.queryset.filter(**{key: pk})
File "/app/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1419, in filter
self._not_support_combined_queries("filter")
File "/app/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1945, in _not_support_combined_queries
raise NotSupportedError(
django.db.utils.NotSupportedError: Calling QuerySet.filter() after union() is not supported.
Permettre aux utilisateurs de changer leur mot de passe.
Pendant l'écriture, au debounce, save mais continuer à éditer.
Améliorer la gestion des armes :
[2022-11-16 14:08:03,048 - ERROR - MainProcess/log.log_response:241] Internal Server Error: /character/10/
Traceback (most recent call last):
File "/app/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
return view_func(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/src/character/views.py", line 74, in character_view
character = get_object_or_404(
^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/shortcuts.py", line 85, in get_object_or_404
return queryset.get(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/venv/lib/python3.11/site-packages/django/db/models/query.py", line 653, in get
raise self.model.MultipleObjectsReturned(
character.models.character.Character.MultipleObjectsReturned: get() returned more than one Character -- it returned 2!
Modèle :
Règles :
Plutôt que de devoir faire du un par un, il faudrait pouvoir saisir la valeur désirée. Utile quand on se prend de grosses baffes.
At the end of a chapter, or for events that include a series of long rest without using magic and losing HP, it would be nice to have:
Stats would be (fr)
PV - PR - PC - optionally PM if use those
Autoriser la suppression d'un compte d'utilisateur
Ajouter un field FreeText que seul le MJ peut voir/edit sur les fiches des persos.
Usage: le perso trouve un item, mais ne sait pas ce qu'il fait, je peux noter dans sa fiche que c'est une potion de soins 3d8 par exemple, mais y a que moi qui le sait, et je galere pas a me rappeler où il a trouvé cet objet, que je dois ensuite retrouver dans le livre.
Pas mal utile pour tou·te·s les objets/armes non identifiés
Htmx, fontawesome, bootstrap
Autoriser la suppression d'un personnage
Actuellement les boutons restent accessibles alors qu'une requête est partie. Il faudrait les désactiver ou les remplacer par un loader.
La vue MJ serait plus agréable si les modifs des joueurs étaient poussées à tous les clients.
Possible avec HTMX, à étudier et pourquoi pas implémenter.
Demande pas mal de changements côté backend -> django channels
Diverses infos :
Le commit pourra ensuite être utilisé dans l'action github pour vérifier le bon déploiement
Add death saves with 3 tick able boxes on each side (death<->life)
It should be visible by both the GM and the concerned player, not the others
Plusieurs classes ont a disposition des familiers, avec une gestion des stats différentes des personnages.
Il serait très pratique de pouvoir les gérer depuis charasheet.
Le forgesort à accès à un golem. Le druide à un animal.
Leurs caractéristiques sont résumées par des bonus/malus aux jets.
Exemple ci dessous pour les Golems :
Créature non vivante
Initiative : forgesort
Défense : 14
Attaque : niveau du forgesort + mod force
PV : 4x niveau du forgesort
Récupération PV : 1d6/rang + Mod Intelligence forgesort PV pour une heure de réparation
Dégats : 1d8 +1
Dans le cas du golem, il acquière des compétences / gain en stat grâce à la voie "Golem" du forgesort : https://www.co-drs.org/fr/jeu/profils/forgesort
Exemple pour un familier druide :
Créature vivante
Initiative : 18 (ou règle du dé)
Défense : 16
Attaque : niveau du forgesort + mod force
PV : 4x niveau du druide
Récupération PV : règles habituelles
Dégats : 1d6 +2
* ces carac utilisent la règle d'avantage (deux d20 sur les tests, le MJ retiens le meilleur jet)
Lorsque le druide acquière 4 dans la voie du fauce, les carac du familier sont buff : https://www.co-drs.org/fr/jeu/profils/druide
Qui a fait quoi quand ? Permet de répondre à la question "mais pourquoi vous êtes tous full vie ?"
Cc @vicolivry
Pour voir les caractéristiques de son personnage et faire des plans
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.