This commit is contained in:
tcaxle 2020-04-16 00:07:58 +01:00
parent 5f07ab1bf9
commit ba03fd80b4
8 changed files with 253 additions and 152 deletions

View File

@ -16,6 +16,7 @@ admin.site.register(charmSolar)
admin.site.register(charmLunar) admin.site.register(charmLunar)
admin.site.register(charmLunarShape) admin.site.register(charmLunarShape)
admin.site.register(charmEvocation) admin.site.register(charmEvocation)
admin.site.register(charmMartialArt)
admin.site.register(merit) admin.site.register(merit)

View File

@ -1,4 +1,4 @@
# Generated by Django 3.0.5 on 2020-04-13 00:12 # Generated by Django 3.0.5 on 2020-04-15 20:45
import app.models import app.models
from django.db import migrations, models from django.db import migrations, models
@ -90,6 +90,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')), ('description', app.models.DescriptionField(blank=True, max_length=1000, verbose_name='Description')),
('intensity', app.models.SingleChoiceField(blank=True, choices=[('Minor', 'Minor'), ('Major', 'Major'), ('Defining', 'Defining')], max_length=100, verbose_name='Intensity')), ('intensity', app.models.SingleChoiceField(blank=True, choices=[('Minor', 'Minor'), ('Major', 'Major'), ('Defining', 'Defining')], max_length=100, verbose_name='Intensity')),
('character', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='intimacy_set', to='app.characterBase', verbose_name='Character')),
('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.intimacybase_set+', to='contenttypes.ContentType')), ('polymorphic_ctype', models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_app.intimacybase_set+', to='contenttypes.ContentType')),
], ],
options={ options={
@ -144,6 +145,7 @@ class Migration(migrations.Migration):
('motesPersonal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes')), ('motesPersonal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Personal Motes')),
('motesPeripheralMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes')), ('motesPeripheralMax', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Maximum Peripheral Motes')),
('motesPeripheral', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes')), ('motesPeripheral', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Current Peripheral Motes')),
('motesCommitted', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Committed Motes')),
('limitTrigger', models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger')), ('limitTrigger', models.TextField(blank='False', max_length=1000, verbose_name='Limit Trigger')),
('limitBreak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break')), ('limitBreak', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Limit Break')),
('experienceExaltedTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Exalted Experience')), ('experienceExaltedTotal', app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Total Exalted Experience')),
@ -375,6 +377,18 @@ class Migration(migrations.Migration):
}, },
bases=('app.characterexaltbase',), bases=('app.characterexaltbase',),
), ),
migrations.CreateModel(
name='charmEvocation',
fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')),
('key', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.itemBase', verbose_name='Artifact')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.charmbase',),
),
migrations.CreateModel( migrations.CreateModel(
name='charmLunar', name='charmLunar',
fields=[ fields=[
@ -517,24 +531,11 @@ class Migration(migrations.Migration):
bases=('app.ownershipbase',), bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='ownershipIntimacyTie', name='ownershipCharmSolar',
fields=[ fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyTie_set', to='app.characterBase', verbose_name='Owner')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmSolar_set', to='app.characterExaltSolar', verbose_name='Solar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyTieTarget_set', to='app.intimacyTie', verbose_name='Tie')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmSolarTarget_set', to='app.charmSolar', verbose_name='Solar Charm')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipIntimacyPrincipal',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyPrincipal_set', to='app.characterBase', verbose_name='Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipIntimacyPrincipalTarget_set', to='app.intimacyPrincipal', verbose_name='Principal')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -547,33 +548,7 @@ class Migration(migrations.Migration):
fields=[ fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmMartialArt_set', to='app.characterExaltBase', verbose_name='Exalted Owner')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmMartialArt_set', to='app.characterExaltBase', verbose_name='Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmMartialArtTarget_set', to='app.characterExaltBase', verbose_name='Martial Arts Charm')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmMartialArtTarget_set', to='app.charmMartialArt', verbose_name='Martial Arts Charm')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmEvocation',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmEvocation_set', to='app.characterExaltBase', verbose_name='Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmEvocationTarget_set', to='app.characterExaltBase', verbose_name='Evocation')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('app.ownershipbase',),
),
migrations.CreateModel(
name='ownershipCharmSolar',
fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmSolar_set', to='app.characterExaltSolar', verbose_name='Solar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmSolarTarget_set', to='app.characterExaltSolar', verbose_name='Solar Charm')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -586,7 +561,7 @@ class Migration(migrations.Migration):
fields=[ fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarShape_set', to='app.characterExaltLunar', verbose_name='Lunar Exalted Owner')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarShape_set', to='app.characterExaltLunar', verbose_name='Lunar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarShapeTarget_set', to='app.characterExaltLunar', verbose_name='Lunar Shape')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarShapeTarget_set', to='app.charmLunarShape', verbose_name='Lunar Shape')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -599,7 +574,7 @@ class Migration(migrations.Migration):
fields=[ fields=[
('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunar_set', to='app.characterExaltLunar', verbose_name='Lunar Exalted Owner')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunar_set', to='app.characterExaltLunar', verbose_name='Lunar Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarTarget_set', to='app.characterExaltLunar', verbose_name='Lunar Charm')), ('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmLunarTarget_set', to='app.charmLunar', verbose_name='Lunar Charm')),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -608,15 +583,16 @@ class Migration(migrations.Migration):
bases=('app.ownershipbase',), bases=('app.ownershipbase',),
), ),
migrations.CreateModel( migrations.CreateModel(
name='charmEvocation', name='ownershipCharmEvocation',
fields=[ fields=[
('charmbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.charmBase')), ('ownershipbase_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='app.ownershipBase')),
('key', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.itemBase', verbose_name='Artifact')), ('owner', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmEvocation_set', to='app.characterExaltBase', verbose_name='Exalted Owner')),
('target', app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ownershipCharmEvocationTarget_set', to='app.charmEvocation', verbose_name='Evocation')),
], ],
options={ options={
'abstract': False, 'abstract': False,
'base_manager_name': 'objects', 'base_manager_name': 'objects',
}, },
bases=('app.charmbase',), bases=('app.ownershipbase',),
), ),
] ]

View File

@ -0,0 +1,24 @@
# Generated by Django 3.0.5 on 2020-04-15 21:09
import app.models
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='charmlunarshape',
name='shapeType',
field=app.models.SingleChoiceField(blank=True, choices=[('Human', 'Human'), ('Animal', 'Animal')], max_length=100, verbose_name='Shape Type'),
),
migrations.AddField(
model_name='charmlunarshape',
name='size',
field=app.models.SingleChoiceField(blank=True, choices=[('Normal', 'Normal')], max_length=100, verbose_name='Size'),
),
]

