Add armour documentation
This commit is contained in:
parent
7f27b02a9c
commit
42e7b5d943
@ -6,7 +6,9 @@ title = "Blastmud"
|
||||
[markup.goldmark]
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
[markup.goldmark.parser]
|
||||
[markup.goldmark.parser.attribute]
|
||||
block = true
|
||||
[params]
|
||||
BookTheme = 'dark'
|
||||
BookToC = true
|
||||
|
27
hugo-static/content/armour.md
Normal file
27
hugo-static/content/armour.md
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
menu:
|
||||
after:
|
||||
name: Stats-Skills
|
||||
weight: 25
|
||||
title: Armour
|
||||
---
|
||||
# Armour
|
||||
|
||||
If you are just getting started, consider the fully newbie armour combo: Triple leather pants (i.e. 3 layers), triple leather jackets, 3 rusty metal pots, 3 hockey masks. These protect against most basic threats, until you need more advanced protection against higher level threats (or radiation, bullets etc...).
|
||||
|
||||
Use the table to customise your armour to the enemies or players you expect to fight.
|
||||
|
||||
## Armour table
|
||||
|
||||
Shows the resistances to the damage types (higher is better), the dodge penalty (lower is better), and where to get them.
|
||||
|
||||
Name |Protects |Beat |Slash |Pierce |Shock |Bullet |Rad |Dodge Penalty|Thickness|Comment
|
||||
---------------------------|-----------------|-----|------|-------|------|-------|------|-------------|---------|--------
|
||||
Rusty Metal Pot |Head |02-3 |01-2 |01-2 |0 |0 |0 |0.25 |04 |$400 in Grande Outdoors
|
||||
Hockey Mask |Face |02-3 |01-2 |01-2 |0 |0 |0 |0.25 |04 |$1000 at Riot Ready
|
||||
Shirt |Arms, Chest, Back|0 |0 |0 |0 |0 |0 |0 |02 |For the looks. Take from NPCs.
|
||||
Leather Jacket |Arms, Chest, Back|01-2 |02-3 |02-3 |0 |0 |0 |0.3 |04 |$500 at Riot Ready
|
||||
Radsuit |Entire body |0 |0 |0 |0 |0 |500-600|1.0 |04 |$4000 at OORANS Gift Shop
|
||||
Jeans |Groin, Legs |0 |0 |0 |0 |0 |0 |0 |02 |For the looks. Take from NPCs.
|
||||
Leather Pants |Groin, Legs |01-2 |02-3 |02-3 |0 |0 |0 |0 |04 |$500 at Riot Ready
|
||||
{data-sortable="1"}
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
menu:
|
||||
after:
|
||||
name: Learn to play
|
||||
weight: 5
|
||||
weight: 20
|
||||
title: Enemies
|
||||
---
|
||||
# Enemies
|
||||
|
||||
|
@ -115,6 +115,8 @@ Put on clothing with the *wear* command, and take it off with *remove*.
|
||||
Try the *gear* command to see what you are wearing, how much protection it offers, and how
|
||||
much impact it has on your ability to dodge.
|
||||
|
||||
[Learn more about armour](armour).
|
||||
|
||||
## Thirst, hunger, stress
|
||||
|
||||
Just like in the real world, in Blastmud, if you don't look after yourself, you will not
|
||||
|
@ -1,8 +1,8 @@
|
||||
---
|
||||
menu:
|
||||
after:
|
||||
name: Learn to play
|
||||
weight: 5
|
||||
weight: 10
|
||||
title: Theme
|
||||
---
|
||||
# Theme
|
||||
|
||||
|
@ -3,3 +3,5 @@
|
||||
.container { background: rgba(0,0,0,0.7) }
|
||||
.book-menu .book-menu-content { background: rgba(0,0,0,0.7) }
|
||||
</style>
|
||||
<link rel="stylesheet" href="/sortable-theme-light.css">
|
||||
<script src="/sortable.min.js"></script>
|
||||
|
69
hugo-static/static/sortable-theme-light.css
Normal file
69
hugo-static/static/sortable-theme-light.css
Normal file
@ -0,0 +1,69 @@
|
||||
/* line 2, ../sass/_sortable.sass */
|
||||
table[data-sortable] {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
/* line 6, ../sass/_sortable.sass */
|
||||
table[data-sortable] th {
|
||||
vertical-align: bottom;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* line 10, ../sass/_sortable.sass */
|
||||
table[data-sortable] th, table[data-sortable] td {
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
}
|
||||
/* line 14, ../sass/_sortable.sass */
|
||||
table[data-sortable] th:not([data-sortable="false"]) {
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-o-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
-webkit-touch-callout: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
/* line 26, ../sass/_sortable.sass */
|
||||
table[data-sortable] th:after {
|
||||
content: "";
|
||||
visibility: hidden;
|
||||
display: inline-block;
|
||||
vertical-align: inherit;
|
||||
height: 0;
|
||||
width: 0;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: transparent;
|
||||
margin-right: 1px;
|
||||
margin-left: 10px;
|
||||
float: right;
|
||||
}
|
||||
/* line 40, ../sass/_sortable.sass */
|
||||
table[data-sortable] th[data-sorted="true"]:after {
|
||||
visibility: visible;
|
||||
}
|
||||
/* line 43, ../sass/_sortable.sass */
|
||||
table[data-sortable] th[data-sorted-direction="descending"]:after {
|
||||
border-top-color: inherit;
|
||||
margin-top: 8px;
|
||||
}
|
||||
/* line 47, ../sass/_sortable.sass */
|
||||
table[data-sortable] th[data-sorted-direction="ascending"]:after {
|
||||
border-bottom-color: inherit;
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
/* line 5, ../sass/sortable-theme-light.sass */
|
||||
table[data-sortable].sortable-theme-light {
|
||||
color: #333333;
|
||||
background: #f2f2f2;
|
||||
}
|
||||
/* line 9, ../sass/sortable-theme-light.sass */
|
||||
table[data-sortable].sortable-theme-light tbody td {
|
||||
border-top: 1px solid #e0e0e0;
|
||||
}
|
||||
/* line 12, ../sass/sortable-theme-light.sass */
|
||||
table[data-sortable].sortable-theme-light th[data-sorted="true"] {
|
||||
background: #e0e0e0;
|
||||
}
|
236
hugo-static/static/sortable.js
Normal file
236
hugo-static/static/sortable.js
Normal file
@ -0,0 +1,236 @@
|
||||
(function() {
|
||||
var SELECTOR, addEventListener, clickEvents, numberRegExp, sortable, touchDevice, trimRegExp;
|
||||
|
||||
SELECTOR = 'table[data-sortable]';
|
||||
|
||||
numberRegExp = /^-?[£$¤]?[\d,.]+%?$/;
|
||||
|
||||
trimRegExp = /^\s+|\s+$/g;
|
||||
|
||||
clickEvents = ['click'];
|
||||
|
||||
touchDevice = 'ontouchstart' in document.documentElement;
|
||||
|
||||
if (touchDevice) {
|
||||
clickEvents.push('touchstart');
|
||||
}
|
||||
|
||||
addEventListener = function(el, event, handler) {
|
||||
if (el.addEventListener != null) {
|
||||
return el.addEventListener(event, handler, false);
|
||||
} else {
|
||||
return el.attachEvent("on" + event, handler);
|
||||
}
|
||||
};
|
||||
|
||||
sortable = {
|
||||
init: function(options) {
|
||||
var table, tables, _i, _len, _results;
|
||||
if (options == null) {
|
||||
options = {};
|
||||
}
|
||||
if (options.selector == null) {
|
||||
options.selector = SELECTOR;
|
||||
}
|
||||
tables = document.querySelectorAll(options.selector);
|
||||
_results = [];
|
||||
for (_i = 0, _len = tables.length; _i < _len; _i++) {
|
||||
table = tables[_i];
|
||||
_results.push(sortable.initTable(table));
|
||||
}
|
||||
return _results;
|
||||
},
|
||||
initTable: function(table) {
|
||||
var i, th, ths, _i, _len, _ref;
|
||||
if (((_ref = table.tHead) != null ? _ref.rows.length : void 0) !== 1) {
|
||||
return;
|
||||
}
|
||||
if (table.getAttribute('data-sortable-initialized') === 'true') {
|
||||
return;
|
||||
}
|
||||
table.setAttribute('data-sortable-initialized', 'true');
|
||||
ths = table.querySelectorAll('th');
|
||||
for (i = _i = 0, _len = ths.length; _i < _len; i = ++_i) {
|
||||
th = ths[i];
|
||||
if (th.getAttribute('data-sortable') !== 'false') {
|
||||
sortable.setupClickableTH(table, th, i);
|
||||
}
|
||||
}
|
||||
return table;
|
||||
},
|
||||
setupClickableTH: function(table, th, i) {
|
||||
var eventName, onClick, type, _i, _len, _results;
|
||||
type = sortable.getColumnType(table, i);
|
||||
onClick = function(e) {
|
||||
var compare, item, newSortedDirection, position, row, rowArray, sorted, sortedDirection, tBody, ths, value, _compare, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref, _ref1;
|
||||
if (e.handled !== true) {
|
||||
e.handled = true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
sorted = this.getAttribute('data-sorted') === 'true';
|
||||
sortedDirection = this.getAttribute('data-sorted-direction');
|
||||
if (sorted) {
|
||||
newSortedDirection = sortedDirection === 'ascending' ? 'descending' : 'ascending';
|
||||
} else {
|
||||
newSortedDirection = type.defaultSortDirection;
|
||||
}
|
||||
ths = this.parentNode.querySelectorAll('th');
|
||||
for (_i = 0, _len = ths.length; _i < _len; _i++) {
|
||||
th = ths[_i];
|
||||
th.setAttribute('data-sorted', 'false');
|
||||
th.removeAttribute('data-sorted-direction');
|
||||
}
|
||||
this.setAttribute('data-sorted', 'true');
|
||||
this.setAttribute('data-sorted-direction', newSortedDirection);
|
||||
tBody = table.tBodies[0];
|
||||
rowArray = [];
|
||||
if (!sorted) {
|
||||
if (type.compare != null) {
|
||||
_compare = type.compare;
|
||||
} else {
|
||||
_compare = function(a, b) {
|
||||
return b - a;
|
||||
};
|
||||
}
|
||||
compare = function(a, b) {
|
||||
if (a[0] === b[0]) {
|
||||
return a[2] - b[2];
|
||||
}
|
||||
if (type.reverse) {
|
||||
return _compare(b[0], a[0]);
|
||||
} else {
|
||||
return _compare(a[0], b[0]);
|
||||
}
|
||||
};
|
||||
_ref = tBody.rows;
|
||||
for (position = _j = 0, _len1 = _ref.length; _j < _len1; position = ++_j) {
|
||||
row = _ref[position];
|
||||
value = sortable.getNodeValue(row.cells[i]);
|
||||
if (type.comparator != null) {
|
||||
value = type.comparator(value);
|
||||
}
|
||||
rowArray.push([value, row, position]);
|
||||
}
|
||||
rowArray.sort(compare);
|
||||
for (_k = 0, _len2 = rowArray.length; _k < _len2; _k++) {
|
||||
row = rowArray[_k];
|
||||
tBody.appendChild(row[1]);
|
||||
}
|
||||
} else {
|
||||
_ref1 = tBody.rows;
|
||||
for (_l = 0, _len3 = _ref1.length; _l < _len3; _l++) {
|
||||
item = _ref1[_l];
|
||||
rowArray.push(item);
|
||||
}
|
||||
rowArray.reverse();
|
||||
for (_m = 0, _len4 = rowArray.length; _m < _len4; _m++) {
|
||||
row = rowArray[_m];
|
||||
tBody.appendChild(row);
|
||||
}
|
||||
}
|
||||
if (typeof window['CustomEvent'] === 'function') {
|
||||
return typeof table.dispatchEvent === "function" ? table.dispatchEvent(new CustomEvent('Sortable.sorted', {
|
||||
bubbles: true
|
||||
})) : void 0;
|
||||
}
|
||||
};
|
||||
_results = [];
|
||||
for (_i = 0, _len = clickEvents.length; _i < _len; _i++) {
|
||||
eventName = clickEvents[_i];
|
||||
_results.push(addEventListener(th, eventName, onClick));
|
||||
}
|
||||
return _results;
|
||||
},
|
||||
getColumnType: function(table, i) {
|
||||
var row, specified, text, type, _i, _j, _len, _len1, _ref, _ref1, _ref2;
|
||||
specified = (_ref = table.querySelectorAll('th')[i]) != null ? _ref.getAttribute('data-sortable-type') : void 0;
|
||||
if (specified != null) {
|
||||
return sortable.typesObject[specified];
|
||||
}
|
||||
_ref1 = table.tBodies[0].rows;
|
||||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||||
row = _ref1[_i];
|
||||
text = sortable.getNodeValue(row.cells[i]);
|
||||
_ref2 = sortable.types;
|
||||
for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) {
|
||||
type = _ref2[_j];
|
||||
if (type.match(text)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
}
|
||||
return sortable.typesObject.alpha;
|
||||
},
|
||||
getNodeValue: function(node) {
|
||||
var dataValue;
|
||||
if (!node) {
|
||||
return '';
|
||||
}
|
||||
dataValue = node.getAttribute('data-value');
|
||||
if (dataValue !== null) {
|
||||
return dataValue;
|
||||
}
|
||||
if (typeof node.innerText !== 'undefined') {
|
||||
return node.innerText.replace(trimRegExp, '');
|
||||
}
|
||||
return node.textContent.replace(trimRegExp, '');
|
||||
},
|
||||
setupTypes: function(types) {
|
||||
var type, _i, _len, _results;
|
||||
sortable.types = types;
|
||||
sortable.typesObject = {};
|
||||
_results = [];
|
||||
for (_i = 0, _len = types.length; _i < _len; _i++) {
|
||||
type = types[_i];
|
||||
_results.push(sortable.typesObject[type.name] = type);
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
};
|
||||
|
||||
sortable.setupTypes([
|
||||
{
|
||||
name: 'numeric',
|
||||
defaultSortDirection: 'descending',
|
||||
match: function(a) {
|
||||
return a.match(numberRegExp);
|
||||
},
|
||||
comparator: function(a) {
|
||||
return parseFloat(a.replace(/[^0-9.-]/g, ''), 10) || 0;
|
||||
}
|
||||
}, {
|
||||
name: 'date',
|
||||
defaultSortDirection: 'ascending',
|
||||
reverse: true,
|
||||
match: function(a) {
|
||||
return !isNaN(Date.parse(a));
|
||||
},
|
||||
comparator: function(a) {
|
||||
return Date.parse(a) || 0;
|
||||
}
|
||||
}, {
|
||||
name: 'alpha',
|
||||
defaultSortDirection: 'ascending',
|
||||
match: function() {
|
||||
return true;
|
||||
},
|
||||
compare: function(a, b) {
|
||||
return a.localeCompare(b);
|
||||
}
|
||||
}
|
||||
]);
|
||||
|
||||
setTimeout(sortable.init, 0);
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(function() {
|
||||
return sortable;
|
||||
});
|
||||
} else if (typeof exports !== 'undefined') {
|
||||
module.exports = sortable;
|
||||
} else {
|
||||
window.Sortable = sortable;
|
||||
}
|
||||
|
||||
}).call(this);
|
2
hugo-static/static/sortable.min.js
vendored
Normal file
2
hugo-static/static/sortable.min.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/*! sortable.js 0.8.0 */
|
||||
(function(){var a,b,c,d,e,f,g;a="table[data-sortable]",d=/^-?[£$¤]?[\d,.]+%?$/,g=/^\s+|\s+$/g,c=["click"],f="ontouchstart"in document.documentElement,f&&c.push("touchstart"),b=function(a,b,c){return null!=a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c)},e={init:function(b){var c,d,f,g,h;for(null==b&&(b={}),null==b.selector&&(b.selector=a),d=document.querySelectorAll(b.selector),h=[],f=0,g=d.length;g>f;f++)c=d[f],h.push(e.initTable(c));return h},initTable:function(a){var b,c,d,f,g,h;if(1===(null!=(h=a.tHead)?h.rows.length:void 0)&&"true"!==a.getAttribute("data-sortable-initialized")){for(a.setAttribute("data-sortable-initialized","true"),d=a.querySelectorAll("th"),b=f=0,g=d.length;g>f;b=++f)c=d[b],"false"!==c.getAttribute("data-sortable")&&e.setupClickableTH(a,c,b);return a}},setupClickableTH:function(a,d,f){var g,h,i,j,k,l;for(i=e.getColumnType(a,f),h=function(b){var c,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;if(b.handled===!0)return!1;for(b.handled=!0,m="true"===this.getAttribute("data-sorted"),n=this.getAttribute("data-sorted-direction"),h=m?"ascending"===n?"descending":"ascending":i.defaultSortDirection,p=this.parentNode.querySelectorAll("th"),s=0,w=p.length;w>s;s++)d=p[s],d.setAttribute("data-sorted","false"),d.removeAttribute("data-sorted-direction");if(this.setAttribute("data-sorted","true"),this.setAttribute("data-sorted-direction",h),o=a.tBodies[0],l=[],m){for(D=o.rows,v=0,z=D.length;z>v;v++)g=D[v],l.push(g);for(l.reverse(),B=0,A=l.length;A>B;B++)k=l[B],o.appendChild(k)}else{for(r=null!=i.compare?i.compare:function(a,b){return b-a},c=function(a,b){return a[0]===b[0]?a[2]-b[2]:i.reverse?r(b[0],a[0]):r(a[0],b[0])},C=o.rows,j=t=0,x=C.length;x>t;j=++t)k=C[j],q=e.getNodeValue(k.cells[f]),null!=i.comparator&&(q=i.comparator(q)),l.push([q,k,j]);for(l.sort(c),u=0,y=l.length;y>u;u++)k=l[u],o.appendChild(k[1])}return"function"==typeof window.CustomEvent&&"function"==typeof a.dispatchEvent?a.dispatchEvent(new CustomEvent("Sortable.sorted",{bubbles:!0})):void 0},l=[],j=0,k=c.length;k>j;j++)g=c[j],l.push(b(d,g,h));return l},getColumnType:function(a,b){var c,d,f,g,h,i,j,k,l,m,n;if(d=null!=(l=a.querySelectorAll("th")[b])?l.getAttribute("data-sortable-type"):void 0,null!=d)return e.typesObject[d];for(m=a.tBodies[0].rows,h=0,j=m.length;j>h;h++)for(c=m[h],f=e.getNodeValue(c.cells[b]),n=e.types,i=0,k=n.length;k>i;i++)if(g=n[i],g.match(f))return g;return e.typesObject.alpha},getNodeValue:function(a){var b;return a?(b=a.getAttribute("data-value"),null!==b?b:"undefined"!=typeof a.innerText?a.innerText.replace(g,""):a.textContent.replace(g,"")):""},setupTypes:function(a){var b,c,d,f;for(e.types=a,e.typesObject={},f=[],c=0,d=a.length;d>c;c++)b=a[c],f.push(e.typesObject[b.name]=b);return f}},e.setupTypes([{name:"numeric",defaultSortDirection:"descending",match:function(a){return a.match(d)},comparator:function(a){return parseFloat(a.replace(/[^0-9.-]/g,""),10)||0}},{name:"date",defaultSortDirection:"ascending",reverse:!0,match:function(a){return!isNaN(Date.parse(a))},comparator:function(a){return Date.parse(a)||0}},{name:"alpha",defaultSortDirection:"ascending",match:function(){return!0},compare:function(a,b){return a.localeCompare(b)}}]),setTimeout(e.init,0),"function"==typeof define&&define.amd?define(function(){return e}):"undefined"!=typeof exports?module.exports=e:window.Sortable=e}).call(this);
|
Loading…
Reference in New Issue
Block a user