2022-10-30 10:12:49 +01:00
|
|
|
{% extends "common/base.html" %}
|
2022-10-30 17:41:33 +01:00
|
|
|
{% load character_extras %}
|
2022-10-30 10:12:49 +01:00
|
|
|
|
|
|
|
{% block title %}{{ character.name }}{% endblock %}
|
|
|
|
|
|
|
|
{% block content %}
|
2022-10-30 10:43:50 +01:00
|
|
|
<h1>{{ character.name }}</h1>
|
2022-10-30 10:54:28 +01:00
|
|
|
<p>
|
|
|
|
<a href="{% url "admin:character_character_change" object_id=character.pk %}">Edit</a>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
Joueur : {{ character.player.get_full_name|default:character.player.username }}
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
{{ character.race.name }} {{ character.profile.name }} niv. {{ character.level }}<br>
|
|
|
|
{{ character.get_gender_display }}, {{ character.age }} ans, {{ character.height_m }}m, {{ character.weight }}kg (IMC: {{ character.imc }})
|
|
|
|
</p>
|
2022-10-30 15:50:53 +01:00
|
|
|
<div class="row">
|
2022-10-30 23:11:59 +01:00
|
|
|
<div class="col-sm-6 col-lg-6 col-xl">
|
2022-10-30 15:50:53 +01:00
|
|
|
<table class="table table-hover table-sm">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th scope="col">Carac</th>
|
|
|
|
<th scope="col">Valeur</th>
|
|
|
|
<th scope="col">Mod.</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody class="table-group-divider">
|
|
|
|
<tr>
|
|
|
|
<th scope="row">FOR</th>
|
|
|
|
<td>{{ character.value_strength }}</td>
|
2022-10-30 17:41:33 +01:00
|
|
|
<td>{{ character.modifier_strength|modifier }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">DEX</th>
|
|
|
|
<td>{{ character.value_dexterity }}</td>
|
2022-10-30 17:41:33 +01:00
|
|
|
<td>{{ character.modifier_dexterity|modifier }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">CON</th>
|
|
|
|
<td>{{ character.value_constitution }}</td>
|
2022-10-30 17:41:33 +01:00
|
|
|
<td>{{ character.modifier_constitution|modifier }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">INT</th>
|
|
|
|
<td>{{ character.value_intelligence }}</td>
|
2022-10-30 17:41:33 +01:00
|
|
|
<td>{{ character.modifier_intelligence|modifier }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">SAG</th>
|
|
|
|
<td>{{ character.value_wisdom }}</td>
|
2022-10-30 17:41:33 +01:00
|
|
|
<td>{{ character.modifier_wisdom|modifier }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">CHA</th>
|
|
|
|
<td>{{ character.value_charisma }}</td>
|
2022-10-30 17:41:33 +01:00
|
|
|
<td>{{ character.modifier_charisma|modifier }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
2022-10-30 23:11:59 +01:00
|
|
|
<div class="col-sm-6 col-lg-6 col-xl">
|
2022-10-30 15:50:53 +01:00
|
|
|
<table class="table table-hover table-sm">
|
|
|
|
<thead>
|
|
|
|
<tr><th scope="col" colspan="2">Combat</th></tr>
|
|
|
|
</thead>
|
|
|
|
<tbody class="table-group-divider">
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Initiative</th>
|
2022-10-30 18:13:03 +01:00
|
|
|
<td data-bs-toggle="tooltip"
|
2022-10-30 22:35:06 +01:00
|
|
|
data-bs-placement="left"
|
2022-10-30 18:13:03 +01:00
|
|
|
data-bs-title="valeur DEX">
|
|
|
|
{{ character.initiative }}
|
|
|
|
</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Att. contact</th>
|
2022-10-30 18:13:03 +01:00
|
|
|
<td data-bs-toggle="tooltip"
|
2022-10-30 22:35:06 +01:00
|
|
|
data-bs-placement="left"
|
2022-10-30 18:13:03 +01:00
|
|
|
data-bs-title="{{ character.level }} (niveau) + {{ character.modifier_strength }} (mod. FOR)">
|
|
|
|
{{ character.attack_melee|modifier }}
|
|
|
|
</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Att. distance</th>
|
2022-10-30 18:13:03 +01:00
|
|
|
<td data-bs-toggle="tooltip"
|
2022-10-30 22:35:06 +01:00
|
|
|
data-bs-placement="left"
|
2022-10-30 18:13:03 +01:00
|
|
|
data-bs-title="{{ character.level }} (niveau) + {{ character.modifier_dexterity }} (mod. DEX)">
|
|
|
|
{{ character.attack_range|modifier }}
|
|
|
|
</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Att. magique</th>
|
2022-10-30 18:13:03 +01:00
|
|
|
<td data-bs-toggle="tooltip"
|
2022-10-30 22:35:06 +01:00
|
|
|
data-bs-placement="left"
|
2022-10-30 18:13:03 +01:00
|
|
|
data-bs-title="{{ character.level }} (niveau) + {{ character.attack_magic|sub:character.level }} (mod. {{ character.profile.magical_strength }})">
|
|
|
|
{{ character.attack_magic|modifier }}
|
|
|
|
</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">Défense</th>
|
2022-10-30 18:13:03 +01:00
|
|
|
<td data-bs-toggle="tooltip"
|
2022-10-30 22:35:06 +01:00
|
|
|
data-bs-placement="left"
|
2022-10-30 22:44:43 +01:00
|
|
|
data-bs-title="10 + {{ character.armor }} (armure) + {{ character.shield }} (bouclier) + {{ character.modifier_dexterity }} (mod. DEX) + {{ character.defense_misc }} (divers)">
|
2022-10-30 18:13:03 +01:00
|
|
|
{{ character.defense }}
|
|
|
|
</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
2022-10-30 23:11:59 +01:00
|
|
|
<div class="col-sm-12 col-md-8 col-lg-6 col-xl">
|
2022-10-30 15:50:53 +01:00
|
|
|
<table class="table table-hover table-sm">
|
|
|
|
<thead>
|
|
|
|
<tr><th scope="col" colspan="2">Énergie</th></tr>
|
|
|
|
</thead>
|
|
|
|
<tbody class="table-group-divider">
|
|
|
|
<tr>
|
2022-10-30 17:37:09 +01:00
|
|
|
<th scope="row">
|
2022-10-30 23:11:59 +01:00
|
|
|
Points de vie
|
2022-10-30 22:35:06 +01:00
|
|
|
<div class="btn-group btn-group-sm float-end" role="group">
|
2022-10-30 17:37:09 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:health_change" pk=character.pk %}?value=ko"
|
|
|
|
hx-target="#health-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-outline-danger"><i class="fa-solid fa-battery-empty"></i></button>
|
2022-10-30 17:37:09 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:health_change" pk=character.pk %}?value=-1"
|
|
|
|
hx-target="#health-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-danger"><i class="fa-solid fa-minus"></i></button>
|
2022-10-30 17:37:09 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:health_change" pk=character.pk %}?value=1"
|
|
|
|
hx-target="#health-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-success"><i class="fa-solid fa-plus"></i></button>
|
2022-10-30 17:37:09 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:health_change" pk=character.pk %}?value=max"
|
|
|
|
hx-target="#health-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-outline-success"><i class="fa-solid fa-battery-full"></i></button>
|
2022-10-30 17:37:09 +01:00
|
|
|
</div>
|
|
|
|
</th>
|
2022-10-30 22:35:06 +01:00
|
|
|
<td><span id="health-remaining">{{ character.health_remaining }}</span> / {{ character.health_max }}</td>
|
2022-10-30 15:50:53 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
2022-10-30 17:47:42 +01:00
|
|
|
<th scope="row">
|
2022-10-30 23:11:59 +01:00
|
|
|
Points de mana
|
2022-10-30 22:35:06 +01:00
|
|
|
<div class="btn-group btn-group-sm float-end" role="group">
|
2022-10-30 17:47:42 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:mana_change" pk=character.pk %}?value=ko"
|
|
|
|
hx-target="#mana-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-outline-danger"><i class="fa-solid fa-battery-empty"></i></button>
|
2022-10-30 17:47:42 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:mana_change" pk=character.pk %}?value=-1"
|
|
|
|
hx-target="#mana-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-danger"><i class="fa-solid fa-minus"></i></button>
|
2022-10-30 17:47:42 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:mana_change" pk=character.pk %}?value=1"
|
|
|
|
hx-target="#mana-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-success"><i class="fa-solid fa-plus"></i></button>
|
2022-10-30 17:47:42 +01:00
|
|
|
<button
|
|
|
|
hx-get="{% url "character:mana_change" pk=character.pk %}?value=max"
|
|
|
|
hx-target="#mana-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
2022-10-30 22:35:06 +01:00
|
|
|
class="btn btn-outline-success"><i class="fa-solid fa-battery-full"></i></button>
|
2022-10-30 17:47:42 +01:00
|
|
|
</div>
|
|
|
|
</th>
|
2022-10-30 22:35:06 +01:00
|
|
|
<td data-bs-toggle="tooltip"
|
|
|
|
data-bs-placement="left"
|
|
|
|
{% if character.profile.mana_max_compute == 1 %}
|
|
|
|
data-bs-title="{{ character.level }} (niveau) + {{ character.modifier_magic }} (mod. {{ character.profile.magical_strength }})"
|
|
|
|
{% elif character.profile.mana_max_compute == 2 %}
|
|
|
|
data-bs-title="2 x {{ character.level }} (niveau) + {{ character.modifier_magic }} (mod. {{ character.profile.magical_strength }})"
|
2022-10-30 23:11:59 +01:00
|
|
|
{% endif %}
|
|
|
|
>
|
2022-10-30 22:35:06 +01:00
|
|
|
<span id="mana-remaining">{{ character.mana_remaining }}</span> / {{ character.mana_max }}
|
|
|
|
</td>
|
2022-10-30 23:11:59 +01:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">
|
|
|
|
Points de récup.
|
|
|
|
<div class="btn-group btn-group-sm float-end" role="group">
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
disabled
|
|
|
|
class="btn btn-outline-secondary"><i class="fa-solid fa-battery-empty"></i></button>
|
|
|
|
<button
|
|
|
|
hx-get="{% url "character:recovery_points_change" pk=character.pk %}?value=-1"
|
|
|
|
hx-target="#recovery-points-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
|
|
|
class="btn btn-danger"><i class="fa-solid fa-minus"></i></button>
|
|
|
|
<button
|
|
|
|
hx-get="{% url "character:recovery_points_change" pk=character.pk %}?value=1"
|
|
|
|
hx-target="#recovery-points-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
|
|
|
class="btn btn-success"><i class="fa-solid fa-plus"></i></button>
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
disabled
|
|
|
|
class="btn btn-outline-secondary"><i class="fa-solid fa-battery-full"></i></button>
|
|
|
|
</div>
|
|
|
|
</th>
|
|
|
|
<td>
|
|
|
|
<span id="recovery-points-remaining">{{ character.recovery_points_remaining }}</span> / {{ character.recovery_points_max }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<th scope="row">
|
|
|
|
Points de chance
|
|
|
|
<div class="btn-group btn-group-sm float-end" role="group">
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
disabled
|
|
|
|
class="btn btn-outline-secondary"><i class="fa-solid fa-battery-empty"></i></button>
|
|
|
|
<button
|
|
|
|
hx-get="{% url "character:luck_points_change" pk=character.pk %}?value=-1"
|
|
|
|
hx-target="#luck-points-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
|
|
|
class="btn btn-danger"><i class="fa-solid fa-minus"></i></button>
|
|
|
|
<button
|
|
|
|
hx-get="{% url "character:luck_points_change" pk=character.pk %}?value=1"
|
|
|
|
hx-target="#luck-points-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
|
|
|
class="btn btn-success"><i class="fa-solid fa-plus"></i></button>
|
|
|
|
<button
|
|
|
|
hx-get="{% url "character:luck_points_change" pk=character.pk %}?value=max"
|
|
|
|
hx-target="#luck-points-remaining"
|
|
|
|
hx-swap="innerHTML"
|
|
|
|
type="button"
|
|
|
|
class="btn btn-outline-success"><i class="fa-solid fa-battery-full"></i></button>
|
|
|
|
</div>
|
|
|
|
</th>
|
|
|
|
<td data-bs-toggle="tooltip"
|
|
|
|
data-bs-placement="left"
|
|
|
|
data-bs-title="[1 dé de vie + {{ character.modifier_constitution|add:character.level }}] PV">
|
|
|
|
<span id="luck-points-remaining">{{ character.luck_points_remaining }}</span> / {{ character.luck_points_max }}
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-4 mb-3">
|
|
|
|
<div class="card">
|
|
|
|
<h5 class="card-header">{{ character.racial_capability.name }}</h5>
|
|
|
|
<div class="card-body">
|
|
|
|
<p class="card-text">{{ character.racial_capability.description|capfirst }}</p>
|
2022-10-30 22:02:21 +01:00
|
|
|
</div>
|
2022-10-30 21:55:05 +01:00
|
|
|
</div>
|
2022-10-30 23:11:59 +01:00
|
|
|
</div>
|
|
|
|
<div class="col-md-8">
|
|
|
|
<table class="table table-hover table-sm">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th scope="col">Arme</th>
|
|
|
|
<th scope="col">Attaque</th>
|
|
|
|
<th scope="col">DM</th>
|
|
|
|
<th scope="col">Spécial</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody class="table-group-divider">
|
|
|
|
{% for weapon in character.weapons.all %}
|
|
|
|
<tr>
|
|
|
|
<th scope="row">{{ weapon.name }}</th>
|
|
|
|
<td>1D20 +</td>
|
|
|
|
<td>{{ weapon.damage }}</td>
|
|
|
|
<td>{{ weapon.special }}</td>
|
|
|
|
</tr>
|
|
|
|
{% empty %}
|
|
|
|
<tr>
|
|
|
|
<td colspan="4">Aucune arme</td>
|
|
|
|
</tr>
|
|
|
|
{% endfor %}
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="row">
|
|
|
|
<div class="col">
|
|
|
|
<div class="card">
|
|
|
|
<h5 class="card-header">Équipement</h5>
|
|
|
|
<div class="card-body" id="equipment">
|
|
|
|
{% include "character/equipment_display.html" %}
|
2022-10-30 16:33:28 +01:00
|
|
|
</div>
|
2022-10-30 23:11:59 +01:00
|
|
|
<div class="card-footer">
|
|
|
|
{{ character.money_pp }} pp,
|
|
|
|
{{ character.money_po }} po,
|
|
|
|
{{ character.money_pa }} pa,
|
|
|
|
{{ character.money_pc }} pc
|
2022-10-30 22:02:21 +01:00
|
|
|
</div>
|
2022-10-30 16:33:28 +01:00
|
|
|
</div>
|
2022-10-30 23:11:59 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<h4 class="mt-3">Voies & Capacités</h4>
|
|
|
|
<div class="row gy-3">
|
|
|
|
{% for path, capabilities in character.get_capabilities_by_path.items %}
|
|
|
|
<div class="col-xl-3 col-md-6">
|
|
|
|
<div class="card">
|
|
|
|
<h5 class="card-header">{{ path.display_name }}</h5>
|
|
|
|
{% if path.notes %}
|
|
|
|
<div class="card-body text-bg-light">{{ path.notes }}</div>
|
|
|
|
{% endif %}
|
|
|
|
<ul class="list-group list-group-flush">
|
|
|
|
{% for capability in capabilities %}
|
|
|
|
<li class="list-group-item">
|
|
|
|
<strong>
|
|
|
|
{{ capability.rank }}.
|
|
|
|
{{ capability.name }}
|
|
|
|
{% if capability.spell %}<i class="fa-solid fa-hand-sparkles"></i>{% endif %}
|
|
|
|
{% if capability.limited %}<i class="fa-solid fa-handcuffs"></i>{% endif %}
|
|
|
|
</strong><br>
|
|
|
|
{{ capability.description }}
|
|
|
|
</li>
|
|
|
|
{% endfor %}
|
|
|
|
</ul>
|
2022-10-30 21:55:05 +01:00
|
|
|
</div>
|
2022-10-30 22:02:21 +01:00
|
|
|
</div>
|
2022-10-30 23:11:59 +01:00
|
|
|
{% endfor %}
|
|
|
|
</div>
|
|
|
|
<h4 class="mt-3">Notes</h4>
|
|
|
|
<div class="row" id="notes">
|
|
|
|
{% include "character/notes_display.html" %}
|
|
|
|
</div>
|
2022-10-30 10:12:49 +01:00
|
|
|
{% endblock %}
|