View File

@ -1,19 +0,0 @@
# Generated by Django 3.0.5 on 2020-04-13 13:15
import app.models
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='characterexaltbase',
name='motesCommitted',
field=app.models.NamedIntegerField(default=0, help_text=None, verbose_name='Committed Motes'),
),
]

View File

@ -1,38 +0,0 @@
# Generated by Django 3.0.5 on 2020-04-15 19:29
import app.models
from django.db import migrations
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('app', '0002_characterexaltbase_motescommitted'),
]
operations = [
migrations.RemoveField(
model_name='ownershipintimacytie',
name='owner',
),
migrations.RemoveField(
model_name='ownershipintimacytie',
name='ownershipbase_ptr',
),
migrations.RemoveField(
model_name='ownershipintimacytie',
name='target',
),
migrations.AddField(
model_name='intimacybase',
name='character',
field=app.models.NamedForeignKeyField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='app.characterBase', verbose_name='Character'),
),
migrations.DeleteModel(
name='ownershipIntimacyPrincipal',
),
migrations.DeleteModel(
name='ownershipIntimacyTie',
),
]

View File

@ -124,6 +124,7 @@ TAGS_WEAPONS = [
), ),
( (
"Thrown", ( "Thrown", (
("Thrown", "Thrown"),
("Occult", "Occult"), ("Occult", "Occult"),
("Cutting", "Cutting"), ("Cutting", "Cutting"),
("Poisonable", "Poisonable"), ("Poisonable", "Poisonable"),
@ -218,6 +219,15 @@ CASTES_LUNAR = [
("Castless", "Castless") ("Castless", "Castless")
] ]
SHAPE_SIZES = [
("Normal", "Normal"),
]
SHAPE_TYPES = [
("Human", "Human"),
("Animal", "Animal"),
]
#==============================================================================# #==============================================================================#
#------------------------------- CUSTOM MODELS --------------------------------# #------------------------------- CUSTOM MODELS --------------------------------#
#==============================================================================# #==============================================================================#
@ -923,6 +933,11 @@ class characterBase(PolymorphicModel):
return ["Healthy"] + ["-0" for i in range(self.health0)] + ["-1" for i in range(self.health1)] + ["-1" for i in range(self.health1)] + ["-4", "i"] return ["Healthy"] + ["-0" for i in range(self.health0)] + ["-1" for i in range(self.health1)] + ["-1" for i in range(self.health1)] + ["-4", "i"]
def healthLevel(self): def healthLevel(self):
return self.healthTrack()[self.healthIndex] return self.healthTrack()[self.healthIndex]
def healthDots(self):
output = []
for i in range(len(self.healthTrack()) - 1):
output.append((self.healthTrack()[i+1], i < self.healthIndex))
return output
#============ STATICS =============# #============ STATICS =============#
def resolve(self, speciality=None, mod=0): def resolve(self, speciality=None, mod=0):
@ -1035,7 +1050,7 @@ class characterExaltLunar(characterExaltBase):
#========= SHAPESHIFTING ==========# #========= SHAPESHIFTING ==========#
spiritShape = models.CharField(verbose_name="Spirit Shape", max_length=100) spiritShape = models.CharField(verbose_name="Spirit Shape", max_length=100)
# Reverse relation # Reverse relation
def shapeSet(self): def lunarShapeSet(self):
output = [] output = []
try: try:
ownerships = self.ownershipCharmLunarShape_set.all() ownerships = self.ownershipCharmLunarShape_set.all()
@ -1161,30 +1176,49 @@ class charmBase(effectBase):
keywords = MultiChoiceField("Charm Keywords", CHARM_KEYWORDS) keywords = MultiChoiceField("Charm Keywords", CHARM_KEYWORDS)
class charmMartialArt(charmBase): class charmMartialArt(charmBase):
def type(self):
return "Martial Art"
levelKey = NamedIntegerField("Martial Arts Level") levelKey = NamedIntegerField("Martial Arts Level")
key = None key = None
class charmEvocation(charmBase): class charmEvocation(charmBase):
def type(self):
return "Evocation"
levelKey = 0 levelKey = 0
key = NamedForeignKeyField("Artifact", itemBase) key = NamedForeignKeyField("Artifact", itemBase)
class charmSolar(charmBase): class charmSolar(charmBase):
def type(self):
return "Solar"
levelKey = NamedIntegerField("Ability Level") levelKey = NamedIntegerField("Ability Level")
key = SingleChoiceField("Key Ability", ABILITIES) key = SingleChoiceField("Key Ability", ABILITIES)
class charmLunar(charmBase): class charmLunar(charmBase):
def type(self):
return "Lunar"
levelKey = NamedIntegerField("Attribute Level") levelKey = NamedIntegerField("Attribute Level")
key = SingleChoiceField("Key Attribute", ATTRIBUTES) key = SingleChoiceField("Key Attribute", ATTRIBUTES)
class charmLunarShape(charmBase): class charmLunarShape(charmBase):
levelKey = 0 levelKey = 0
def type(self):
return "Lunar Shape"
key = None key = None
size = SingleChoiceField("Size", SHAPE_SIZES)
shapeType = SingleChoiceField("Shape Type", SHAPE_TYPES)
#==============================================================================# #==============================================================================#
#----------------------------------- MERITS -----------------------------------# #----------------------------------- MERITS -----------------------------------#
#==============================================================================# #==============================================================================#
class merit(effectBase): class merit(effectBase):
dots = DotField("Dots") dots = DotField("Dots")
def dotsDisplay(self):
output = []
for i in range(self.dots):
output.append(True)
for i in range(5 - self.dots):
output.append(False)
return output
#==============================================================================# #==============================================================================#
#-------------------------------- SPECIALITIES --------------------------------# #-------------------------------- SPECIALITIES --------------------------------#
@ -1200,7 +1234,7 @@ class intimacyBase(PolymorphicModel):
description = DescriptionField() description = DescriptionField()
intensity = SingleChoiceField("Intensity", INTENSITIES) intensity = SingleChoiceField("Intensity", INTENSITIES)
character = NamedForeignKeyField("Character", characterBase) character = NamedForeignKeyField("Character", characterBase, related_name="intimacy_set")
class intimacyTie(intimacyBase): class intimacyTie(intimacyBase):
target = NamedCharField("Target") target = NamedCharField("Target")
@ -1226,19 +1260,19 @@ class ownershipItemArmor(ownershipBase):
owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipItemArmor_set") owner = NamedForeignKeyField("Owner", characterBase, related_name="ownershipItemArmor_set")
class ownershipCharmMartialArt(ownershipBase): class ownershipCharmMartialArt(ownershipBase):
target = NamedForeignKeyField("Martial Arts Charm", characterExaltBase, related_name="ownershipCharmMartialArtTarget_set") target = NamedForeignKeyField("Martial Arts Charm", charmMartialArt, related_name="ownershipCharmMartialArtTarget_set")
owner = NamedForeignKeyField("Exalted Owner", characterExaltBase, related_name="ownershipCharmMartialArt_set") owner = NamedForeignKeyField("Exalted Owner", characterExaltBase, related_name="ownershipCharmMartialArt_set")
class ownershipCharmEvocation(ownershipBase): class ownershipCharmEvocation(ownershipBase):
target = NamedForeignKeyField("Evocation", characterExaltBase, related_name="ownershipCharmEvocationTarget_set") target = NamedForeignKeyField("Evocation", charmEvocation, related_name="ownershipCharmEvocationTarget_set")
owner = NamedForeignKeyField("Exalted Owner", characterExaltBase, related_name="ownershipCharmEvocation_set") owner = NamedForeignKeyField("Exalted Owner", characterExaltBase, related_name="ownershipCharmEvocation_set")
class ownershipCharmSolar(ownershipBase): class ownershipCharmSolar(ownershipBase):
target = NamedForeignKeyField("Solar Charm", characterExaltSolar, related_name="ownershipCharmSolarTarget_set") target = NamedForeignKeyField("Solar Charm", charmSolar, related_name="ownershipCharmSolarTarget_set")
owner = NamedForeignKeyField("Solar Exalted Owner", characterExaltSolar, related_name="ownershipCharmSolar_set") owner = NamedForeignKeyField("Solar Exalted Owner", characterExaltSolar, related_name="ownershipCharmSolar_set")
class ownershipCharmLunar(ownershipBase): class ownershipCharmLunar(ownershipBase):
target = NamedForeignKeyField("Lunar Charm", characterExaltLunar, related_name="ownershipCharmLunarTarget_set") target = NamedForeignKeyField("Lunar Charm", charmLunar, related_name="ownershipCharmLunarTarget_set")
owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar, related_name="ownershipCharmLunar_set") owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar, related_name="ownershipCharmLunar_set")
class ownershipCharmLunarShape(ownershipBase): class ownershipCharmLunarShape(ownershipBase):
target = NamedForeignKeyField("Lunar Shape", characterExaltLunar, related_name="ownershipCharmLunarShapeTarget_set") target = NamedForeignKeyField("Lunar Shape", charmLunarShape, related_name="ownershipCharmLunarShapeTarget_set")
owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar, related_name="ownershipCharmLunarShape_set") owner = NamedForeignKeyField("Lunar Exalted Owner", characterExaltLunar, related_name="ownershipCharmLunarShape_set")
class ownershipMerit(ownershipBase): class ownershipMerit(ownershipBase):

