From 3d9ba0d59836cdbea40f7188e07665c679036052 Mon Sep 17 00:00:00 2001 From: tcaxle Date: Sat, 11 Apr 2020 18:07:22 +0100 Subject: [PATCH] Flipped it over! Now weapons, armor, merits, specialities etc. belong to specific characters --- app/__pycache__/admin.cpython-38.pyc | Bin 678 -> 676 bytes app/__pycache__/models.cpython-38.pyc | Bin 15190 -> 19799 bytes app/admin.py | 2 +- app/migrations/0001_initial.py | 296 ++++++++++-- app/migrations/0002_auto_20200411_0239.py | 144 ------ app/migrations/0002_auto_20200411_1502.py | 37 ++ app/migrations/0003_auto_20200411_0244.py | 17 - app/migrations/0003_auto_20200411_1503.py | 44 ++ app/migrations/0004_auto_20200411_0250.py | 65 --- app/migrations/0004_auto_20200411_1544.py | 29 ++ app/migrations/0005_auto_20200411_1620.py | 70 +++ app/migrations/0005_intimacytie_target.py | 20 - app/migrations/0006_auto_20200411_0257.py | 149 ------ app/migrations/0006_auto_20200411_1624.py | 28 ++ app/migrations/0007_auto_20200411_0302.py | 404 ----------------- app/migrations/0007_auto_20200411_1651.py | 426 ++++++++++++++++++ app/migrations/0008_auto_20200411_1255.py | 29 -- app/migrations/0008_auto_20200411_1653.py | 93 ++++ app/migrations/0009_auto_20200411_1301.py | 34 -- app/migrations/0009_auto_20200411_1706.py | 100 ++++ app/migrations/0010_auto_20200411_1302.py | 24 - app/migrations/0011_rollconfiguration.py | 30 -- app/migrations/0012_auto_20200411_1414.py | 64 --- .../0013_charm_rollconfiguration.py | 20 - app/migrations/0014_auto_20200411_1428.py | 38 -- app/migrations/0015_auto_20200411_1431.py | 34 -- app/migrations/0016_auto_20200411_1439.py | 39 -- .../__pycache__/0001_initial.cpython-38.pyc | Bin 1871 -> 10488 bytes .../0002_auto_20200411_1502.cpython-38.pyc | Bin 0 -> 666 bytes .../0003_auto_20200411_1503.cpython-38.pyc | Bin 0 -> 927 bytes .../0004_auto_20200411_1544.cpython-38.pyc | Bin 0 -> 733 bytes .../0005_auto_20200411_1620.cpython-38.pyc | Bin 0 -> 996 bytes .../0006_auto_20200411_1624.cpython-38.pyc | Bin 0 -> 631 bytes .../0007_auto_20200411_1651.cpython-38.pyc | Bin 0 -> 3430 bytes .../0008_auto_20200411_1653.cpython-38.pyc | Bin 0 -> 3486 bytes .../0009_auto_20200411_1706.cpython-38.pyc | Bin 0 -> 1687 bytes .../0017_auto_20200411_1443.cpython-38.pyc | Bin 0 -> 1105 bytes app/models.py | 353 ++++++++++----- "elect drop table \"" | 124 +++++ 39 files changed, 1441 insertions(+), 1272 deletions(-) delete mode 100644 app/migrations/0002_auto_20200411_0239.py create mode 100644 app/migrations/0002_auto_20200411_1502.py delete mode 100644 app/migrations/0003_auto_20200411_0244.py create mode 100644 app/migrations/0003_auto_20200411_1503.py delete mode 100644 app/migrations/0004_auto_20200411_0250.py create mode 100644 app/migrations/0004_auto_20200411_1544.py create mode 100644 app/migrations/0005_auto_20200411_1620.py delete mode 100644 app/migrations/0005_intimacytie_target.py delete mode 100644 app/migrations/0006_auto_20200411_0257.py create mode 100644 app/migrations/0006_auto_20200411_1624.py delete mode 100644 app/migrations/0007_auto_20200411_0302.py create mode 100644 app/migrations/0007_auto_20200411_1651.py delete mode 100644 app/migrations/0008_auto_20200411_1255.py create mode 100644 app/migrations/0008_auto_20200411_1653.py delete mode 100644 app/migrations/0009_auto_20200411_1301.py create mode 100644 app/migrations/0009_auto_20200411_1706.py delete mode 100644 app/migrations/0010_auto_20200411_1302.py delete mode 100644 app/migrations/0011_rollconfiguration.py delete mode 100644 app/migrations/0012_auto_20200411_1414.py delete mode 100644 app/migrations/0013_charm_rollconfiguration.py delete mode 100644 app/migrations/0014_auto_20200411_1428.py delete mode 100644 app/migrations/0015_auto_20200411_1431.py delete mode 100644 app/migrations/0016_auto_20200411_1439.py create mode 100644 app/migrations/__pycache__/0002_auto_20200411_1502.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0003_auto_20200411_1503.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0004_auto_20200411_1544.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0005_auto_20200411_1620.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0006_auto_20200411_1624.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0007_auto_20200411_1651.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0008_auto_20200411_1653.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0009_auto_20200411_1706.cpython-38.pyc create mode 100644 app/migrations/__pycache__/0017_auto_20200411_1443.cpython-38.pyc create mode 100644 "elect drop table \"" diff --git a/app/__pycache__/admin.cpython-38.pyc b/app/__pycache__/admin.cpython-38.pyc index 6ae4697fe6d6727c572ce404e6d9cf7de3ff9194..3ef2d18e602a0c998c5a7bc39ea0dd922318e378 100644 GIT binary patch delta 41 vcmZ3+x`dTCl$V!_0SG>Rofwz9k@qJfA8&F-Vo_ppNotW(VsYwZF{TLs0l*DY delta 43 xcmZ3&x{Q@Kl$V!_0SFGBni!YAk@qK~0Dp2uVo_ppNotXAeo;wc&SVj$2>=zG4e$T} diff --git a/app/__pycache__/models.cpython-38.pyc b/app/__pycache__/models.cpython-38.pyc index 02b9b68ff1a8b01484213be9457d79aac2d4f748..76cb6efcaec9aa50980cb4aa0a25c1c44c3839bf 100644 GIT binary patch literal 19799 zcmcJ1dzf3tbsunX@y0H9mv4%aR&RkapQ0#Aq9kImAQuuASOHj4yq3HKF_*hoVu96M zfRFWVlYCS^$F1wnP8v5!n?y=dr)=|X+((?Yac!q|ou*CmXnpgwf7E@1?#ubwxQY5m zf4{l+;l#C-VO_otu!$p5+E^L>Mn-d`M%(|D}k z(tJMQ6aKny#c%li3~P1G(0~K=z>03@il*0tD-aL3!HEwGWh& z;u%n$L7IC|&VEpy70-e494PmKavvzC#Pgs$56blTT`BX8J z&y+~NRzagp%R(8!sbcDU&JIq=$~B58I9-@No3Vq_O$eO%z)t3DF0;_k*$$><<#G%0a1PDO| z5xoEw;*ja(rd)Al9+?As8NP_jNz-zrsu#1<8Cx&b1Y4k&QrVoXmnuqCqNPGQo62QN z86)cSdd*_0aH*V0<;pWu3$s#JiW4c#7tdwSrE+$p)RtFkSJAuZ=kqm7G*^;A@;x|`ednD zxzc%?D$b(l>9s^kuAp?`y^X27Upzr9_dLiWJl#)E=Bm6^j>u zDpKiSICCylLR*Y*=4!=q20|DeP{^Ij7-1+!vwoFa2ho+e3{bmPXIwANmu3Ll7KdYW z8p6+?O`Sy#OhfpM#R@fYE&fs=o1dIYmCLydBF$Q3a;nm5u>{+nGlIF=;u0ia`)4`S zM6JET$cz!3F)LRo@bFnEKZKEtptM*apP8IV<)cm<7dmgs*P5L- zMtCY!nt>uBP_dSvgtySc=>pU%l}k;bMe%eK5AxoDme6LanHK z+K5b{N>nW5g!?KzQ<$4mMW&aUtE*0t6fC-)WD2$-F}ty<$eCQ`)hzjsoT;1FYYy|V z?Ce~za1MPjZN#!GtFn0&ok519XN#EKI3f|0mDSa{DrYS*n<|#U@+43Rv5IVA(wt05 z&R#~?)ky>#on*}z9BC!dNYSiRDN;~F5OO9r4ZKt{>q8cw%cEvNX{Tp?R3Mi%|e^c)GI60=Ez*(JZ7Z%974@& zn2y?<74%XL`Sem<*yJ<;9hy(4u>?S?+SRHWymn~1FpoY5 zZnjmA+q*Ka&gBZzC~AS4GB=k=6%kq6lexZHZ(>PZoIE^9#Zjx8Q%{^C!|bMn9H-nc zyHU_pw5RVEaAVef1Wcdd7d}J#nD4S*_=Wan#0Y%Mr~4ovUov1v^AP13c7E00QwWRT z!(Oot00{rOCbUzqUx9VtAaLlEujRYxTlTNx?I)F;i$cSBNCTzXiL0i()U?cn2J5hc zmoRj$+!iR!j;&O#FF@=t3vOw4&}y%m(vB=FK&Y*Sg_eSOgJgiLE-cuwg#{GRt}~oiSa_pdsXK2}dG?6QM->*t!h+18WCx@f zIzw;*;InuvYz2G~zlv88?E6u~{M}7YjZK?YRo0Xd^Feo*5$`Eno&-l_`3zv~55b{) z4k3Ap;6(z}M%851Pzw0x@$?ILZ%=`W+m4*&Sr#%(WI4R}IhN##jPds+vdDC^<%o(U zdOsZj3cjP;(B6RXL#H+10I&`m?C3VA9o-J)m2}Q1=}3+kJ1or06<7pHLbr5z8bp;y zrWl$c7$UOIf!;5&agW=(5Y;Sl{|ZZRMaB6064iJKGfCaV8dj^i^8sb#{elQ|WOfV@ z$V{iq)-_;fUeMinLGPIt0_(abyIWyLc6PX`DzO|Dlh2~Gu8Q3X_6V@ZS9g@+uOWq{ zHs$Wfj`-L1ZEDJ02y_kweV&E60%iPt33O~0I#K&B%2U1q7M)>PVkk|}KP&eBsi}id|F~U9bcXQ(FAG5Lmu7~O0@3Lim>+bG;_Buk^ zT0*a)jNf57u7nuhT0%5NJ>BcKcwqemgbwQm8VTzs2tx%6{&dZq>^$v7eqRU=Wv&*8 z(+FUa^DS`73#utE0E{WG#kjLv1i4&@5aMCbHJC)0_|}8o)R&Ann&{{pXEj$5J913w zcBs)_xdbZ+dxy+I`NCYLB%eo0WpE@zT@{rEsY-kAsHT5_WERb7pFh-@95FqPdu{Fr zzt8gH!1Go}i{hk(_m=-{-)s7Ye?!{{Z0PI0WzPDX{bBd5qp6o^Olo<>S~8&cw&TLA zHXBw;wyQ1Yg)`1YlYT8SGIYS9eaKgx;y^E>z;1$kIO^oq4O5=Z;n+{b#lwl?y0|2ZG+HWPFqO zIEMJUn|W)8ni$UDjHI^Mc-g%1F0jM@MSoJN(K0PiA~_o{8O0yd=}*lLOVGd5~KeeO}} z)5qIgh-eWd{XdrGiiq(|BI4|Rnu&fIz*{Iy3?l&(ZPAa@e;qL$_fbwPh!}3B+*k-P z-cLF2!idFiOXb8Oi1EJ4iA51pH&?367-GD^8dI@2V!X?8VhO}{;znys>|WGR{|N50 z_K3Z2`i)Vs539<4dt5f_bsYCyt}Wt#m1p>dcGSAzfx7lVxJ7L}CQetRNTergq$fGKD(z;Cp#n7IyZbumi96e&)W`{^_bE+)Y z`;8#LH)%Z9_o99*gnayJLFAh6Tjt^z#1q03#uLF4U5ssLi$3S?vW|rmi|9shBebqf z`(7_^gmJhMz7mqJtq0zUt%sN6Z}TWcQ?%7}y@wW1v^Up-Jv3d>rq@GV+8fg%xDjD} znr|bz5n~s=>1!p{{Wty7zMKAyIF4`PS3;li%fxydJe=MLuZKnOiYEVUYlK~VQzK

Y8~}c2J<1x$TO+m}^TMbp{Ki+__|^6JdUUrBWt~zvkprb4SdWOv)4q)e%Fq?% zR1YPjC_6|wi8P<`zrk?uiVrz2vIQ!peahcl6%q2gkywwcgX8t+dh9YSxL96wqv|Tj zQ7WGzplb9PHS9$y1~*F97{DU>?e)k8PR2g1y+Px}uQDlP0jGG{p(Azx*Izxx1MLPo zcB+ockZN;f^@T&IM41mE2zl+mCLKLQ%Ar&BCho$l7ZC6=${I?N5+FHh2jr2X1jh)T zBsfm+6u}9CrwL9HJOgm_h#lgYU_&U2$`0bjYtfW!T5?30h_I_*fEW>0H;t{l5ogFf zi!@@2tWF_~y$pBG8+#8Mjcrbz&IzMzp#mdnIVYN?WhAW3!As3n zb!kwHI%Tty0;DzX({%r)zi;b_9cnR60D8|T(#4c5$i>82Y!e!BLd6)0sj!YzYrBSb z3T`e{A0)R8T8=aVmZJ?P zo*x5R8=ZCenmkvjx6S-!bDhZ~_q}!yw|ec~G1rykn|MFNvN@|mlA0uCQ#(6y>pO!` zQgb9`1|hqUE3;0kQ>~V)U23s1P+YsC>Ex#82=*HxSKf3Wc zj?zQwHne3&aaHCNC%+$AZ~4{0?2(z8O2P{Z5az-{-jkTmzqZ%wh7Lnm_f;z1G`of7 zli`7mk)K30at^?b;m)p@otiIW_xK4?hpFYq@nW_s%t%0z@;-&Rt;74JS{)bI-mwN=ad!X`;*up8Ns5=TRnwrYyvgIsf_5=Nu zbrtZ_cv0$;87c2mW}_b4@PEJ+`}+`C2)+O);m#5>dL*{1ziLllxD8VU-BDh+pvOge zx+Fidm9%~cFD~>+ibHr7&s0b z0Zsr%fk%L2z@xx%;BCMO;4$D4;Bnwl;0fSuz}tbxfOi0o1MdW$0Nw?>9e6kJ4&Xh& zJAwBC?*iTjyc_r);61?mf%gL63%n2bKHz(R?+4xwJPCX+@B_g20Y3Q6jzH4K#Zhq#_$iSUPl*$-yidUQ>1lBip{K>m;u-NQLMP$<^qe?_ z&@*CIJTG2A=vjC`y(ms2^qeS&l$b*36uh9)Vj7|6#VaBs&LH#xJfY5t8H8RGPh!C- z*&|h)P+}!<*DG{?=f^M~HSLBFfCUZ1?Up}}ne=tUx113;e$?WFsdQ&w1s(N{lv<86 zk_@sW7BAIqKy3n|DcDxZiAZuUAnDI169ha8lw3UJIKg&;hY9W>*g>$9;1PoT1osj= z3Sh+D>v`VJ%g0EjcY%DIfa{dJpI{HcB*6m!9gmnbQ_=>I4-xDm;4Va&k89(zmFu;Y z_R8e>TD`u?3-Gn^bX%fVDCbMwvxW4sN_7d0^{zbLn#GXVgsLrlrH!j|APvFqBJJR4T zxv1@iR^W`^2s_pHuQ;?p0(kCV@vmtIkEn&^mL@GEwf(ihb*2sSFH);$2Pi}TV8321 zDS@em53}|A#Bg^k9d&s4tElkZxzP?Dmwyc@v2uPNkR5jTIpPJ54jU_Wyoc*w=ovG6 zw`^NqJCFlg9(RE9fO*~bmhWxVk$WL;`6D2~IpimRysDH=+=&;ZaliC#yr@)pXM4xa z^?nR@EVXA5aX6AY*0q*@5gT4?LA7CgI=PGzl3_bR zajaM=I9XgZ?SR!@v7;6}glOK_5pMyNtl8GD!E?}#!Wq)_-wPvL>74;Sd7kWl-a!8y!LS^X}xT>hkLw)`m|`O^e{o#3+ss)-4>`gI&HAqwTF zS;GW%i%Bvaa0Vee2)Dty`S~HO+TO2aDqY_(i#JZvC`X;VcY4#`=}mf^;1+^C=IC3X z%eNhdF+_J#jO)|n>TeMY@E5n>rsujxeSutZDR5-JHZTr)Qf|#Br)DlxyeW~p*8MFU z_$a*tryU;c5hzqsX5MJmu+RuQP^s4)QUB6bEV_P!U+%KV4el@&-IQCi$W@AB<6zy* zAp%yr0@UO$lZVd{4C4ml`fznQ;r^7gnVAv|Z$**;_k3!?PTHDpnu$Odeez{EFNdeK804ET&8e#Idg7itf ztBvw!K){~Ra|j+P+}JXFEFBli-|qIbVt7wK!`+0NSmq#AW9ImlEVpox=^Rsb=R9Xj z?cqpLGeEG1cQx*#SkE1QZ96FFvplp3VbgI${k;MH2MjSc)h6Zx9`g@x$vjxcfOq8W z4XIv1|0;5F^X++TUQJky@|o zwh^v7e(OBt>^Q0$dL7q@MjUL>E0$)r5rMOb^5iyxD|DwfLQUnyZN$N+=f!SBR+>6mQCr4$(0>Xl0@wrSc6S74=mh$n&Op1vtW$=25-R^Z>K`gN zo?U)}g5z@N9(m?5`_C{#mVnzGbrL!>|F7fizhiz*v^ds`OHwuo0x29pa4+f!Lcp%T zRYljFQf!x+7!vtgfk76Ab^8}k+P6B~>yq*JQ+KZ2K;7~mqnM$s{UTm`yQee1N6GSev$EQRb@m?aRkru%zbl0r?-2pJ@|~!+Uw9E8!&R`qY|0z9Ual-+ zSxaFRgCg88LerHMe7s|X@nwS9uuLOSfcO11cs}ye6Wj~5TJ46pf}^2)a$=~)ETAqs zV!C@1_c|e+!l!A4B96xGNY$-dmYFh9PMs|+oX@1@3i*<)x4@2bixa7IcoK>yI4_arV)Lly69{9b%_mHMC7Z zbWJIe{2dg5HR3dobKk)IsSTT;1&aus)guhGl@38pI9R)nqHuPpx_^hZwrha%Lr$_P zM~L@hnCz$VSjPa!u)9UYQAp=#L~A*|3uuye6w(SVht%%yCy@g2c(B?AfuwL8bjV>$M4nt!=-L7x%Iz zHXpabK}pKi>hc2Kdg=m?6gWyKPZ%6S;tm2|1pw3gg?AA2d*K}fztD!O1e6J1Y^&)) zP1MeGQRKzESc|9Y_yA^7#n$4brKW7Tk%aT%oEwYfn)v3&Nj8$X4pV!@&E+a&5d3*R zDgm12^eU~rb&Y#^9C2yFe?_yPoI-;y$0T~&zY%N*!~>uo0oFl33AzS)4srN=STn#O z(C0u8fPNhDFz6S7BcLyV4u6%#e#E1oUk8qX{=J|FLDxlmBe<^1x8MpI#Gr5n2DGOY zUXD-05&wXgCF7t zjyR>dciKIgr|f8|9YOoE`RPYrDH@UsSr{j^D20#|AZi9)-&PK=2<4 z{u99;65J+G<6+oP_yfFsoLq5D?%3g+LHTCuAweT{(~yAYvl+sg8a6Sfn(!0Ch9$0s zMFN<^Vg#61bECjqW4DP221gWUqgYGTA(i~6C|Q1u;5PyAB^r*FWD>!(vDv0`VLLfz zHeku$kpB$id~$417F@05ZxPH9{BweTL7*0=m|C3F$G7rdl1kBG3&(o6Gcs^n?bPE{ z^LtD+OnTqMi)l)aC*71@cMXz!x3&B(;jJe>$8)25sR@&{E5WE4gQXIOEEDF4lHn+% z8#1?nvJIiIIfl>}LJ@Nup>h6;2pGTp8;?k_3iK#^TxHN6n3cD zZmqUkPJWd^rR{2(nm9g-tglh`5}W@CeQr^hesrru%2@mC4Z&YC-_2Drk0Pt z%%~d47a8h`zdKI5Qf714$w~|XN?FHt7+SBy08-zNbJ%G-)+qo_x_3U#fOI`Mhg>;x zuM)9&j#^v6Ztp$qMaO${-_=g^GB?f6`A2sKWG~xs{-c$A$?^31Hd9?BxN~p+F_L_L zx3`_+5A-(ao5m8-`A*|eQ=`}0-gd(AwY1}2v&uCbLznSoyNNydrtQtED8>%8)a#+s z@Sh;T4|?K44>7)pp*x+&bQEF^yUuEDwNk&s;mkWI{WCqaF`j(Jj*4X%ugyc^lKODQ z7+c|2ulRP~thV5dTE_wiiy8l;MfoV(`U*e#;?y8NMWDvrUtvfYaKFvae#G0Ug!V#;7-aRaUxX~q2YXgTT+}j@5+2PPe9qKFTU(V@25{v z9f8EUA0a9Iu(u6-uA-Jxd!+CC47rFR@vnOLuaTUU_D$9?FlYZTX}?bJ1%fXUe2L&I z1YafieFEC$%D7Z3shZZ+?4p!Tb+n}XhpB}fIRy&=|G3}nyqy1Ak57cvUu1%R;fZZ{A`_vB o_{577!Lbnjq7&ca^N)?HP#kb%EIzh>EHSZvVr(KY5g!Zue{}k{$p8QV literal 15190 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 diff --git a/app/migrations/__pycache__/0002_auto_20200411_1502.cpython-38.pyc b/app/migrations/__pycache__/0002_auto_20200411_1502.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1043f1bc0704986ba56b56a5e722eb77086b4d09 GIT binary patch literal 666 zcma)4y>8nu5ayp{TXm2jd4gPI_xq__BR2On)ic^LXkk8HSPU zd87=nl*qfbfc`|v>$S2ScNb}>q0*S$K;s!sDZKdvrTYpW4OkswhsAA%dr$lU?)T>R zBE51Yq^&E{X<^#5ZwPdXO{d%UNU{C7RO{Bsc{b0ox3ig?z02m)`kTi;KqA!UJ(>|` yPhub_qwJ3m|GEC^InELu#(Jfy!cFy;zJ(s&7Q68dF-;g9Z|3l!%ieVDPWUr0N3CN3 literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0003_auto_20200411_1503.cpython-38.pyc b/app/migrations/__pycache__/0003_auto_20200411_1503.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d0f14e55e7d56a3d4639d2f4a6599af27bc128e4 GIT binary patch literal 927 zcmbVKyN=U96tz8e;&>D70tL`fA(dhXoUIY;wiGzu(QH$T09dDye8&#kk)Tymzg>sw^N z0$W;%O@Bu^IZK#rJ+^>>`_2Lv+0uQ>5*O@eR_J}Dd}|ikCdji?37wTiJ#X)}*NB`c z?fN4b>^dh7*r}Z`beA4Dz_7RMFMV*qgC6ux8ThAXvB6d>_$9V;LER4gyKZq zX)hUoM~p{i@brvn=oludD!CfR@q~*;mwXaW;`sLdKHt9+Pt2A1LMSoUsBk5umQ5j) z32;@R%CMNDvPqEH$>j%)QdsC456>eZGkw5g(MW9u3zQYtxYB0$8r4x*BQHdbloRA7 zpzJ*3ws*!m&QOBc-3)nNY9UYdy5H7>-@(h0UotjRQtG0uR~g!OEao~CxyloRTnowNqVfG&Ie0f zqwLOnn?{Q=$4HlXG)^-ebs8c>Bzd%XZ4rro@Td3(XsJ|yEa=ZEXLwnN|E z_y0J3>H39U5)gv%n$Mct0G6Ui%P|~v+`GIDk@e|1K`{Q^wSf0pWOXZyZx7i|JZJTL literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0004_auto_20200411_1544.cpython-38.pyc b/app/migrations/__pycache__/0004_auto_20200411_1544.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..793dcea6b4cc86e364fe0cf6141ab711ae1f0745 GIT binary patch literal 733 zcmZ`1yKdA#aP774Y;)mJg%6-H#o3n}T||yZgo>rCB~e_ z)_`h|jAwPmKPymyxnq;QMOo{rM1^SXZWWEJa)fmpnLrGoLYPPhO4TbQekR0uFO^Ma zCBPah!0NQXwsC2NCU^pHY|AwEaAqin)5I+6bk!2f)zoCN}IyaW>ai}tk8=y*xFf=aE9NryAo|8^F$w{a~n}WyS z4R{6~;aVyh9)KBs_D=qh({q|z?YH{0_wDYz>vls%YxMK;dnaJ*y8-p(6PVI2o|6Fv zj$o-Xa~$@DfeYRz1|B*~_r{yK;J;=4#t-7LzN5o5Stwp6GArgLR9`&;Q`*H>GRS5Q zF#6qDI5Q9ZWy2%}9~!qC)P#c?3ZS(`;T|)DIx~biv%SY`?=jmoW)nKlg?qOyDQQBl z<{wu6qBA>y`&8-!-8$LS*mt$Z^ISg}4u_MNuSyw@hhy?bqj+>Qndpb}bFTQjM1|K} zlwy@}r5jwOQt7UJy}DQ>d5+NcsCN=j#2HUf2U5V=%kZl5I#PjwjD=9Ipv8ch@Py1G7&oHVZQY-3k7f@Eg zX+O|GZ1u;n4&#_=TnQw<6UP@TE=(SS0CUU$vw4Dra?KI#Gc+GxCn&&xR9>z@D05t2 zvM)?MC9*ZYrqQ`fF)C#m4Hiim*`6arG@@vCFC!Y((cNLa7!L>eN99qjChg*yOyIeH z{f6(j=K1}fyg$BgPuRV`Srw;rAzHAcCdvVPupP1SUAdL_jD+goxN7T5qrWiS>v;bF D2A~V! literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0006_auto_20200411_1624.cpython-38.pyc b/app/migrations/__pycache__/0006_auto_20200411_1624.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bcaaafdd21767d69ef0efd9dd39464c9032763a7 GIT binary patch literal 631 zcmZuuJ#W-N5Z(3q?tDigiUg%cG#1j?cM7RcbX8K3B8bKXtHm?&`Ly<$wNG$0v=saV z%KW8msi;z=K|;x_FCpP$tQpVS^}LyRezUtfVPwxQzrOtzF!tSphZYi8khf1M00XXB z#WT*?DT4sSX9fcKD)=O_0K(TS9{iy1Sj^p|DhsQ+($sD4j~?2Hz=FK>0a?a@Q8_Po zCNNwLJTZhY__9UAKhWq76(So#L@mc|{OYb(95|tx#vP<-`a-I8XXHGcr|IErCTBEc3cpm>I zuZ-=KK8r^#l6`@cZXzX-t~FA=Bjx+G(w^QUzy@o;Ixn%c^c$FabdLV=q(lvFVj8^F z@`BlYy6?l!MY1#%CY`C0X;F4bzY;=13MBXPC#1#Ezgiqln~fF3H6(AJQHVrv9S%Ys s_~+Muv#Y-1j076PO4Ws#!n=Op{``KlZT5snUG#Fh^|9~O`sH@S4V5&eT>t<8 literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0007_auto_20200411_1651.cpython-38.pyc b/app/migrations/__pycache__/0007_auto_20200411_1651.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc2ae9b4b8eac06e85afb4053e0fc4514201fd9b GIT binary patch literal 3430 zcmeH~Ta()~6o75VNt|0-*p^Z#<$ej5B)hbyEtF1odSMu53$*1W4|udb+C-@@S=rfa z`os*p_JKdZJAX;9JoN|g!Z5(G)7_(iVTK=2@7Vby*|K!>N%DT%>$M#^e*W#J@6K;I z&aY*{K72~tpfexP1s!x_CvnGa;*CAGOnY%{?0@cH4gDV-^rbti|4T>rdzz zr|+3|q9$4tDob|>u2H|WeS)E!4UV;7yVhwj83*Q7tA8q0S)_MURx z;)cadivx>W7Pl?#SlqR^XYmP(Pg;D+;^!=W-r^05Pg{J(;ukDFYw?Q~pR@QSi(j_* zyv46re8J*ZEq=}7*DZd-;x{dR%i^~!e#hc>Eq>49zQylb{DH+ETKtj41B-_ik1XD_ zc+29CExu^+rDF!mD?s)Nki7zAuK?LAK=uldy#i#f0NE=*_6m@_0%WfM*(*Ty3Xr`5 zWUm0(D?s)Nki7zAuK?LAK=uldy#i#f0NE=*_6m@_0%WfM*(*Ty3Xr`5WUm0(D?s)N zki7zAuK?LAK=uldy#i#f0NE=*_6m@_0%WfM*(*Ty3Xr`5WUm0(E5IYK8nj+rmd#m! zSMaKA&Dyi(tTXFU>I!~>pW?O0P5S-pu}|w+1L6POJJ}oe@G7mW*G+5ZXi25@wI=5C z@!8R61ff_IS-3UY8jUV)Zibt%bXqpUon-p<{zB0MXj-C}#eOHTRY&yFOEyW_Dx2;T2 zzEIpbE##!Cx?5r#t4URBPo)PkFVv*keN0^yGRaLdrrybPWje7+CksV4P=EY5 z)6#Skk*fJ3UO&)Dgf5hbw{?-5Ad#pdl}b}jWGp4^Wo37A-J)&FG_ojK#D!^7mm)bY zcRSM|-pe#qNj(haTIN-&+645{D%aNvDd@RSv1#R5L@!g1q-j!dqEb;p6$caK1x0&O zOoYr@o8mg zNV3U7Qg}*%ijYR(Atkh;Xs^PDaz&A#$gU&d6wT5V2N_+~r45`>95dtLt_iAMl*8P-xqbiU_O08dozZ}=KXiU^^w(vZ%ggUKhSMyO z!y-$DgNZ7J)kKsyq`(dN+h|BL`0~GI@TJYce5K3puqK`PEoxR!^ZxSdzU#T(pT7U> z_gNgCdGH_ez`fvlfB21Rj;#56r~G?T&8U8ZcBN`Y4{*0y4A!&$+;Qe${qM@)Xs+uo f%Sm0%MxNel`iAmMaBaQpTrU@oyu9s{8`S;=bf#s} literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0008_auto_20200411_1653.cpython-38.pyc b/app/migrations/__pycache__/0008_auto_20200411_1653.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9fba96bf3af51f8bdc53c0afea56cc04ce2bd8e7 GIT binary patch literal 3486 zcmb`KTXP#V6o9=qdwt8*y>ThwS`0LC(mNE0b7>oh(-J2H40PF8ioMQWT8rdRjyC^oFj)+-Rh4rjUm8`zfSjt&{myYh;j8 zPnC@a&^NVFR%y<2TEvc=zz=EK3lMh0CTmN6u7R=$zwkOd8}p|%RHU?&hKBWyfmEd7 zbSHy!_!=mUGROL!icD;F(w!{Iq8!Q}t3V2za+oB$*UsN|I?oN|Kxqyo@F$Xk-UEy$uIRY8^{ zSr%kPl2t)&NODt^(YYK)E3=6i$Spm*Y3$>BM=hu;JAGv~g zlKChQtSi|)L<9>Zi%>6Stp#*&tio9>qCPrAM?xM*c?^AqK0j8#VjL{KfYUqy^V!Ce zohdlO)18ty+h3xujx%t^zdqKv?cl%Jw$hCgXdCj*H#A!t<{L;pn%(WvQkr zz*?v*R4Nze=dJn6m*#1)*|v$@j4)ZULrhf%ZQY>i+Dcic1#aFX*p4uw`7Uuhn;cpD z_=sjhOdQ*F2ACEOFxd@4Z27i_sm{s=2=W-!H$ddc&pxzV?6;yeDY6DLj7Y31T&)Wg zY%>V&**!Ok4YLRz!o-{i9=IaKOc>doRJ@9+430reS^GgZE0JaxVV>zxM zN?Vv3E4<3GnYLnwv1!I)(eV#(7&)!j7sa(l)Qk($#y-q?T?l#C@moCydceH%>j_17 z0|I-z&dNLlLj*BUC9w2-EuokmMo!c5F*R#L$?&j?VV*T!rGsV@cA2Jc$8{b&zZVeL zGH`GnTrU-~OK`~jZr&M6IS^oW+&H&6l6B%BnB68XL)&qwUT0-C44NWXvvny#7-8Fu z+ANG>!3=xkz&Ws8YSxER8iF?H`!u~3*Ba~>)pnpL^c~mj27OFw_Tk205=zJGc{4jh zT-Hd5#do%i-L4fu{EDcS9S4)kJpz#sjXKeBd}oM(;mk7-)Sk}Fs?Xrx|G=#etV#9Ab zI3y|zOY_V8-BDvpCmJK!D!hSiF!vFI>+BuDb!x5zQ7la|hcl$Yb$zJ{UOZLKS_lU4R6ej$_ zpO~Pj4|PLVRJEi`{ZHSL@|f?h>R(`mfVNM^1(*FjHU0PftuIjSbB@aMwn)fQ6>~q`x~i- BLe2mH literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0009_auto_20200411_1706.cpython-38.pyc b/app/migrations/__pycache__/0009_auto_20200411_1706.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dc1ff83bebac1388f99b9e0edb08be1b2d568ad2 GIT binary patch literal 1687 zcmb7EOK;Oa5cV^%-K0&SJX=6Q9LRwrEpG`y9~2I#Jy5v#fVIg?gM(kJ9iY9!wFiC% zC-^;k<-|__iN~y+qybT3R`Tr3>^#36@6&qSQD|NI`u^EcLs33UVR{)PtkRdR5CH|$ zKyg*twLlAXS62(2;hGN>(7|}8fPwm;@>X{%pzbJ5^9%VY+f7wCq2K2$^W!M(N!|2X zBw>}l^rEIHm}hV`Q2VN@qcJc+ld%u95pPcMl_|bD#ako30ya2U9asY!W}pW30}W;m zWK?-Fm!CM$fCkPCYGhR(%)&ezgX0J0#BQOa-HDQRCrjF$Ds6Xq(&3rkIy_r4!dW;f z!eYq?i$_LSDjDJ2zwP?R+&MT;Q*}YuTjObJYC>m8B2INWom(CoX0f-@S?P4HEiZe^ zH?CiG>%HfUvtEY0%Tg3|#>1Fzz8v~Vf#Id6|G15L}Q6FKVHf6R@R4AeU3LorO*K+0_C8`4MvSE;k+AFFhPBG8f)OnRg zpIbzPx$9#9!k(1;WPhHTYfa>J*@C?>?x<-Bvm3DJ1yw!_0%6CIN6lb{Ld#-Kf3)Jx z`%&hHthbkNKkE4j3*4EpD)Xsl*{!f8&7lz%j=F zIUd#;K+bXb9?`|f8%xFfHo3!k90$mv!g3*3J%~B_{pb!+oGs`UcXehWkIY(QjQM2=rbOWo)`Dx1PFQz}fw(Iz(h3nvt*Ms&3$b{`FaQ7m literal 0 HcmV?d00001 diff --git a/app/migrations/__pycache__/0017_auto_20200411_1443.cpython-38.pyc b/app/migrations/__pycache__/0017_auto_20200411_1443.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e4f879368dedbb0dcf2788234fcb8726e556d3f1 GIT binary patch literal 1105 zcmb_bOK;Oa5MI9$+f8XwkT`+3hC`gR6$lBTA|w!p^gil+-k~aoBrOONqI<^XkMw;cdWeUJIpz z9Ta7va9_!0(sbuEe9ZR`dnD4V&dy^0ETbv}m9cbMTUJQLMSns2iAgR=beJTRY%P$^ zog{f%bI~N+Xn-Z=fcYfFO4`l${l@@Ln?htW+Qd&&W~FazPy~#5ey~|I(p=F!V||`0 zoT8kY!lK0ABBDJy`vW3s-u=Itx3)Sc52Qm_ zZQ9iv624>qbUoLy>FNIX@26w)wZ0dJW-JT`b3y``@qAhgV9W4j?wyr6Ki#GTwf}HV O`lBZAsv*<2I?gW^`y{{s literal 0 HcmV?d00001 diff --git a/app/models.py b/app/models.py index 0338a35..2dc877e 100644 --- a/app/models.py +++ b/app/models.py @@ -1,6 +1,7 @@ from django.db import models import multiselectfield from random import randint +from math import ceil #==============================================================================# #-------------------------------- OPTION LISTS --------------------------------# @@ -229,7 +230,14 @@ class DieField(multiselectfield.MultiSelectField): kwargs['number'] = self.number return name, path, args, kwargs -class NamedForeignKey(models.ForeignKey): +class NamedBooleanField(models.BooleanField): + def __init__(self, verbose_name, default=False, *args, **kwargs): + kwargs['verbose_name'] = verbose_name + kwargs['default'] = default + kwargs['blank'] = False + super().__init__(*args, **kwargs) + +class NamedForeignKeyField(models.ForeignKey): def __init__(self, verbose_name, *args, **kwargs): kwargs['verbose_name'] = verbose_name kwargs['on_delete'] = models.CASCADE @@ -340,124 +348,10 @@ class modifierStatic(modifierBase): static = SingleChoiceField("Static", STATICS) -#==============================================================================# -#----------------------------------- ITEMS ------------------------------------# -#==============================================================================# -class itemBase(models.Model): - class Meta: - abstract = True - - def __str__(self): - return self.name - - name = NameField() - description = DescriptionField() - -class item(itemBase): - pass - -#==============================================================================# -#---------------------------------- WEAPONS -----------------------------------# -#==============================================================================# -class itemWeaponBase(itemBase): - class Meta: - abstract = True - - category = SingleChoiceField("Category", CATEGORIES) - tags = MultiChoiceField("Tags", TAGS_WEAPONS) - accuracy = NamedIntegerField("Accuracy") - damage = NamedIntegerField("Damage") - defense = NamedIntegerField("Defense") - overwhelming = NamedIntegerField("Overwhelming") - attunement = NamedIntegerField("Attunement") - -class itemWeaponMelee(itemWeaponBase): - pass - -class itemWeaponRanged(itemWeaponBase): - rangeClose = NamedIntegerField("Close Range") - rangeShort = NamedIntegerField("Short Range") - rangeMedium = NamedIntegerField("Medium Range") - rangeLong = NamedIntegerField("Long Range") - rangeExtreme = NamedIntegerField("Extreme Range") - -#==============================================================================# -#----------------------------------- ARMOR ------------------------------------# -#==============================================================================# -class itemArmor(itemBase): - category = SingleChoiceField("Category", CATEGORIES) - tags = MultiChoiceField("Tags", TAGS_ARMOR) - soak = NamedIntegerField("Soak") - hardness = NamedIntegerField("Hardness") - mobilityPenalty = NamedIntegerField("Mobility Penalty") - attunement = NamedIntegerField("Attunement") - -#==============================================================================# -#----------------------------------- CHARMS -----------------------------------# -#==============================================================================# -class charm(models.Model): - def __str__(self): - return self.name - - name = NameField() - description = DescriptionField() - modifierAttribute = NamedManyToManyField("Attribute Modifiers", modifierAttribute) - modifierAbility = NamedManyToManyField("Abilities Modifiers", modifierAbility) - modifierStatic = NamedManyToManyField("Statics Modifiers", modifierStatic) - rollConfiguration = NamedManyToManyField("Roll Configurations", rollConfiguration) - -#==============================================================================# -#----------------------------------- MERITS -----------------------------------# -#==============================================================================# -class merit(models.Model): - def __str__(self): - return self.name - - name = NameField() - description = DescriptionField() - dots = DotField("Dots") - modifierAttribute = NamedManyToManyField("Attribute Modifiers", modifierAttribute) - modifierAbility = NamedManyToManyField("Abilities Modifiers", modifierAbility) - modifierStatic = NamedManyToManyField("Statics Modifiers", modifierStatic) - rollConfiguration = NamedManyToManyField("Roll Configurations", rollConfiguration) - -#==============================================================================# -#-------------------------------- SPECIALITIES --------------------------------# -#==============================================================================# -class speciality(models.Model): - def __str__(self): - return "[{}] {}".format(self.ability, self.name) - - modifier = 2 - name = NameField() - ability = SingleChoiceField("Ability", ABILITIES) - -#==============================================================================# -#--------------------------------- INTIMACIES ---------------------------------# -#==============================================================================# -class intimacyBase(models.Model): - class Meta: - abstract = True - - def __str__(self): - return "[{}] {}".format(self.description, self.intensity) - - description = DescriptionField() - intensity = SingleChoiceField("Intensity", INTENSITIES) - -class intimacyTie(intimacyBase): - target = NamedCharField("Target") - -class intimacyPrincipal(intimacyBase): - pass - #==============================================================================# #--------------------------------- CHARACTERS ---------------------------------# #==============================================================================# class characterBase(models.Model): - class Meta: - abstract = True - def __str__(self): return self.name @@ -476,7 +370,7 @@ class characterBase(models.Model): wits = DotField("Wits") #=========== ABILITIES ============# - archey = DotField("Archery") + archery = DotField("Archery") athletics = DotField("Athletics") awareness = DotField("Awareness") brawl = DotField("Brawl") @@ -504,20 +398,86 @@ class characterBase(models.Model): war = DotField("War") #============= MERITS =============# + # Reverse relation + # .merit_set.all() #=========== WILLPOWER ============# + willpowerCap = 10 + willpowerMax = NamedIntegerField("Maximum Willpower") + willpower = NamedIntegerField("Current Willpower") #=========== EXPERIENCE ===========# + experienceTotal = NamedIntegerField("Total Experience") + experience = NamedIntegerField("Current Experience") #============ WEAPONS =============# + # Reverse relation + # .itemWeaponMelee_set.all() + # .itemWeaponRanged_set.all() #============= ARMOR ==============# + # Reverse relation + # .itemArmor_set.all() #============= ITEMS ==============# + # Reverse relation + # .item_set.all() #============= HEALTH =============# + health0 = NamedIntegerField("'-0' Health Levels") + health1 = NamedIntegerField("'-1' Health Levels") + health2 = NamedIntegerField("'-2' Health Levels") + healthIndex = NamedIntegerField("Health Track Index") + def healthTrack(self): + 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): + return self.healthTrack()[self.healthIndex] #============ STATICS =============# + def resolve(self, speciality=None, mod=0): + if self.charmsActive(): + mod += sum([]) + if speciality: + mod += specility.modifier + return mod + ceil((self.wits + self.integrity) / 2) + def guile(self, speciality=None, mod=0): + if self.charmsActive(): + mod += sum([]) + if speciality: + mod += specility.modifier + return mod + ceil((self.manipulation + self.socialize) / 2) + def soakNatural(self, mod=0): + if self.charmsActive(): + mod += sum([]) + return mod + self.stamina + def soakArmored(self, mod=0): + if self.armorEquipped.all(): + mod += sum([]) + return mod + def soakTotal(self, mod=0): + return mod + self.soakNatural() + self.soakArmored() + def hardness(self, mod=0): + if self.armorEquipped.all(): + mod += sum([]) + if self.charmsActive(): + mod += sum([]) + return mod + def joinBattle(self, mod=0): + if self.charmsActive(): + mod += sum([]) + return mod + self.wits + self.awareness + 3 + def evasion(self, mod=0): + if self.charmsActive(): + mod += sum([]) + return mod + ceil((self.dexterity + self.dodge) / 2) - sum([]) + def rush(self, mod=0): + if self.charmsActive(): + mod += sum([]) + return mod + self.dexterity + self.athletics + def disengage(self, mod=0): + if self.charmsActive(): + mod += sum([]) + return mod + self.dexterity + self.dodge class characterExaltBase(characterBase): class Meta: @@ -533,9 +493,6 @@ class characterExaltBase(characterBase): pass -class characterMortal(characterBase): - pass - class characterExaltSolar(characterExaltBase): #============ SUPERNAL ============# @@ -547,3 +504,161 @@ class characterExaltLunar(characterExaltBase): #========= SHAPESHIFTING ==========# pass + +#==============================================================================# +#----------------------------------- ITEMS ------------------------------------# +#==============================================================================# +class itemBase(models.Model): + class Meta: + abstract = True + + def __str__(self): + return self.name + + name = NameField() + description = DescriptionField() + character = NamedForeignKeyField("Character", characterBase) + +class item(itemBase): + pass + +#==============================================================================# +#---------------------------------- WEAPONS -----------------------------------# +#==============================================================================# +class itemWeaponBase(itemBase): + class Meta: + abstract = True + + equipped = NamedBooleanField("Equipped?") + category = SingleChoiceField("Category", CATEGORIES) + tags = MultiChoiceField("Tags", TAGS_WEAPONS) + accuracy = NamedIntegerField("Accuracy") + damage = NamedIntegerField("Damage") + defense = NamedIntegerField("Defense") + overwhelming = NamedIntegerField("Overwhelming") + attunement = NamedIntegerField("Attunement") + +class itemWeaponMelee(itemWeaponBase): + def attack(self, ability, mod=0, withering=True): + if withering: + return mod + ability + self.dexterity + weapon.accuracy + else: + return mod + ability + self.dexterity + def parry(self, ability, mod=0): + if self.character.charmsActive(): + mod += sum([]) + return mod + ceil((self.dexterity + ability) / 2) + weapon.defense + +class itemWeaponRanged(itemWeaponBase): + rangeClose = NamedIntegerField("Close Range") + rangeShort = NamedIntegerField("Short Range") + rangeMedium = NamedIntegerField("Medium Range") + rangeLong = NamedIntegerField("Long Range") + rangeExtreme = NamedIntegerField("Extreme Range") + def attack(self, ability, rangeBand, mod=0, withering=True): + rangeBand = rangeBand.lower() + if rangeBand == "close" or rangeBand == "c": + rangeModifier = self.rangeClose + elif rangeBand == "short" or rangeBand == "s": + rangeModifier = self.rangeShort + elif rangeBand == "medium" or rangeBand == "m": + rangeModifier = self.rangeMedium + elif rangeBand == "long" or rangeBand == "l": + rangeModifier = self.rangeLong + elif rangeBand == "extreme" or rangeBand == "e": + rangeModifier = self.rangeExtreme + else: + rangeModifier = 0 + if withering: + return mod + rangeModifier + ability + self.dexterity + weapon.accuracy + else: + return mod + rangeModifier + ability + self.dexterity + +#==============================================================================# +#----------------------------------- ARMOR ------------------------------------# +#==============================================================================# +class itemArmor(itemBase): + equipped = NamedBooleanField("Equipped?") + category = SingleChoiceField("Category", CATEGORIES) + tags = MultiChoiceField("Tags", TAGS_ARMOR) + soak = NamedIntegerField("Soak") + hardness = NamedIntegerField("Hardness") + mobilityPenalty = NamedIntegerField("Mobility Penalty") + attunement = NamedIntegerField("Attunement") + +#==============================================================================# +#----------------------------------- CHARMS -----------------------------------# +#==============================================================================# +class charm(models.Model): + def __str__(self): + return self.name + + name = NameField() + description = DescriptionField() + rollConfiguration = NamedManyToManyField("Roll Configurations", rollConfiguration) + character = NamedForeignKeyField("Character", characterBase) + active = NamedBooleanField("Active?") + modifierAttribute = NamedManyToManyField("Attribute Modifiers", modifierAttribute) + modifierAbility = NamedManyToManyField("Abilities Modifiers", modifierAbility) + modifierStatic = NamedManyToManyField("Statics Modifiers", modifierStatic) + def modifier(self, keyword): + output = 0 + for modifierAttribute in self.modifierAttribute.all(): + if keyword == modifierAttribute.attribute: + output += modifierAttribute.value + for modifierAbility in self.modifierAbility.all(): + if keyword == modifierAbility.ability: + output += modifierAbility.value + for modifierStatic in self.modifierStatic.all(): + if keyword == modifierStatic.static: + output += modifierStatic.value + return + +#==============================================================================# +#----------------------------------- MERITS -----------------------------------# +#==============================================================================# +class merit(models.Model): + def __str__(self): + return self.name + + name = NameField() + description = DescriptionField() + dots = DotField("Dots") + character = NamedForeignKeyField("Character", characterBase) + rollConfiguration = NamedManyToManyField("Roll Configurations", rollConfiguration) + modifierAttribute = NamedManyToManyField("Attribute Modifiers", modifierAttribute) + modifierAbility = NamedManyToManyField("Abilities Modifiers", modifierAbility) + modifierStatic = NamedManyToManyField("Statics Modifiers", modifierStatic) + +#==============================================================================# +#-------------------------------- SPECIALITIES --------------------------------# +#==============================================================================# +class speciality(models.Model): + def __str__(self): + return "[{}] {}".format(self.ability, self.name) + + modifier = 2 + name = NameField() + ability = SingleChoiceField("Ability", ABILITIES) + character = NamedForeignKeyField("Character", characterBase) + +#==============================================================================# +#--------------------------------- INTIMACIES ---------------------------------# +#==============================================================================# +class intimacyBase(models.Model): + class Meta: + abstract = True + + def __str__(self): + return "[{}] {}".format(self.description, self.intensity) + + description = DescriptionField() + intensity = SingleChoiceField("Intensity", INTENSITIES) + character = NamedForeignKeyField("Character", characterBase) + +class intimacyTie(intimacyBase): + target = NamedCharField("Target") + +class intimacyPrincipal(intimacyBase): + pass + diff --git "a/elect drop table \"" "b/elect drop table \"" new file mode 100644 index 0000000..b457809 --- /dev/null +++ "b/elect drop table \"" @@ -0,0 +1,124 @@ + List of relations + Schema | Name | Type | Owner +--------+-----------------------------------------+----------+-------- + public | app_characterexaltlunar | table | django + public | app_characterexaltlunar_id_seq | sequence | django + public | app_characterexaltlunar_merits | table | django + public | app_characterexaltlunar_merits_id_seq | sequence | django + public | app_characterexaltsolar | table | django + public | app_characterexaltsolar_id_seq | sequence | django + public | app_characterexaltsolar_merits | table | django + public | app_characterexaltsolar_merits_id_seq | sequence | django + public | app_charactermortal | table | django + public | app_charactermortal_id_seq | sequence | django + public | app_charactermortal_merits | table | django + public | app_charactermortal_merits_id_seq | sequence | django + public | app_charm | table | django + public | app_charm_id_seq | sequence | django + public | app_charm_modifierAbility | table | django + public | app_charm_modifierAbility_id_seq | sequence | django + public | app_charm_modifierAttribute | table | django + public | app_charm_modifierAttribute_id_seq | sequence | django + public | app_charm_modifierStatic | table | django + public | app_charm_modifierStatic_id_seq | sequence | django + public | app_charm_rollConfiguration | table | django + public | app_charm_rollConfiguration_id_seq | sequence | django + public | app_intimacyprincipal | table | django + public | app_intimacyprincipal_id_seq | sequence | django + public | app_intimacytie | table | django + public | app_intimacytie_id_seq | sequence | django + public | app_item | table | django + public | app_item_id_seq | sequence | django + public | app_itemamor_id_seq | sequence | django + public | app_itemarmor | table | django + public | app_itemweaponmelee | table | django + public | app_itemweaponmelee_id_seq | sequence | django + public | app_itemweaponranged | table | django + public | app_itemweaponranged_id_seq | sequence | django + public | app_merit | table | django + public | app_merit_id_seq | sequence | django + public | app_merit_modifierAbility | table | django + public | app_merit_modifierAbility_id_seq | sequence | django + public | app_merit_modifierAttribute | table | django + public | app_merit_modifierAttribute_id_seq | sequence | django + public | app_merit_modifierStatic | table | django + public | app_merit_modifierStatic_id_seq | sequence | django + public | app_merit_rollConfiguration | table | django + public | app_merit_rollConfiguration_id_seq | sequence | django + public | app_modifierability | table | django + public | app_modifierability_id_seq | sequence | django + public | app_modifierattribute | table | django + public | app_modifierattribute_id_seq | sequence | django + public | app_modifierstatic | table | django + public | app_modifierstatic_id_seq | sequence | django + public | app_rollconfiguration | table | django + public | app_rollconfiguration_id_seq | sequence | django + public | app_speciality | table | django + public | app_speciality_id_seq | sequence | django + public | auth_group | table | django + public | auth_group_id_seq | sequence | django + public | auth_group_permissions | table | django + public | auth_group_permissions_id_seq | sequence | django + public | auth_permission | table | django + public | auth_permission_id_seq | sequence | django + public | auth_user | table | django + public | auth_user_groups | table | django + public | auth_user_groups_id_seq | sequence | django + public | auth_user_id_seq | sequence | django + public | auth_user_user_permissions | table | django + public | auth_user_user_permissions_id_seq | sequence | django + public | charsheet_abilityeffect | table | django + public | charsheet_abilityeffect_id_seq | sequence | django + public | charsheet_armor | table | django + public | charsheet_armor_id_seq | sequence | django + public | charsheet_attributeeffect | table | django + public | charsheet_attributeeffect_id_seq | sequence | django + public | charsheet_charm | table | django + public | charsheet_charm_abilityEffects | table | django + public | charsheet_charm_abilityEffects_id_seq | sequence | django + public | charsheet_charm_attributeEffects | table | django + public | charsheet_charm_attributeEffects_id_seq | sequence | django + public | charsheet_charm_id_seq | sequence | django + public | charsheet_charm_staticEffects | table | django + public | charsheet_charm_staticEffects_id_seq | sequence | django + public | charsheet_merit | table | django + public | charsheet_merit_abilityEffects | table | django + public | charsheet_merit_abilityEffects_id_seq | sequence | django + public | charsheet_merit_attributeEffects | table | django + public | charsheet_merit_attributeEffects_id_seq | sequence | django + public | charsheet_merit_id_seq | sequence | django + public | charsheet_merit_staticEffects | table | django + public | charsheet_merit_staticEffects_id_seq | sequence | django + public | charsheet_principal | table | django + public | charsheet_principal_id_seq | sequence | django + public | charsheet_solar | table | django + public | charsheet_solar_armor | table | django + public | charsheet_solar_armor_id_seq | sequence | django + public | charsheet_solar_charms | table | django + public | charsheet_solar_charms_id_seq | sequence | django + public | charsheet_solar_id_seq | sequence | django + public | charsheet_solar_merits | table | django + public | charsheet_solar_merits_id_seq | sequence | django + public | charsheet_solar_weaponsMelee | table | django + public | charsheet_solar_weaponsMelee_id_seq | sequence | django + public | charsheet_solar_weaponsRanged | table | django + public | charsheet_solar_weaponsRanged_id_seq | sequence | django + public | charsheet_speciality | table | django + public | charsheet_speciality_id_seq | sequence | django + public | charsheet_staticeffect | table | django + public | charsheet_staticeffect_id_seq | sequence | django + public | charsheet_tie | table | django + public | charsheet_tie_id_seq | sequence | django + public | charsheet_weaponmelee | table | django + public | charsheet_weaponmelee_id_seq | sequence | django + public | charsheet_weaponranged | table | django + public | charsheet_weaponranged_id_seq | sequence | django + public | django_admin_log | table | django + public | django_admin_log_id_seq | sequence | django + public | django_content_type | table | django + public | django_content_type_id_seq | sequence | django + public | django_migrations | table | django + public | django_migrations_id_seq | sequence | django + public | django_session | table | django +(119 rows) +