Skip to content

Commit 37c02dd

Browse files
committed
Initial source code release
0 parents  commit 37c02dd

16 files changed

Lines changed: 1483 additions & 0 deletions

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# MeatGrinder
2+
3+
This application is currently hosted using **Google App Engine** at [this address](http://meat-grinder.appspot.com).
4+
5+
## Purpose
6+
7+
[Christian Blouin](https://github.com/bongotastic) and I created this application a couple of years back to manage calculating what body location an attack hits in the GURPS roleplaying system. A thread was maintained [here](http://gurpspalantirquest.blogspot.ca/2013/05/web-app-for-hit-location-and-realistic.html).
8+
9+
This application's source code has been released in leu of an upcoming refactoring and cleaning up of the code in preparation of adding a couple of new features.
10+

TODO.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
Outstanding issues
2+
3+
Critical:
4+
5+
Important:
6+
- Styling with new color scheme
7+
8+
Good to have/fix:
9+
- It would be neat to gather what gets rolled as a log using the data store. Sortof a relational table with:
10+
<realistic bool><damage type sting><random bool><body part string>
11+
12+
We could have a statistics page (and a tiny link on the app page) showing the
13+
** proportion by damage type,
14+
** a hit counter,
15+
** breakdown of targetted shots.
16+
** Proportion of hit using realistic threshold vs basic
17+
18+
It is not very important at all, but I'm curious to see how to interact with data for future app. And the truly geek would
19+
probably enjoy the stats. If you want to play with that, go ahead. If not, I'll give it a try later.
20+
21+
- A java script to toggle between realistic/basic thresholds.
22+
23+
24+
Not sure if it is worth it
25+
-- Implement a more detailed table from Low-Tech Instant Armor (I don't own this manual...)
26+
-- Graphic selector (we're not hot on that)
27+
28+
29+
Fixed:
30+
cb - Crash on adding,multiplying multipliers.
31+
cb - Display of non numerical multiplier.
32+
cb - Added a credit link section.
33+
cb - Remember the last damage type
34+
cb - Abdominal wound sublocations not handled.
35+
cb - Order the Threshold: use a list of [threshold, text] instead of a disctionary
36+
cb - Special Wound tables
37+
cb - Cutting, Face/Nose: multiple "Attacks that miss by..." notes; may have to do a UNIQUE on notes list.
38+
39+
as - Hand foot neck and torso sublocations are not set to valid locations (With no notes mapping to them).
40+
as - Modifier float values properly translated to floats.
41+
as - Styling fixes, changed ordering of location list, cleaning up of code.

meat-grinder/app.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
application: meat-grinder
2+
version: 1
3+
runtime: python27
4+
api_version: 1
5+
threadsafe: yes
6+
7+
handlers:
8+
- url: /favicon\.ico
9+
static_files: favicon.ico
10+
upload: favicon\.ico
11+
- url: /css
12+
static_dir: css
13+
- url: .*
14+
script: main.app
15+
- url: /stats/*
16+
script: main.app
17+
18+
libraries:
19+
- name: webapp2
20+
version: "2.5.2"
21+
- name: jinja2
22+
version: latest

meat-grinder/css/mobile.css

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
a{
2+
color: #5E5E5E;
3+
text-decoration: none;
4+
font-weight: bold;
5+
}
6+
7+
body {
8+
background-color:#5F3711;
9+
font-family:sans-serif;
10+
height:100%;
11+
text-align:center;
12+
}
13+
14+
heading{
15+
font-weight:bold;
16+
font-size:2em;
17+
}
18+
19+
#wrap, #largewrap{
20+
background-color:#E2D5C1;
21+
padding:10px;
22+
font-size:1.5em;
23+
border:5px solid #D4C098;
24+
width:95%;
25+
}
26+
27+
table{
28+
margin:auto;
29+
font-size:1.3em;
30+
width:90%;
31+
margin-top:45px;
32+
margin-bottom:15px;
33+
border:2px solid #92753D;
34+
background-color:#F6F6E2;
35+
}
36+
37+
th{
38+
border-bottom:2px solid #92753D;
39+
background-color:#E2D5C1;
40+
}
41+
42+
td,th{
43+
padding:5px;
44+
}
45+
46+
ol{
47+
text-align:left;
48+
padding:0;
49+
margin-left:10px;
50+
margin-right:10px;
51+
list-style-position:inside;
52+
}
53+
54+
.mgform{
55+
margin:auto;
56+
width:100%;
57+
font-size:1em;
58+
}
59+
60+
.mgform button, select, label{
61+
font-size:1.25em;
62+
}
63+
64+
input[type=checkbox] {
65+
-webkit-transform: scale(1.8,1.8);
66+
}
67+
68+
.mgformitem{
69+
margin-top:12px;
70+
margin-bottom:12px;
71+
display:block;
72+
}
73+
74+
.outcome{
75+
padding:2px;
76+
padding-top:5px;
77+
margin:2px;
78+
margin-top:10px;
79+
}
80+
81+
.panel, .chart{
82+
padding:8px;
83+
padding-bottom:5px;
84+
background-color:#D4C098;
85+
border:2px solid #92753D;
86+
margin:10px;
87+
}
88+
89+
.biggie{
90+
font-size:2.75em;
91+
margin-bottom:2px;
92+
}
93+
94+
.smaller{
95+
font-size:1em;
96+
}
97+
98+
#legal{
99+
padding-top:5px;
100+
font-style:italic;
101+
font-size:0.6em;
102+
}
103+
104+
#thanks{
105+
padding-top:5px;
106+
}

meat-grinder/css/style.css

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
/* links */
2+
3+
a{
4+
color: #5E5E5E;
5+
text-decoration: none;
6+
font-weight: bold;
7+
}
8+
9+
a:hover{
10+
color:black;
11+
}
12+
13+
/* page layout */
14+
15+
body {
16+
background-color:#5F3711;
17+
font-family:sans-serif;
18+
height:100%;
19+
text-align:center;
20+
}
21+
22+
#wrap{
23+
background-color:#E2D5C1;
24+
width:810px;
25+
padding:10px;
26+
border:5px solid #D4C098;
27+
margin:auto;
28+
}
29+
30+
.outcome{
31+
padding:2px;
32+
margin:2px;
33+
margin-top:10px;
34+
}
35+
36+
.panel, .chart{
37+
padding:8px;
38+
background-color:#D4C098;
39+
border:2px solid #92753D;
40+
margin:10px;
41+
}
42+
43+
.chart{
44+
margin-bottom:15px;
45+
}
46+
47+
#thanks{
48+
padding-top:5px;
49+
font-size:90%;
50+
}
51+
52+
.biggie{
53+
font-size:250%;
54+
margin-bottom:2px;
55+
}
56+
57+
.smaller{
58+
padding-top:20px;
59+
font-size:75%;
60+
}
61+
62+
#legal{
63+
padding-top:5px;
64+
font-style:italic;
65+
font-size:50%;
66+
}
67+
68+
/* headings */
69+
70+
heading{
71+
font-weight:bold;
72+
font-size:150%;
73+
}
74+
75+
/* tables */
76+
77+
table{
78+
margin:auto;
79+
width:75%;
80+
margin-top:15px;
81+
margin-bottom:15px;
82+
border:2px solid #92753D;
83+
background-color:#F6F6E2;
84+
}
85+
86+
th{
87+
border-bottom:2px solid #92753D;
88+
background-color:#E2D5C1;
89+
}
90+
91+
td,th{
92+
padding:5px;
93+
font-size:80%;
94+
}
95+
96+
/* lists */
97+
98+
ol{
99+
text-align:left;
100+
padding:0;
101+
margin-left:12px;
102+
margin-right:12px;
103+
list-style-position:inside;
104+
}
105+
106+
/* forms */
107+
108+
.mgform{
109+
margin:auto;
110+
width:400px;
111+
font-size:75%;
112+
}
113+
114+
.mgformitem{
115+
margin-top:5px;
116+
margin-bottom:5px;
117+
}
118+
119+
/* floating */
120+
121+
.left, .right{
122+
width:45%;
123+
}
124+
125+
.left{
126+
float:left;
127+
}
128+
129+
.right{
130+
float:right;
131+
}
132+
133+
.clear{
134+
clear:both;
135+
}
136+
137+
/* --- OLD WRAP ---
138+
#wrap{
139+
background-color:#E2D5C1;
140+
width:425px;
141+
padding:10px;
142+
border:5px solid #D4C098;
143+
margin:auto;
144+
}
145+
--- OLD WRAP --- */

0 commit comments

Comments
 (0)