View File

@ -25,7 +25,7 @@ SECRET_KEY = '1ry9e5wz$6(c-)btw70c41woraos)5nzqfbw2^kvpzpi)gy#6v'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True DEBUG = True
ALLOWED_HOSTS = ["192.168.1.205", "localhost", "127.0.0.1"] ALLOWED_HOSTS = ["192.168.1.205", "localhost", "127.0.0.1", "tcaxle.ddns.net", "xle.sh"]
# Application definition # Application definition

View File

@ -546,13 +546,12 @@
</p> </p>
{% if object.specialitySet %} {% if object.specialitySet %}
{% for speciality in object.specialitySet %} {% for speciality in object.specialitySet %}
<p style="margin:0"> <p style="margin:0" class="w3-row-padding custom-hover-grey custom-hover-text-orange">
<span>{{ speciality }}</span> <span>{{ speciality }}</span>
<span class="w3-right custom-hover-text-orange"><i class="fas fa-pen-square"></i></span> </p>
<p>
{% endfor %} {% endfor %}
{% else %} {% else %}
<p style="margin:0">No specialities found.<p> <p style="margin:0">No specialities found.</p>
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}
@ -622,10 +621,22 @@
</p> </p>
{% if object.meritSet %} {% if object.meritSet %}
{% for merit in object.meritSet %} {% for merit in object.meritSet %}
<p style="margin:0">{{ merit }}<p> <p style="margin:0" class="w3-row-padding custom-hover-grey custom-hover-text-orange w3-display-container">
<span>{{ merit }}</span>
<span class="w3-display-right">
{% for dot in merit.dotsDisplay %}
{% if dot %}
<i class="fas fa-circle"></i>
{% else %}
<i class="far fa-circle"></i>
{% endif %}
{% endfor %}
&thinsp;
</span>
</p>
{% endfor %} {% endfor %}
{% else %} {% else %}
<p style="margin:0">No merits found.<p> <p>No merits found.</p>
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}
@ -646,7 +657,9 @@
{% endfor %} {% endfor %}
</span> </span>
</p> </p>
{{ object.limitTrigger }} <p class="w3-center">
{{ object.limitTrigger }}
</p>
</div> </div>
{% endblock %} {% endblock %}
@ -700,7 +713,7 @@
<p style="margin:3px" class="fancy w3-center w3-xlarge"> <p style="margin:3px" class="fancy w3-center w3-xlarge">
<span class="w3-center"><b>Weapons & Armor</b></span> <span class="w3-center"><b>Weapons & Armor</b></span>
</p> </p>
<table class="w3-table" style="line-height:15px"> <table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey"> <tr class="w3-border-bottom custom-border-grey">
<th><b>Weapon</b></th> <th><b>Weapon</b></th>
<th>ACC</th> <th>ACC</th>
@ -708,29 +721,28 @@
<th>DEF</th> <th>DEF</th>
<th>OVW</th> <th>OVW</th>
<th>ATT</th> <th>ATT</th>
<th>Range/Parry</th>
</tr> </tr>
{% if object.itemWeaponSet %} {% if object.itemWeaponSet %}
{% for weapon in object.itemWeaponSet %} {% for weapon in object.itemWeaponSet %}
<tr class="custom-hover-grey custom-hover-text-orange"> <tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ weapon.name }}</td> <td>{{ weapon.name }}</td>
{% if weapon.rangeClose %}
<td>{{ weapon.rangeClose }}/{{ weapon.rangeShort }}/{{ weapon.rangeMedium }}/{{ weapon.rangeLong }}/{{ weapon.rangeExtreme }}</td>
{% else %}
<td>{{ weapon.accuracy }}</td> <td>{{ weapon.accuracy }}</td>
{% endif %}
<td>{{ weapon.damage }}</td> <td>{{ weapon.damage }}</td>
<td>{{ weapon.defense }}</td> <td>{{ weapon.defense }}</td>
<td>{{ weapon.overwhelming }}</td> <td>{{ weapon.overwhelming }}</td>
<td>{{ weapon.attunement }}</td> <td>{{ weapon.attunement }}</td>
{% if weapon.rangeClose %}
<td>{{ weapon.rangeClose }}/{{ weapon.rangeShort }}/{{ weapon.rangeMedium }}/{{ weapon.rangeLong }}/{{ weapon.rangeExtreme }}</td>
{% else %}
<td></td>
{% endif %}
</tr> </tr>
{% endfor %} {% endfor %}
{% else %} {% else %}
<tr><td>No weapons found.</td></tr> <tr><td>No weapons found.</td></tr>
{% endif %} {% endif %}
</table> </table>
<table class="w3-table" style="line-height:15px"> <br>
<table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey"> <tr class="w3-border-bottom custom-border-grey">
<th><b>Armor</b></th> <th><b>Armor</b></th>
<th>SOAK</th> <th>SOAK</th>
@ -808,6 +820,34 @@
<span class="w3-right">{{ object.joinBattle }}</span> <span class="w3-right">{{ object.joinBattle }}</span>
</div> </div>
</div> </div>
<div class="w3-display-container w3-margin-top">
<div class="w3-display-topmiddle">
<div class="w3-row">
{% for level,dot in object.healthDots %}
<div class="w3-cell">
<p style="margin:0">
{% if dot %}
&thinsp;
<i class="fas fa-circle"></i>
&thinsp;
{% else %}
&thinsp;
<i class="far fa-circle"></i>
&thinsp;
{% endif %}
</p>
<p style="margin:0; text-align:center;">
&thinsp;
{{ level }}
&thinsp;
</p>
</div>
{% endfor %}
</div>
</div>
<br>
<br>
</div>
</div> </div>
{% endblock %} {% endblock %}
@ -816,30 +856,14 @@
<p style="margin:3px" class="fancy w3-center w3-xlarge"> <p style="margin:3px" class="fancy w3-center w3-xlarge">
<span class="w3-center"><b>Intimacies</b></span> <span class="w3-center"><b>Intimacies</b></span>
</p> </p>
<table class="w3-table" style="line-height:15px"> <table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey"> <tr class="w3-border-bottom custom-border-grey">
<th>Principal</th> <th>Intimacy</th>
<th>Intensity</th>
</tr>
{% if object.intimacyPrincipal_set.all %}
{% for tie in object.intimacyPrincipal_set.all %}
<tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ tie.description }}</td>
<td>{{ tie.intensity }}</td>
</tr>
{% endfor %}
{% else %}
<tr><td>No principals found.</td></tr>
{% endif %}
</table>
<table class="w3-table" style="line-height:15px">
<tr class="w3-border-bottom custom-border-grey">
<th>Tie</th>
<th>Target</th> <th>Target</th>
<th>Intensity</th> <th>Intensity</th>
</tr> </tr>
{% if object.intimacyTie_set.all %} {% if object.intimacy_set.all %}
{% for tie in object.intimacyTie_set.all %} {% for tie in object.intimacy_set.all %}
<tr class="custom-hover-grey custom-hover-text-orange"> <tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ tie.description }}</td> <td>{{ tie.description }}</td>
<td>{{ tie.target }}</td> <td>{{ tie.target }}</td>
@ -847,7 +871,7 @@
</tr> </tr>
{% endfor %} {% endfor %}
{% else %} {% else %}
<tr><td>No ties found.</td></tr> <tr><td>No intimacies found.</td></tr>
{% endif %} {% endif %}
</table> </table>
</div> </div>
@ -858,13 +882,112 @@
<p style="margin:3px" class="fancy w3-center w3-xlarge"> <p style="margin:3px" class="fancy w3-center w3-xlarge">
<span class="w3-center"><b>Charms</b></span> <span class="w3-center"><b>Charms</b></span>
</p> </p>
<table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey">
<th>Charm</th>
<th>Type</th>
<th>Duration</th>
<th>Keywords</th>
<th>Description</th>
</tr>
{% if object.charmSet %}
{% for charm in object.charmSet %}
<tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ charm.name }}</td>
<td>{{ charm.charmType }}</td>
<td>{{ charm.duration }}</td>
<td>{{ charm.keywords }}</td>
<td>{{ charm.description }}</td>
</tr>
{% endfor %}
{% else %}
<tr><td>No charms found.</td><tr>
{% endif %}
</table>
{% if object.lunarShapeSet %}
<br>
<table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey">
<th>Shape</th>
<th>Type</th>
<th>Size</th>
<th>Description</th>
</tr>
{% for charm in object.lunarShapeSet %}
<tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ charm.name }}</td>
<td>{{ charm.shapeType }}</td>
<td>{{ charm.size }}</td>
<td>{{ charm.description }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if object.evocationSet %}
<br>
<table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey">
<th>Evocation</th>
<th>Type</th>
<th>Duration</th>
<th>Keywords</th>
<th>Description</th>
</tr>
{% for charm in object.evocationSet %}
<tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ charm.name }}</td>
<td>{{ charm.charmType }}</td>
<td>{{ charm.duration }}</td>
<td>{{ charm.keywords }}</td>
<td>{{ charm.description }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{% if object.martialArtSet %}
<br>
<table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey">
<th>Charm</th>
<th>Type</th>
<th>Duration</th>
<th>Keywords</th>
<th>Description</th>
</tr>
{% for charm in object.martialArtSet %}
<tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ charm.name }}</td>
<td>{{ charm.charmType }}</td>
<td>{{ charm.duration }}</td>
<td>{{ charm.keywords }}</td>
<td>{{ charm.description }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
</div> </div>
{% endblock %} {% endblock %}
{% block items %} {% block items %}
<div class="w3-large w3-margin-bottom w3-margin-top"> <div class="w3-large w3-margin-bottom w3-margin-top">
<p style="margin:3px" class="fancy w3-center w3-xlarge"> <p style="margin:3px" class="fancy w3-center w3-xlarge">
<span class="w3-center"><b>Items</b></span> <span class="w3-center"><b>Inventory</b></span>
</p> </p>
<table class="w3-table" style="line-height:11px">
<tr class="w3-border-bottom custom-border-grey">
<th>Item</th>
<th>Description</th>
</tr>
{% if object.itemSet %}
{% for item in object.itemSet %}
<tr class="custom-hover-grey custom-hover-text-orange">
<td>{{ item.name }}</td>
<td>{{ item.description }}</td>
</tr>
{% endfor %}
{% else %}
<tr><td>No items found.</td><tr>
{% endif %}
</table>
</div> </div>
{% endblock %} {% endblock %}