First of all, everything you read about GZIP here, is controlled by the parameter:
http_gzip_support
Which defaults to "on" if you do not want Varnish to try to be smart about compression, set it to "off" instead.
A request which is sent into 'pipe' or 'pass' mode from vcl_recv{} will not experience any difference, this processing only affects cache hit/miss requests.
Unless vcl_recv{} results in "pipe" or "pass", we determine if the client is capable of receiving gzip'ed content. The test amounts to:
Is there a Accept-Encoding header that mentions gzip, and if is has a q=# number, is it larger than zero.
Clients which can do gzip, gets their header rewritten to:
Accept-Encoding: gzip
And clients which do not support gzip gets their Accept-Encoding header removed. This ensures conformity with respect to creating Vary: strings during object creation.
During lookup, we ignore any "Accept-encoding" in objects Vary: strings, to avoid having a gzip and gunzip'ed version of the object, varnish can gunzip on demand. (We implement this bit of magic at lookup time, so that any objects stored in persistent storage can be used with or without gzip support enabled.)
Varnish will not do any other types of compressions than gzip, in particular we will not do deflate, as there are browser bugs in that case.
Before vcl_miss{} is called, the backend requests Accept-Encoding is always set to:
Accept-Encoding: gzip
Even if this particular client does not support
To always entice the backend into sending us gzip'ed content.
Varnish will not gzip any content on its own (but see below), we trust the backend to know what content can be sensibly gzip'ed (html) and what can not (jpeg)
If in vcl_fetch{} we find out that we are trying to deliver a gzip'ed object to a client that has not indicated willingness to receive gzip, we will ungzip the object during deliver.
In vcl_recv{} you have a chance to modify the client's Accept-Encoding: header before anything else happens.
In vcl_pass{} the clients Accept-Encoding header is copied to the backend request unchanged. Even if the client does not support gzip, you can force the A-C header to "gzip" to save bandwidth between the backend and varnish, varnish will gunzip the object before delivering to the client.
In vcl_miss{} you can remove the "Accept-Encoding: gzip" header, if you do not want the backend to gzip this object.
In vcl_fetch{} two new variables allow you to modify the gzip-ness of objects during fetch:
set beresp.do_gunzip = true;
Will make varnish gunzip an already gzip'ed object from the backend during fetch. (I have no idea why/when you would use this...)
set beresp.do_gzip = true;
Will make varnish gzip the object during fetch from the backend, provided the backend didn't send us a gzip'ed object.
Remember that a lot of content types cannot sensibly be gziped, most notably compressed image formats like jpeg, png and similar, so a typical use would be:
sub vcl_fetch {
if (req.url ~ "html$") {
set beresp.do_gzip = true;
}
}
First, note the new syntax for activating ESI:
sub vcl_fetch {
set beresp.do_esi = true;
}
In theory, and hopefully in practice, all you read above should apply also when you enable ESI, if not it is a bug you should report.
But things are vastly more complicated now. What happens for instance, when the backend sends a gzip'ed object we ESI process it and it includes another object which is not gzip'ed, and we want to send the result gziped to the client ?
Things can get really hairy here, so let me explain it in stages.
Assume we have a ungzipped object we want to ESI process.
The ESI parser will run through the object looking for the various magic strings and produce a byte-stream we call the "VEC" for Varnish ESI Codes.
The VEC contains instructions like "skip 234 bytes", "deliver 12919 bytes", "include /foobar", "deliver 122 bytes" etc and it is stored with the object.
When we deliver an object, and it has a VEC, special esi-delivery code interprets the VEC string and sends the output to the client as ordered.
When the VEC says "include /foobar" we do what amounts to a restart with the new URL and possibly Host: header, and call vcl_recv{} etc. You can tell that you are in an ESI include by examining the 'req.esi_level' variable in VCL.
The ESI-parsed object is stored gzip'ed under the same conditions as above: If the backend sends gzip'ed and VCL did not ask for do_gunzip, or if the backend sends ungzip'ed and VCL asked for do_gzip.
Please note that since we need to insert flush and reset points in the gzip file, it will be slightly larger than a normal gzip file of the same object.
When we encounter gzip'ed include objects which should not be, we gunzip them, but when we encounter gunzip'ed objects which should be, we gzip them, but only at compression level zero.
So in order to avoid unnecessary work, and in order to get maximum compression efficiency, you should:
sub vcl_miss {
if (object needs ESI processing) {
unset bereq.http.accept-encoding;
}
}
sub vcl_fetch {
if (object needs ESI processing) {
set beresp.do_esi = true;
set beresp.do_gzip = true;
}
}
So that the backend sends these objects uncompressed to varnish.
You should also attempt to make sure that all objects which are esi:included are gziped, either by making the backend do it or by making varnish do it.


Bernardo Silva: Man City forward banned and fined for Benjamin Mendy tweet
Manchester City's Bernardo Silva has been banned for one match and fined £50,000 after an FA commission accepted he "did not intend" a tweet about team-mate Benjamin Mendy to be "racist".
Silva compared Mendy to the character on a packet of Conguitos - a chocolate brand available in Spain and Portugal.
Silva deleted the post 46 minutes after he published it before tweeting: "Can't even joke with a friend these days."
The FA report said: "Many persons would have taken offence to the content."
It added: "The player did not himself intend the post to be insulting or in any way racist. It is clear that the tweet was intended to be no more than a joke between close friends.
"However, this was not a private communication between two friends.
"The post was on a social media platform exposed to the 600,000 followers of a high-profile and well-respected professional footballer.
"Many persons viewing the imagery depicted in the tweet would have taken offence to the content as being insulting by reference to race, colour and ethnic origin in a way that unquestionably brings the game of football into disrepute."
The Portugal forward, 25, must also complete a face-to-face education for his tweet on 22 September, after admitting a breach of FA Rule E3.
There was no hearing after Silva admitted the initial charge on 2 October, acknowledging some people may be offended by the "historical connotations of the Conguitos character".
The FA commission also say they received a letter written by Mendy in support of his team-mate.
"We accept Bernardo Silva's admission that he did not mean to intentionally cause offence, and welcome The FA's move to provide education as part of the sanction," anti-discrimination charity Kick It Out said in a statement.
Analysis
Simon Stone, BBC Sport
Manchester City have decided not to appeal against the punishment, meaning Silva will miss the match against third-placed Chelsea at Etihad Stadium on 23 November.
However, that does not mean the City hierarchy are content at how this case has worked out.
They feel Silva has been very harshly treated. It has been pointed out that in its written reasons for the case, the FA accepts Silva saw no racist element to the cartoon character he compared Mendy to.
In addition, as Mendy evidently treated the social media post as a joke, the club feel the punishment does not fit the crime.
It has also been pointed out that as recently as May, Leicester's Hamza Choudhury was only fined £5,000 for historical posts on social media that had a racial element.


What Children Need
School is filled with many distractions. Sometimes it is difficult to focus, and sometimes it can be just overwhelming. With the rise and expansion of the autism spectrum, and other learning differences it is important for children to feel that they can learn. Fortunatly, with the help of educators and parents they can be successful. IDEA is not meant to make children feel differently or ashamed, it is intended to allow parents and educators create a program that will help children succeed.


EasyLogged is a free login controlled system created by AngularJS and based on Firebase. You can use it right now, simply download it on our github repository. The theme is open source, and you can use it for any purpose, personal or commercial.
EasyLogged includes an AngularJS component (easy-modal) and an AngularJS directive.
You can test EasyLogged with the next sign up button.
You can download EasyLogged for free on next repository at Github.
Visit Download PageFeel free to leave us a comment on our repository on Github to give some feedback about this project!


By @astronomyblog & @LoveGraphs. Stats last updated 23 February 2016.
It seems there may have been at least 52 shows and 212 listed appearances. With 4 people per show, Wikipedia has 2% more appearances listed than required (and probably a similar percent of people) perhaps due to listing special guests. The host/captains/regulars have included Victoria Coren Mitchell (Host × 30, Panellist × 4), David Baddiel (Host × 22, Panellist × 5), Sue Perkins (Panellist × 9), Peter Bradshaw (Panellist × 7), David Mitchell (Panellist × 7), Richard Coles (Panellist × 6), Michael Bywater (Panellist × 6).
Total appearances:
Guest appearances i.e. ignoring the host/captains/regulars:
All people:
Guests i.e. ignoring the host/captains/regulars:
Last updated: 2016/02/23


I am a Responsive Designer & Developer dedicated to making my clients' vision a reality. When I'm not working or creating with code, you can find me in the garden, in the kitchen, or traveling - always with my dogs by my side.
I am a Responsive Designer & Developer dedicated to making my clients' vision a reality. When I'm not working or creating with code, you can find me in the garden, in the kitchen, or traveling - always with my dogs by my side.
I am a native Minnesotan, with family in Canada and Alaska. I love the landscape of the west, and drive via Canada to Alaska to vacation almost every year, passing through some of the most beautiful mountain ranges and scenery on earth.
As a young person, I did not enjoy great success in the kitchen - but now cooking is truly a passion of mine! My dishes may not always turn out perfectly, but I love trying new recipes and flavors, and sharing food with family and friends.
When I'm not cooking or traveling, these days you can find me getting reacquainted with my piano and learning everything I can about coding clean, elegant sites. I find they are both outlets that keep my mind sharp and creative drive going.


You have reached the home of RSC Swimming Club
The Club was founded in 1949 and has members of all ages
Whatever your ability from beginner to highly trained competiton swimmer we have a squad for you
All squads are trained using friendly ASA Qualified Coaches who would be pleased to discuss your needs
Dive in, splash around and have a look at our website
We look forward to seeing at the pool
Swimming is a great form of all-round exercise.
It's ideal if you want to be more active and stay healthy, whatever your age or ability.
Regular swimming can reduce the risk of chronic illnesses, such as heart disease, type 2 diabetes and stroke. It can also boost your mood and keep your weight under control.
 If you can't swim, it's never too late to learn.
Most pools cater for a variety of tastes and abilities, such as women-only classes, parent and toddler groups, and lessons for different age groups.
This guide is designed to make swimming fun and safe for beginners of all ages, and encourage them to stick with it.
Before you start
Don't worry if you're afraid of the water or panic when you think about the deep end. Beginners' lessons focus on building confidence in the water.
A swimming costume is all you need. Make sure your swimwear is comfortable and fits properly.
If you wish to cover up, most pools allow you to wear whatever swimwear you like, within reason, such as leggings or a close-fitting, long-sleeved T-shirt.
Wearing a pair of goggles is a good idea to avoid the stinging sensation caused by chlorine in the water and to see where you're going under water.
For most people, swimming is a safe and effective form of exercise. If you're worried about an existing health condition, see your GP before you start swimming.
Starting out
The best place to get started is at your local pool. You'll find information on classes for different age groups and levels, women-only sessions, timetables and prices.
To find pools near you, use Find services: sport and fitness or contact your local authority.
Most pools offer adult-only beginners' lessons, which focus on building water confidence and improving your stroke.
If you're unsure about starting lessons, ask if you can watch a class or two to get a better idea if it's for you, or ask to speak with one of the teachers.
A 30-minute session of moderate to vigorous-intensity activity at the pool on one or more days a week will count towards your recommended weekly activity target.
But any improvement on what you currently do is good. Even small changes can make a big difference to your health and make you feel great.
Staying motivated
Make it a habit
Try to set aside time every week to go to the pool, before or after work or on weekends. Write it in a diary so it becomes a permanent fixture in your weekly schedule. Consider getting an annual swim pass. This will help you save money and encourage you to go more often.
Take the kids
Swimming is a great way for families to get moving and have fun together. There are so many things you can do to keep the kids interested, such as humming songs under water.
Swim with a friend
It really helps to go swimming regularly with someone of about the same ability as you. You'll encourage each other when you're not so keen to go to the pool. You'll feel you don't want to let your swimming partner down and this will help motivate you.
Mix it up
The swimming pool makes a great playground and a great gym, even for non-swimmers, with activities such as aquafit. However, learning to swim will introduce you to a whole new world of water-based activities in the pool and beyond.
Join a club
If you enjoy swimming and want to get more involved, consider joining a club. Clubs are a great way to make new friends, improve your swimming and motivate you to exercise regularly. Most clubs have a lively social scene away from the pool, with trips and nights out. Find a swimming club near you.
Open water swimming
For competent swimmers there is a world of swimming opportunities beyond the pool, such as rivers, lakes and the sea. Open water swimming can be great fun so long as you take the necessary safety precautions.
Avoid swimming alone. Plan your swim: check the water temperature, entry and exit points, currents and tides (where relevant), weather conditions and water cleanliness.
For more information, including a wild swim map, visit the Outdoor Swimming Society.
RSC Swimming Club Master   £££


[#include "/theme/default/common/nav.html" /] [#include "/theme/default/common/head.html" /] [#include "/theme/default/common/footer.html" /] [#include "/theme/default/common/page.html" /]
[@head "问答首页" /] [@nav 3 /][#if questions??] [#list questions as item]


Gateway
BOT
17-Oct-19 06:25 AM
[telegram] <Keytothegate> As I see it project is moving forwards nicely. What suggestions do you have to "get it straight"? I am of course speaking about development and would like to hear your ideas where to go from here. Price is only thing that is not following... logically meaning it's undervalued and should be accumated. But if you mean by "get your project straight" that "magically reverse the market conditions and make it pump regardless of development" then I guess it's better to shut up, hold and wait.  What suggestions do you have to "get it straight"? I am of course speaking about development and would like to hear your ideas where to go from here. Price is only thing that is not following... logically meaning it's undervalued and should be accumated. But if you mean by "get your project straight" that "magically reverse the market conditions and make it pump regardless of development" then I guess it's better to shut up, hold and wait.  Rewind the blockchain?
[telegram] <Keytothegate> Yeah and i can recognize a fiat maximalist when i see one.     I am not worrying you asshole.)
[telegram] <Ggokhangark> hahah. Good boy. good try mate.  Good boy. good try mate.     Stupidity is not a crime, so you’re free to go.)
[telegram] <Ggokhangark> haha.  I liked you. But I have no time for now. So, wait here untill I come.


Cadet, your team is in trouble! It's up to you to unlock all the rooms and save your friends kidnapped by Alien invaders! The numbers represent how many alien bombs surround them.
HOSTAGES SAVED: 0


Inserts a text file containing code directly into your Visual Basic module.
Syntax
VBA.INSERT.FILE(filename_text)
Filename_text is the name of a text file that contains Microsoft Visual Basic code that is inserted into the currently active module.
Return to index


LOADING...
X
Home
Documentation
About Us
Our Team
Parth Bhardwaj
Frontend Developer
Parth Wadhwani
Frontend Developer


By now I had finished up all my classes and work at WaaW, and was starting my few short weeks of travel. The night before I was heading out for my Machu Picchu Trek, it was the "cumplemes" of my host mother's neice (she was one month old). My host mom, Maribel made this remarkable cake for the occasion.
The next morning I had to meet at the main city square at 4:45AM, and in classic Peruvian style the pickup was easily 20 minutes late. We drove out to the start point, got our day packs sorted, and we on our way after a quick breakfast. Day one was tiring, but probably because we had to start so early in the morning. Halfway through the day we began on a straight 8km path to the first campsite (left picture). Near the campsite there was a glacier, but I didn't realize that it was about a 45 minute walk up a steep hill to get there. By the time we went to the glacier and came down, then I was beat.
Day two was an early start again. Wake up call was around 5:30 (still dark out), but the guide came by our tents with a hot cup of coca tea so it really wasn't a bad wake up at all. Day two was by far the hardest day. Starting at roughly 3900m, going up to 4600m, and down to 2800m over a 22km hike definitely took a lot of the energy out of everyone. Everyone in our group had varying levels of fitness, which meant there was a lot of waiting for the group to catch up so the whole day took quite a while. When we got to the peak, we knew it was all downhill from there (literally). On the left is myself with Ricard, Bruno, Richard, and Marc. We found out there was a second glacier off the beaten path, but it was only about a ten minute walk so a few of us headed over there, and the teal colour of the water was incredible!
After walking downhill for quite a while with Bruno and Richard (two English guys), we saw the Spaniards in their underwear getting in a river. At 4400m we ended up going for a dip in absolutely freezing cold water. We finished up and headed down for lunch and the view was astounding. The picture below on the right was taken from our lunch table.
Day two was another night spent at a camp, but at this point the big bulk of the hiking was done. Day three was a flat easy walk down to a point where we got picked up and drove to a small town with a hot spring, and zip-lining.  On the night of day three there was a bit of a party at the campsite, as it was our group and several others. They had "Inca Tequila" on sale for 1 sol per shot (40 cents Canadian), along with other drinks. Nothing too crazy went on though, we had booked zip-lining for the next morning.
After zip-lining we took a bus to Hidroelectrica where we got lunch, then took a 10km flat walk to Aguas Calientes, the town you stay in before visiting Machu Picchu. Nothing too special there, really touristy. We grabbed a group dinner then went to bed, because we were meeting at the gates around 5am to go to Machu Picchu for sunrise. We were so disappointed when we got to the top because it was super foggy, but it ended up making it way more memorable. As the sun rose it burned off the clouds, slowly bringing the entire mountain into view. The picture of the little wooden bridge is actually an old Inca Trail, they used to walk across that all the time. Makes my stomach sick just thinking about it. The tressel was on part of the 10km walk from Aguas Calientes, and the valley was looking down from the top of Machu Picchu. The third picture though, is my favourite.  Pretty neat.


On Wednesday, I gave my first talk as a Microsoft employee. I was told that the talk was for a bunch of UK folks that needed to be put on the .NET path and could I do 90 minutes on intro to WinForms in a conference room on campus? I can do intro to WinForms material for hours without preparation, so I didn't do any. Instead, I showed up with my laptop and plugged it into the overhead, where I then spent 10 minutes wrestling to get it out of suspend mode (the world needs faster hard drives!).
While my HD woke up (apparently jet-lagged from the trip between building 5 and building 43), I started warming up the crowd with questions "How many of you are C++ programmers? How many VB programmers?" The room was split pretty evenly between C++ and VB, taking half of my jokes away (I'm happy to make fun of either C++ or VB programmers equally, but it's less fun when only half the room laughs). Plus, these guys were *way* jet lagged, so getting them to even keep their eyes open in the afternoon after they'd arrived was a challenge, let alone getting them to laugh or even engage.
And then, because my HD was still shaking off the dust, I asked "Did you hear anything good today?" Predictable, they said that they'd like the story of web services (Don had been there earlier in the morning) and that caused me to launch into my rendition of how WinForms + Web Services provided a wonderful way to keep all of the UI logic on a single machine, as opposed to web applications, where the UI is split between the client and the server. They weren't biting.
Plus, after diving into some WinForms intro material and having it fall flat (anchoring and docking normally wows 'em), I did a bit of deeper digging into my audience. It turns out that most of them were old hands at WinForms, throwing my planned material right out the window. Luckily, I did find a topic that they're weren't familiar with: href-exes. So, I did my normal href-exe shtick for about 60 minutes, getting them to wake up, ask questions and even laugh a bit at my witty repartee.
Thinking I was in the clear, I opened the floor for questions. Of course, the first question they asked was the same question I'd have asked if I were in their shoes (as I so often was until about a month ago), "What's new in WinForms 2.0?" And that's where things got shaky again. I had some ideas of where WinForms 2.0 was going in the next release of .NET, but nothing concrete (I've been buried in Longhorn and a whole new culture too deep to dig into WinForms futures yet). Plus, even the things that I did know, I had no idea what I could say. Where these guys under NDA? What could I say to them if they were? What can I say to them if they're not? Even if I'm not supposed to say anything, I want them to like me (every speaker's guiding principle) and I wanted to say something besides "I know, but I'm not going to tell you. <bpffffft>!"
So, I stammered out what I knew to be some WinForms desires without making any promises on their behalf and hoping no one would ever know (except my closest friends reading this spout entry : ). It wasn't a happy experience. I should have talked with the WinForms guys before my talk so I knew what I could say about the future. Rookie mistake #1.
Rookie mistake #2: In an effort to stay open to these guys, I wrote my alias on the flipchart and then, while I filled in the domain, kept answering questions. When I looked back at the flipchart, I discovered that I'd written<EMAIL_ADDRESS>Doh! Since it was a flipchart and not a whiteboard, I couldn't even erase it. <sigh>
All in all, I think I got them jazzed about href-exes, but it was definitely not my finest talk. Luckily, it was internal and to a small group; I would have been mortified to have given that performance at a larger venue. Plus, making fun of VB programmers isn't fun anymore. I mean, they're customers, too. Looks like I'm going to need some new material...


-
Abhorrant Archregent [240pts]
Categories: ABHORRANT, ABHORRANT ARCHREGENT, DEATH, FLESH-EATER COURTS, HERO, VAMPIRE, WIZARD, Leader
Command Abilities: Summon Imperial Guard, Magic: Abhorrant Archregent, Spell: Arcane Bolt, Ferocious Hunger, Mystic Shield, Unit: Abhorrant Archregent, Weapon: Gory Talons and Fangs
| Command Abilities |
Command Ability Details |
Ref |
| Summon Imperial Guard |
You can use this command ability at the end of your movement phase. If you do so, pick 1 friendly model that has this command ability and has not used it before in the battle. That model summons 1 of the following units to the battlefield: 1 COURTIER; or 1 unit of up to 3 KNIGHTS; or 1 unit of up to 20 SERFS. The summoned unit is added to your army, and must be set up wholly within 6" of the edge of the battlefield and more than 9" from any enemy units. |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Abhorrant Archregent |
2/2 | Arcane Bolt, Mystic Shield and Ferocious Hunger |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Ferocious Hunger |
6 | If successfully cast, pick 1 friendly FLESH‐EATER COURTS unit wholly within 24" of the caster and visible to them, and roll a D3. Add the roll to the Attacks characteristic of melee weapons used by that unit until your next hero phase. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Abhorrant Archregent |
6 | 7 | 10 | 4 |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Gory Talons and Fangs |
Melee | 1" | 7 | 3+ | 3+ | -1 | 1 |
|
-
Abhorrant Ghoul King on Royal Zombie Dragon [440pts]
Categories: VAMPIRE, MONSTER, HERO, WIZARD, ABHORRANT GHOUL KING, DEATH, FLESH-EATER COURTS, ABHORRANT, ROYAL ZOMBIE DRAGON, Leader, Behemoth
Command Abilities: Summon Royal Courtier, Magic: Abhorrant Ghoul King on Royal Zombie Dragon, Spell: Arcane Bolt, Malefic Hunger, Mystic Shield, Unit: Abhorrant Ghoul King on Royal Zombie Dragon, Unit Abilities: Fly, Pestilential Breath, Royal Blood, Weapon: Gory Talons and Fangs, Pestilential Breath, Snapping Maw, Sword-like Claws, Zombie Dragon's Wound Table: 00-03, 04-06, 07-09, 10-12, 13+
| Command Abilities |
Command Ability Details |
Ref |
| Summon Royal Courtier |
You can use this command ability at the end of your movement phase. If you do so, pick 1 friendly model that has this command ability and has not used it before in the battle. That model summons 1 Courtier unit to the battlefield. The summoned unit is added to your army, and must be set up wholly within 6" of the edge of the battlefield and more than 9" from any enemy units. |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Abhorrant Ghoul King on Royal Zombie Dragon |
1/1 | This model is a Wizard. It can attempt to cast one spell in your hero phase, and attempt to unbind one spell in the enemy hero phase. It knows the Arcane Bolt, Mystic Shield and Malefic Hunger spells. |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Malefic Hunger |
6 | If successfully cast, until your next hero phase you can re-roll wound rolls for attacks made with melee weapons by friendly Flesh‐eater Courts units wholly within 16" of the caster. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Abhorrant Ghoul King on Royal Zombie Dragon |
* | 14 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Fly |
This unit can fly. |
|
| Pestilential Breath |
When you attack with this model’s Pestilential Breath, roll a dice before making the hit roll for the attack. If the roll is less than or equal to the number of models in the target unit, the attack scores a hit without needing to make a hit roll. |
|
| Royal Blood |
In your hero phase, you can heal up to D3 wounds allocated to this model. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Gory Talons and Fangs |
Melee | 1" | 5 | 3+ | 3+ | -1 | 1 |
|
| Pestilential Breath |
Missile | 9" | 1 | 3+ | * | -3 | D6 |
|
| Snapping Maw |
Melee | 3" | 3 | 4+ | 3+ | -2 | D6 |
|
| Sword-like Claws |
Melee | 2" | * | 4+ | 3+ | -1 | 2 |
|
| Zombie Dragon's Wound Table |
Move | Pestilential Breath | Sword-like Claws |
Ref |
| 00-03 |
14" | 2+ | 7 |
|
| 04-06 |
12" | 3+ | 6 |
|
| 07-09 |
10" | 4+ | 5 |
|
| 10-12 |
8" | 5+ | 4 |
|
| 13+ |
6" | 6+ | 3 |
|
-
Crypt Haunter Courtier [120pts]
Categories: MORDANT, HERO, COURTIER, CRYPT HAUNTER COURTIER, DEATH, FLESH-EATER COURTS, Leader
Unit: Crypt Haunter Courtier, Unit Abilities: Chosen of the King, Muster King's Chosen, Noble Blood, Weapon: Massive Bone Club, Rancid Talons
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Crypt Haunter Courtier |
7" | 6 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Chosen of the King |
You can re-roll hit rolls for attacks made by this model while it is within 18" of any friendly ABHORRANTS. |
|
| Muster King's Chosen |
In your hero phase, roll 6 dice for each friendly CRYPT HAUNTER COURTIER on the battlefield. For each 5+ you can return 1 slain model to a friendly CRYPT HORRORS unit that is within 10" of that CRYPT HAUNTER COURTIER. Slain models can be returned to more than one unit if you wish, but each successful dice roll can only be used to return a model to a single unit. |
|
| Noble Blood |
In your hero phase, you can heal 1 wound allocated to this model. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Massive Bone Club |
Melee | 1" | 3 | 4+ | 3+ | - | 3 |
|
| Rancid Talons |
Melee | 1" | 2 | 4+ | 3+ | - | 1 |
|
-
Dreadblade Harrow [90pts]
Categories: DEATH, MALIGNANT, NIGHTHAUNT, HERO, DREADBLADE HARROW, Leader
Unit: Dreadblade Harrow, Unit Abilities: Curse of Loyalty, Ethereal, Fly, Phantasmal Discorporation, Weapon: Dreadblade
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Dreadblade Harrow |
- | - | - | - |
|
| Unit Abilities |
Ability Details |
Ref |
| Curse of Loyalty |
Re-roll wound rolls of 1 for attacks made with this model's Dreadblade while it is within 9" of a friendly KNIGHT OF SHROUDS. |
|
| Ethereal |
Ignore modifiers (positive or negative) when making save rolls for this unit. |
|
| Fly |
This unit can fly. |
|
| Phantasmal Discorporation |
If this model is more than 3" from any enemy models at the start of your movement phase, instead of making a normal move, you an remove it from the battlefield and then set it up anywhere on the battlefield more than 9" from any enemy models. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Dreadblade |
Melee | 1" | 3 | 3+ | 3+ | -1 | 1 |
|
| Ghostly Hooves and Teeth |
Melee | 1" | 2 | 4+ | 5+ | - | 1 |
|
-
Kurdoss Valentian, the Craven King [200pts]
Categories: DEATH, MALIGNANT, NIGHTHAUNT, HERO, KURDOSS VALENTIAN, Leader
Unit: Kurdoss Valentian, the Craven King, Unit Abilities: Ethereal, Fly, If I Cannot Rule, None Shall Rule!, Soul-crushing Smite, Suffer No Rival, Weapon: Sepulchral Sceptre
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Kurdoss Valentian, the Craven King |
6" | 7 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Ethereal |
Ignore modifiers (positive or negative) when making save rolls for this unit. |
|
| Fly |
This unit can fly. |
|
| Frightful Touch |
If the unmodified roll for an attack made with the <Banshee Mandmaidens' Spectral Claws>, <Wraith Herald's Spectral Claws>, <Fellreaper>, <Reaper Scythe> <Chill Dagger> <Spectral Scythe> <Cairn Wraith's Reaper Scythe> <Spectral Claws and Daggers> <Spectral Host's Ethereal Weapons>, <Mourngul's Nightmarish Claws and Fangs> is 6, that attack inflicts <the weapon damage as a> mortal wound and the attack sequence ends (do not make a wound or save roll). |
|
| If I Cannot Rule, None Shall Rule! |
At the start of the enemy hero phase, after the opposing player receives their comand point for that turn, roll a dice. On a 5+, subtract 1 from the enemy player's command points, to a minimum of 0, and you receive 1 command point. |
|
| Soul-crushing Smite |
If the unmodified wound roll for an attack made with the Sepulchral Sceptre is 6, that attack has a Damage Characteristic of D6 instead of D3. |
|
| Suffer No Rival |
You can re-roll failed hit rolls for attacks made with the Sepulchral Sceptre if the target is an enemy general. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Sepulchral Sceptre |
Melee | 1" | 5 | 3+ | 3+ | -2 | D3 |
|
| Wraith Herald's Spectral Claws |
Melee | 1" | 6 | 4+ | 4+ | - | 1 |
|
-
Lady Olynder, Mortarch of Grief [220pts]
Categories: DEATH, MALIGNANT, NIGHTHAUNT, HERO, WIZARD, MORTARCH, LADY OLYNDER, Leader
Command Abilities: No Rest for the Wicked, Magic: Lady Olynder, Mortarch of Grief, Spell: Arcane Bolt, Grief-stricken, Mystic Shield, Unit: Lady Olynder, Mortarch of Grief, Unit Abilities: Ethereal, Fly, Grave-sands of Time, Lifting the Veil (ROLL D6), Mortarch of Grief, Wail of the Damned, Weapon: Staff of Midnight
| Command Abilities |
Command Ability Details |
Ref |
| No Rest for the Wicked |
You can use this command ability in your hero phase if this model is your general and is on the battlefield. If you do so, you can return 1 slain model to each friendly SUMMONABLE NIGHTHAUNT unit that is within 12" of a friendly model with this command ability. |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Lady Olynder, Mortarch of Grief |
2/2 | Arcane Bolt, Mystic Shield, Grief-stricken |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Grief-stricken |
7 | If successfully cast, pick an enemy unit that is within 18" of the caster and visible to them. Until your next hero phase, subtract 1 from hit rolls for attacks made by that unit and add 1 to hit rolls for attacks made with melee weapons that target that unit. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Lady Olynder, Mortarch of Grief |
6" | 7 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Ethereal |
Ignore modifiers (positive or negative) when making save rolls for this unit. |
|
| Fly |
This unit can fly. |
|
| Frightful Touch |
If the unmodified roll for an attack made with the <Banshee Mandmaidens' Spectral Claws>, <Wraith Herald's Spectral Claws>, <Fellreaper>, <Reaper Scythe> <Chill Dagger> <Spectral Scythe> <Cairn Wraith's Reaper Scythe> <Spectral Claws and Daggers> <Spectral Host's Ethereal Weapons>, <Mourngul's Nightmarish Claws and Fangs> is 6, that attack inflicts <the weapon damage as a> mortal wound and the attack sequence ends (do not make a wound or save roll). |
|
| Grave-sands of Time |
Once per battle, in your pero phase, you can choose either to inflict D6 mortal sounds on an enemy HERO within 6" of this model, or heal D6 wounds that have been allocated to this model. |
|
| Lifting the Veil (ROLL D6) |
At the start of your hero phase, pick an enemy unit within 12" of this model and that is visible to her and roll a dice. On a 1, nothing happens. On a 2+ that unit suffers a number of mortal wounds equal to the roll. Inaddition, if any enemy models are slain by this ability, immediately heal D3 wounds that have been allocated to this model. |
|
| Mortarch of Grief |
Add 1 to the number of models that flee from enemy units that fail a battleshock test while they are within 12" of this model. |
|
| Wail of the Damned |
At the start of your shooting phase, roll 2D6 for each enemy unit within 10" of this model. If the roll for the unit is higher than its Bravery characteristic, it suffers D3 mortal wounds. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Banshee Handmaidens Spectral Claws |
Melee | 1" | 6 | 4+ | 4+ | - | 1 |
|
| Staff of Midnight |
Melee | 2" | 3 | 3+ | 3+ | -2 | D3 |
|
-
Lord Executioner [80pts]
Categories: DEATH, MALIGNANT, NIGHTHAUNT, HERO, LORD EXECUTIONER, Leader
Unit: Lord Executioner, Unit Abilities: Beheading Strike, Disembodied Skulls, Ethereal, Fly, Staring Death in the Face, Weapon: Decapitating Greataxe
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Lord Executioner |
6" | 5 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Beheading Strike |
If a wound roll for a Decapitating Greataxe is 6+, add 2 to the Damage characteristic of the weapon for that attack. |
|
| Disembodied Skulls |
Roll a D6 each time this models suffers a mortal wound. on a 5+, the wound is negated. |
|
| Ethereal |
Ignore modifiers (positive or negative) when making save rolls for this unit. |
|
| Fly |
This unit can fly. |
|
| Staring Death in the Face |
At the start of the combat phase, you can pick an enemy HERO within 3" of this model. Subtract 1 from hit rolls for attacks made by that HERO in that combat phase. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Decapitating Greataxe |
Melee | 2" | 3 | 3+ | 3+ | -2 | 1 |
|
-
Mannfred, Mortarch of Night [380pts]
Categories: DEATH, VAMPIRE, DEATHLORDS, MONSTER, HERO, WIZARD, MORTARCH, MANNFRED, SOULBLIGHT, Leader, Behemoth
Command Abilities: Vigour of Uneath, Magic: Mannfred, Mannfred's Wounds Suffered: 0-2, 3-4, 5-6, 7-8, 9+, Spell: Arcane Bolt, Mystic Shield, Wind of Death, Unit: Mannfred, Mortarch of Night, Unit Abilities: Armour of Templehof, Deathly Invocation, Feaster of Souls, Fly, Frightful Touch, Mortarch of Night, Sword of Unholy Power, Weapon: Ashigaroth's Ebon Claws, Gheistvor, Sickle-glaive, Spirits' Spectral Claws and Daggers
| Command Abilities |
Command Ability Details |
Ref |
| Vigour of Uneath |
If Mannfred uses this ability, then until your next hero phase you can re-roll hit and wound rolls of 1 for friendly DEATH units that are within the range shown on the damage table. |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Mannfred |
2/2 | Mannfred is a WIZARD. He can attempt to cast two spells in your hero phase, and attempt to unbind two spells in the enemy hero phase. He knows the Arcane Bolt, Mystic Shield and Wind of Death spells. |
|
| Mannfred's Wounds Suffered |
Move | Ebon Claws | Vigour of Undeath |
Ref |
| 0-2 |
16" | 6 | 15" |
|
| 3-4 |
13" | 5 | 12" |
|
| 5-6 |
10" | 4 | 9" |
|
| 7-8 |
7" | 3 | 6" |
|
| 9+ |
4" | 2 | 3" |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Wind of Death |
7 | If successfully cast, pick an enemy model within 18" of the caster that is visible to them. Each enemy unit within 6" of that model suffers 1 mortal wound, while the model’s own unit suffers D3 mortal wounds. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Mannfred, Mortarch of Night |
* | 11 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Armour of Templehof |
The first wound or mortal wound allocated to Mannfred each turn is negated. |
|
| Deathly Invocation |
At the start of your hero phase, pick up to 4 different friendly SUMMONABLE units within 18" of Mannfred. You can heal D3 wounds that have been allocated to each unit you picked (roll separately for each unit). If no wounds are currently allocated to a unit you picked, you may instead return a number of slain models to it that have a combined Wounds characteristic equal to or less than the roll of a D3. |
|
| Feaster of Souls |
At the end of any combat phase in which Mannfred slew any models, you can heal 2 wounds that have been allocated to him. |
|
| Fly |
This unit can fly. |
|
| Frightful Touch |
If the unmodified roll for an attack made with the <Banshee Mandmaidens' Spectral Claws>, <Wraith Herald's Spectral Claws>, <Fellreaper>, <Reaper Scythe> <Chill Dagger> <Spectral Scythe> <Cairn Wraith's Reaper Scythe> <Spectral Claws and Daggers> <Spectral Host's Ethereal Weapons>, <Mourngul's Nightmarish Claws and Fangs> is 6, that attack inflicts <the weapon damage as a> mortal wound and the attack sequence ends (do not make a wound or save roll). |
|
| Mortarch of Night |
If Mannfred successfully cast any spells during your hero phase, you can add 1 to all hit and wound rolls for Gheistvor until your next hero phase. |
|
| Sword of Unholy Power |
If Mannfred causes any wounds to be allocated using Gheistvor in the combat phase, you can add 1 to the next casting or unbinding roll you make for Mannfred. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Ashigaroth's Ebon Claws |
Melee | 1" | * | 4+ | 3+ | -2 | 2 |
|
| Gheistvor |
Melee | 1" | 4 | 3+ | 3+ | -1 | D3 |
|
| Sickle-glaive |
Melee | 2" | 2 | 3+ | 3+ | -1 | 2 |
|
| Spirits' Spectral Claws and Daggers |
Melee | 1" | 6 | 5+ | 4+ | - | 1 |
|
-
Nagash, Supreme Lord of the Undead [850pts]
Categories: DEATH, HERO, NAGASH, PRIEST, WIZARD, DEATHLORDS, MONSTER, Leader, Behemoth
Command Abilities: Supreme Lord of Death, Magic: Nagash, Nagash's Wounds Suffered: 00-03, 04-06, 07-10, 11-13, 14+, Spell: Hand of Dust, Soul Stealer, Unit: Nagash, Supreme Lord of the Undead, Unit Abilities: Death Magic Incarnate, Deathly Invocation, Fly, Frightful Touch, Morikane, The Nine Books of Nagash, The Staff of Power, Weapon: Alakanash, Gaze of Nagash, Spirits' Spectral Claws and Daggers, Zeft-nebtar
| Command Abilities |
Command Ability Details |
Ref |
| Supreme Lord of Death |
If Nagash uses this ability, then until your next hero phase you can re-roll hit and save rolls of 1 for all friendly DEATH units. In addition, do not take battleshock tests for DEATH units affected by this ability. |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Nagash |
3/3 * | Arcane Bolt, Mystic Shield, Hand of Dust and Soul Stealer spells, as well as any spells known by other DEATH WIZARDS on the battlefield |
|
| Nagash's Wounds Suffered |
The Nine Books of Nagash | Zefet-nebtar | Alakanash |
Ref |
| 00-03 |
Cast and unbind 5 extra spells | 6 | 3+ cast / 3+ unbind |
|
| 04-06 |
Cast and unbind 4 extra spells | 5 | +3 cast / +2 unbind |
|
| 07-10 |
Cast and unbind 3 extra spells | 4 | +2 cast / +2 unbind |
|
| 11-13 |
Cast and unbind 2 extra spells | 3 | +2 cast / +1 unbind |
|
| 14+ |
Cast and unbind 1 extra spell | 2 | +1 cast / +1 unbind |
|
| Spell |
Casting Value | Description |
Ref |
| Hand of Dust |
8 | If successfully cast, pick an enemy model within 3" the caster. Then, take a dice and hide it in one of your hands. Your opponent must pick one of your hands. If they pick the one holding the dice, the spell has no effect. If they pick the empty hand, the enemy model is slain. |
|
| Soul Stealer |
6 | If successfully cast, pick an enemy unit within 24" of the caster that is visible to them and roll two dice. If the total is greater than that unit’s Bravery characteristic, it suffers D3 mortal wounds. If the total is at least double the unit’s Bravery, it suffers D6 mortal wounds instead. For each mortal wound inflicted on the target, heal 1 wound that has been allocated to the caster. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Nagash, Supreme Lord of the Undead |
9" | 16 | 10 | 3+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Death Magic Incarnate |
You can re-roll any of the D3 rolls when using Nagash’s Deathly Invocation ability (above). |
|
| Deathly Invocation |
At the start of your hero phase, pick up to 5 different friendly SUMMONABLE units on the battlefield. You can heal D3 wounds that have been allocated to each unit you picked (roll separately for each unit). If no wounds are currently allocated to a unit you picked, you may instead return a number of slain models to it that have a combined Wounds characteristic equal to or less than the roll of a D3. |
|
| Fly |
This unit can fly. |
|
| Frightful Touch |
If the unmodified roll for an attack made with the <Banshee Mandmaidens' Spectral Claws>, <Wraith Herald's Spectral Claws>, <Fellreaper>, <Reaper Scythe> <Chill Dagger> <Spectral Scythe> <Cairn Wraith's Reaper Scythe> <Spectral Claws and Daggers> <Spectral Host's Ethereal Weapons>, <Mourngul's Nightmarish Claws and Fangs> is 6, that attack inflicts <the weapon damage as a> mortal wound and the attack sequence ends (do not make a wound or save roll). |
|
| Morikane |
Each time a mortal wound is allocated to Nagash, roll a dice. On a 4+ the mortal wound is negated. On a 6+ the attacking unit also suffers a mortal wound. |
|
| The Nine Books of Nagash |
The Nine Books of Nagash allow him to cast extra spells in your hero phase, and unbind extra spells in the enemy hero phase. The number of extra spells he can attempt to cast or unbind is shown on the damage table above. |
|
| The Staff of Power |
Add Alakanash’s modifier (listed in the damage table) to casting and unbinding rolls for Nagash. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Alakanash |
Melee | 3" | 1 | 3+ | 2+ | -3 | D6 |
|
| Gaze of Nagash |
Missile | 12" | 1 | 3+ | 2+ | -1 | D6 |
|
| Spirits' Spectral Claws and Daggers |
Melee | 1" | 6 | 5+ | 4+ | - | 1 |
|
| Zeft-nebtar |
Melee | 2" | * | 3+ | 3+ | -2 | 3 |
|
-
Necromancer [130pts]
Categories: DEATH, DEATHMAGES, HERO, NECROMANCER, WIZARD, Leader
Magic: Necromancer, Spell: Arcane Bolt, Mystic Shield, Vanhel's Danse Macabre, Unit: Necromancer, Unit Abilities: Deathly Invocation, Undead Minions, Weapon: Necromancer's Staff
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Necromancer |
1/1 | Arcane Bolt, Mystic Shield and Vanhel’s Danse Macabre spells |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Vanhel's Danse Macabre |
6 | If successfully cast, pick a friendly SUMMONABLE unit within 18" of the caster. That unit can be chosen to pile in and attack twice in your next combat phase. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Necromancer |
5" | 5 | 10 | 6+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Deathly Invocation |
At the start of your hero phase, pick up to 2 different friendly SUMMONABLE units within 6" of this model. You can heal D3 wounds that have been allocated to each unit you picked (roll separately for each unit). If no wounds are currently allocated to a unit you have picked, you may instead return a number of slain models to it that have a combined Wounds characteristic equal to or less than the roll of a D3. |
|
| Undead Minions |
Before you allocate a wound or mortal wound to this model, you can pick a friendly SUMMONABLE unit within 3" of this model and roll a dice. On a 4+ the wound or mortal wound is allocated to that unit instead. *ERRATA Jun'18* |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Necromancer's Staff |
Melee | 2" | 1 | 4+ | 3+ | -1 | D3 |
|
-
Neferata, Mortarch of Blood [380pts]
Categories: DEATH, VAMPIRE, DEATHLORDS, MONSTER, HERO, WIZARD, MORTARCH, NEFERATA, SOULBLIGHT, Leader, Behemoth
Command Abilities: Twilight's Allure, Magic: Neferata, Neferata's Wounds Suffered: 0-2, 3-4, 5-6, 7-8, 9+, Spell: Arcane Bolt, Dark Mist, Mystic Shield, Unit: Neferata, Mortarch of Blood, Unit Abilities: Dagger of Jet, Deathly Invocation, Fly, Frightful Touch, Mortarch of Blood, Weapon: Aken-seth, Akmet-har, Spirits' Spectral Claws and Daggers
| Command Abilities |
Command Ability Details |
Ref |
| Twilight's Allure |
If Neferata uses this ability, then until your next hero phase subtract 1 from hit rolls for enemy units that are within the range shown on the damage table. |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Neferata |
2/2 | Neferata is a WIZARD. She can attempt to cast two spells in your hero phase, and attempt to unbind two spells in the enemy hero phase. She knows the Arcane Bolt, Mystic Shield and Dark Mist spells. |
|
| Neferata's Wounds Suffered |
Move | Ebon Claws | Twilight's Allure |
Ref |
| 0-2 |
16" | 6 | 15" |
|
| 3-4 |
13" | 5 | 12" |
|
| 5-6 |
10" | 4 | 9" |
|
| 7-8 |
7" | 3 | 6" |
|
| 9+ |
4" | 2 | 3" |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Dark Mist |
6 | If successfully cast, pick a friendly DEATH unit within 18" of the caster. Until your next hero phase, that unit can fly and you must ignore modifiers (positive or negative) when making save rolls for the unit. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Neferata, Mortarch of Blood |
* | 11 | 10 | 4+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Dagger of Jet |
If a model is allocated any wounds from attacks made using Akmet-har but is not slain, roll a dice after Neferata has finished making all of her attacks. On a 6+ that model is slain. |
|
| Deathly Invocation |
At the start of your hero phase, pick up to 4 different friendly SUMMONABLE units within 18" of Neferata. You can heal D3 wounds that have been allocated to each unit you picked (roll separately for each unit). If no wounds are currently allocated to a unit you have picked, you may instead return a number of slain models to it that have a combined Wounds characteristic equal to or less than the roll of a D3. |
|
| Fly |
This unit can fly. |
|
| Frightful Touch |
If the unmodified roll for an attack made with the <Banshee Mandmaidens' Spectral Claws>, <Wraith Herald's Spectral Claws>, <Fellreaper>, <Reaper Scythe> <Chill Dagger> <Spectral Scythe> <Cairn Wraith's Reaper Scythe> <Spectral Claws and Daggers> <Spectral Host's Ethereal Weapons>, <Mourngul's Nightmarish Claws and Fangs> is 6, that attack inflicts <the weapon damage as a> mortal wound and the attack sequence ends (do not make a wound or save roll). |
|
| Mortarch of Blood |
At the end of any combat phase in which Neferata slew any models, you can heal 2 wounds that have been allocated to her. If Neferata slew any enemy HERO models this turn, you may heal 1 additional wound allocated to her. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Aken-seth |
Melee | 1" | 2 | 2+ | 3+ | -2 | 2 |
|
| Akmet-har |
Melee | 1" | 5 | 2+ | 3+ | -1 | 1 |
|
| Spirits' Spectral Claws and Daggers |
Melee | 1" | 6 | 5+ | 4+ | - | 1 |
|
-
Prince Vhordrai [480pts]
Categories: DEATH, VAMPIRE, ZOMBIE DRAGON, MONSTER, HERO, WIZARD, PRINCE VHORDRAI, SOULBLIGHT, Leader, Behemoth
Command Abilities: Fist of Nagash, Magic: Prince Vhordrai, Spell: Arcane Bolt, Mystic Shield, Quickblood, Unit: Prince Vhordrai, Unit Abilities: Bloodlance Charge, Breath of Shyish, Chalice of Blood, Deathly Invocation, Fly, The Hunger, Vhordrai's Wounds Suffered: 00-03, 04-06, 07-09, 10-12, 13+, Weapon: Bloodlance, Shordemaire's Maw, Shordemaire's Sword-like Claws
| Command Abilities |
Command Ability Details |
Ref |
| Fist of Nagash |
If Prince Vhordrai uses this ability, pick a friendly DEATH HEROwithin 14" of him (you cannot choose Prince Vhordrai). That hero can immediately either be chosen to pile in and attack as if it were the combat phase, or if it is a WIZARD, attempt to cast a spell in addition to any others they can attempt to cast this phase. The same unit cannot be picked to benefit from this command ability more than once per hero phase. *ERRATA Jun'18* |
|
| Magic |
Cast/Unbind | Spells Known |
Ref |
| Prince Vhordrai |
1/1 | Prince Vhordrai is a WIZARD. He can attempt to cast one spell in your hero phase, and attempt to unbind one spell in the enemy hero phase. He knows the Arcane Bolt, Mystic Shield and Quickblood spells. |
|
| Spell |
Casting Value | Description |
Ref |
| Arcane Bolt |
5 | If successfully cast, pick an enemy unit within 18" of the caster that is visible to them. That unit suffers 1 mortal wound. If the casting roll was 10 or more, the unit suffers D3 mortal wounds instead. |
|
| Mystic Shield |
6 | If successfully cast, pick a friendly unit within 18" of the caster that is visible to them. Re-roll save rolls of 1 for that unit until your next hero phase. |
|
| Quickblood |
7 | If successfully cast, add 1 to hit and wound rolls for the caster until your next hero phase. |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Prince Vhordrai |
* | 14 | 10 | 3+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Bloodlance Charge |
If Prince Vhordrai completed a charge this turn, increase the Damage characteristic of his Bloodlance to 3. |
|
| Breath of Shyish |
'At the start of your shooting phase, pick an enemy unit within 8" of this model that is visible to it.' *FAQ v1.3* Then roll a dice, adding 1 to the result if this model slew any enemy models in the previous combat phase. On a 3+ that unit suffers a number of mortal wounds as shown on the damage table above. |
|
| Chalice of Blood |
Once per battle, in your hero phase, you can heal D6 wounds that have been allocated to Prince Vhordrai. |
|
| Deathly Invocation |
At the start of your hero phase, pick up to 3 different friendly SUMMONABLEunits within 12" of this model. You can heal D3 wounds that have been allocated to each unit you picked (roll separately for each unit). If no wounds are currently allocated to a unit you have picked, you may instead return a number of slain models to it that have a combined Wounds characteristic equal to or less than the roll of a D3. |
|
| Fly |
This unit can fly. |
|
| The Hunger |
At the end of any combat phase in which Prince Vhordrai slew any enemy models, you can heal 1 wound that has been allocated to him. |
|
| Vhordrai's Wounds Suffered |
Move | Breath of Shyish | Sword-like Claws |
Ref |
| 00-03 |
14" | 6 | 7 |
|
| 04-06 |
12" | D6 | 6 |
|
| 07-09 |
10" | 3 | 5 |
|
| 10-12 |
8" | D3 | 4 |
|
| 13+ |
6" | 1 | 3 |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Bloodlance |
Melee | 2" | 4 | 3+ | 3+ | -2 | 2 |
|
| Shordemaire's Maw |
Melee | 3" | 3 | 4+ | 3+ | -2 | D6 |
|
| Shordemaire's Sword-like Claws |
Melee | 2" | * | 4+ | 3+ | -1 | 2 |
|
-
Wight King with Baleful Tomb Blade [120pts]
Categories: DEATH, SKELETON, DEATHRATTLE, HERO, WIGHT KING, Leader
Command Abilities: Lord of Bones, Unit: Wight King with Baleful Tomb Blade, Unit Abilities: Beheading Strike, Deathly Invocation, Weapon: Baleful Tomb Blade
| Command Abilities |
Command Ability Details |
Ref |
| Lord of Bones |
If this model uses this ability, pick a friendly DEATHRATTLE unit within 18" of it. Until your next hero phase, add 1 to the Attacks characteristic of that unit’s melee weapons. You cannot pick the same unit to benefit from this command ability more than once per hero phase. *Errata Jul'18* |
|
| Unit |
Move | Wounds | Bravery | Save |
Ref |
| Wight King with Baleful Tomb Blade |
4" | 5 | 10 | 3+ |
|
| Unit Abilities |
Ability Details |
Ref |
| Beheading Strike |
If the wound roll for an attack made with a Baleful Tomb Blade is 6+, that attack has a Damage characteristic of D3. |
|
| Deathly Invocation |
At the start of your hero phase, pick up to 2 different friendly SUMMONABLE units within 6" of this model. You can heal D3 wounds that have been allocated to each unit you picked (roll separately for each unit). If no wounds are currently allocated to a unit you have picked, you may instead return a number of slain models to it that have a combined Wounds characteristic equal to or less than the roll of a D3. |
|
| Weapon |
Type | Range | Attacks | To Hit | To Wound | Rend | Damage |
Ref |
| Baleful Tomb Blade |
Melee | 1" | 4 | 3+ | 3+ | -1 | 1 |
|


CS61B Spring 2016-Data StructuresThis are a series of guides related to CS61B/CS61BL. Some of these come from the mini-lectures that I have done in discussion, others are things I just write on the fly. I am always looking for feedback, so please contact me if you have any advice, comments, concerns, etc. on these guides. Table of Contents |


--- layout: page title: About Us ---
If you ask any developer about what they think about working at Headspring, you're going to get a wide variety of different kinds of praise for the company. Headspring's CEO, Dustin Wells, wants to make sure that he is creating the best place to work in Austin as well as Texas. This isn't just a pie in the sky dream either, we have the awards to back this up.


This calorie app use Original Harris-Benedict Equation to
calculate the BRM (Basal Metabolic Rate). Then it applies
Harris-Benedict Principle for physical activity level to output the
number of calorie needed by an individual daily.
Please provide all the information to count your daily calorie intake


DS.ActiveModelAdapter Class
The ActiveModelAdapter is a subclass of the RESTAdapter designed to integrate
with a JSON API that uses an underscored naming convention instead of camelCasing.
It has been designed to work out of the box with the
active_model_serializers
Ruby gem. This Adapter expects specific settings using ActiveModel::Serializers,
embed :ids, embed_in_root: true
which sideloads the records.
This adapter extends the DS.RESTAdapter by making consistent use of the camelization, decamelization and pluralization methods to normalize the serialized JSON into a format that is compatible with a conventional Rails backend and Ember Data.
JSON Structure
The ActiveModelAdapter expects the JSON returned from your server to follow the REST adapter conventions substituting underscored keys for camelcased ones.
Unlike the DS.RESTAdapter, async relationship keys must be the singular form of the relationship name, followed by "_id" for DS.belongsTo relationships, or "_ids" for DS.hasMany relationships.
Conventional Names
Attribute names in your JSON payload should be the underscored versions of the attributes in your Ember.js models.
For example, if you have a Person
model:
App.FamousPerson = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
occupation: DS.attr('string')
});
The JSON returned should look like this:
{
"famous_person": {
"id": 1,
"first_name": "Barack",
"last_name": "Obama",
"occupation": "President"
}
}
Let's imagine that Occupation
is just another model:
App.Person = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
occupation: DS.belongsTo('occupation')
});
App.Occupation = DS.Model.extend({
name: DS.attr('string'),
salary: DS.attr('number'),
people: DS.hasMany('person')
});
The JSON needed to avoid extra server calls, should look like this:
{
"people": [{
"id": 1,
"first_name": "Barack",
"last_name": "Obama",
"occupation_id": 1
}],
"occupations": [{
"id": 1,
"name": "President",
"salary": 100000,
"person_ids": [1]
}]
}
Constructor
DS.ActiveModelAdapter
()
Item Index
Methods
Properties
Methods
ajax
-
url
-
type
-
hash
Takes a URL, an HTTP method and a hash of data, and makes an HTTP request.
When the server responds with a payload, Ember Data will call into extractSingle
or extractArray
(depending on whether the original query was for one record or
many records).
By default, ajax
method has the following behavior:
- It sets the response
dataType
to"json"
- If the HTTP method is not
"GET"
, it sets theContent-Type
to beapplication/json; charset=utf-8
- If the HTTP method is not
"GET"
, it stringifies the data passed in. The data is the serialized record in the case of a save. - Registers success and failure handlers.
Parameters:
-
url
String -
type
StringThe request type GET, POST, PUT, DELETE etc.
-
hash
Object
Returns:
promise
ajaxError
-
jqXHR
The ActiveModelAdapter overrides the ajaxError
method
to return a DS.InvalidError for all 422 Unprocessable Entity
responses.
A 422 HTTP response from the server generally implies that the request was well formed but the API was unable to process it because the content was not semantically correct or meaningful per the API.
For more information on 422 HTTP Error code see 11.2 WebDAV RFC 4918 https://tools.ietf.org/html/rfc4918#section-11.2
Parameters:
-
jqXHR
Object
Returns:
error
ajaxOptions
-
url
-
type
-
hash
Parameters:
-
url
String -
type
StringThe request type GET, POST, PUT, DELETE etc.
-
hash
Object
Returns:
hash
ajaxSuccess
-
jqXHR
-
jsonPayload
Takes an ajax response, and returns the json payload.
By default this hook just returns the jsonPayload passed to it. You might want to override it in two cases:
- Your API might return useful results in the request headers. If you need to access these, you can override this hook to copy them from jqXHR to the payload object so they can be processed in you serializer.
- Your API might return errors as successful responses with status code 200 and an Errors text or object. You can return a DS.InvalidError from this hook and it will automatically reject the promise and put your record into the invalid state.
Parameters:
-
jqXHR
Object -
jsonPayload
Object
Returns:
jqXHR
buildURL
-
type
-
id
-
record
Builds a URL for a given type and optional ID.
By default, it pluralizes the type's name (for example, 'post' becomes 'posts' and 'person' becomes 'people'). To override the pluralization see pathForType.
If an ID is specified, it adds the ID to the path generated
for the type, separated by a /
.
Parameters:
-
type
String -
id
String -
record
DS.Model
Returns:
url
createRecord
-
store
-
type
-
record
Called by the store when a newly created record is
saved via the save
method on a model record instance.
The createRecord
method serializes the record and makes an Ajax (HTTP POST) request
to a URL computed by buildURL
.
See serialize
for information on how to customize the serialized form
of a record.
Returns:
promise
deleteRecord
-
store
-
type
-
record
Called by the store when a record is deleted.
The deleteRecord
method makes an Ajax (HTTP DELETE) request to a URL computed by buildURL
.
Returns:
promise
find
-
store
-
type
-
id
-
record
Called by the store in order to fetch the JSON for a given type and ID.
The find
method makes an Ajax request to a URL computed by buildURL
, and returns a
promise for the resulting payload.
This method performs an HTTP GET
request with the id provided as part of the query string.
Returns:
promise
findAll
-
store
-
type
-
sinceToken
Called by the store in order to fetch a JSON array for all of the records for a given type.
The findAll
method makes an Ajax (HTTP GET) request to a URL computed by buildURL
, and returns a
promise for the resulting payload.
Parameters:
-
store
DS.Store -
type
subclass of DS.Model -
sinceToken
String
Returns:
promise
findBelongsTo
-
store
-
record
-
url
Called by the store in order to fetch a JSON array for
the unloaded records in a belongs-to relationship that were originally
specified as a URL (inside of links
).
For example, if your original payload looks like this:
{
"person": {
"id": 1,
"name": "Tom Dale",
"links": { "group": "/people/1/group" }
}
}
This method will be called with the parent record and /people/1/group
.
The findBelongsTo
method will make an Ajax (HTTP GET) request to the originally specified URL.
Returns:
promise
findHasMany
-
store
-
record
-
url
Called by the store in order to fetch a JSON array for
the unloaded records in a has-many relationship that were originally
specified as a URL (inside of links
).
For example, if your original payload looks like this:
{
"post": {
"id": 1,
"title": "Rails is omakase",
"links": { "comments": "/posts/1/comments" }
}
}
This method will be called with the parent record and /posts/1/comments
.
The findHasMany
method will make an Ajax (HTTP GET) request to the originally specified URL.
If the URL is host-relative (starting with a single slash), the
request will use the host specified on the adapter (if any).
Returns:
promise
findMany
-
store
-
type
-
ids
-
records
Called by the store in order to fetch several records together if coalesceFindRequests
is true
For example, if the original payload looks like:
{
"id": 1,
"title": "Rails is omakase",
"comments": [ 1, 2, 3 ]
}
The IDs will be passed as a URL-encoded Array of IDs, in this form:
ids[]=1&ids[]=2&ids[]=3
Many servers, such as Rails and PHP, will automatically convert this URL-encoded array into an Array for you on the server-side. If you want to encode the IDs, differently, just override this (one-line) method.
The findMany
method makes an Ajax (HTTP GET) request to a URL computed by buildURL
, and returns a
promise for the resulting payload.
Parameters:
-
store
DS.Store -
type
subclass of DS.Model -
ids
Array -
records
Array
Returns:
promise
findQuery
-
store
-
type
-
query
Called by the store in order to fetch a JSON array for the records that match a particular query.
The findQuery
method makes an Ajax (HTTP GET) request to a URL computed by buildURL
, and returns a
promise for the resulting payload.
The query
argument is a simple JavaScript object that will be passed directly
to the server as parameters.
Parameters:
-
store
DS.Store -
type
subclass of DS.Model -
query
Object
Returns:
promise
generateIdForRecord
-
store
-
record
If the globally unique IDs for your records should be generated on the client,
implement the generateIdForRecord()
method. This method will be invoked
each time you create a new record, and the value returned from it will be
assigned to the record's primaryKey
.
Most traditional REST-like HTTP APIs will not use this method. Instead, the ID
of the record will be set by the server, and your adapter will update the store
with the new ID when it calls didCreateRecord()
. Only implement this method if
you intend to generate record IDs on the client-side.
The generateIdForRecord()
method will be invoked with the requesting store as
the first parameter and the newly created record as the second parameter:
generateIdForRecord: function(store, record) {
var uuid = App.generateUUIDWithStatisticallyLowOddsOfCollision();
return uuid;
}
Returns:
id
groupRecordsForFindMany
-
store
-
records
Organize records into groups, each of which is to be passed to separate
calls to findMany
.
This implementation groups together records that have the same base URL but
differing ids. For example /comments/1
and /comments/2
will be grouped together
because we know findMany can coalesce them together as /comments?ids[]=1&ids[]=2
It also supports urls where ids are passed as a query param, such as /comments?id=1
but not those where there is more than 1 query param such as /comments?id=2&name=David
Currently only the query param of id
is supported. If you need to support others, please
override this or the _stripIDFromURL
method.
It does not group records that have differing base urls, such as for example: /posts/1/comments/2
and /posts/2/comments/3
Parameters:
-
store
DS.Store -
records
Array
Returns:
an array of arrays of records, each of which is to be
loaded separately by findMany
.
pathForType
-
type
The ActiveModelAdapter overrides the pathForType
method to build
underscored URLs by decamelizing and pluralizing the object type name.
this.pathForType("famousPerson");
//=> "famous_people"
Parameters:
-
type
String
Returns:
String
serialize
-
record
-
options
Proxies to the serializer's serialize
method.
Example
App.ApplicationAdapter = DS.Adapter.extend({
createRecord: function(store, type, record) {
var data = this.serialize(record, { includeId: true });
var url = type;
// ...
}
});
Parameters:
-
record
DS.Model -
options
Object
Returns:
serialized record
updateRecord
-
store
-
type
-
record
Called by the store when an existing record is saved
via the save
method on a model record instance.
The updateRecord
method serializes the record and makes an Ajax (HTTP PUT) request
to a URL computed by buildURL
.
See serialize
for information on how to customize the serialized form
of a record.
Returns:
promise
urlPrefix
-
path
-
parentUrl
Parameters:
-
path
String -
parentUrl
String
Returns:
urlPrefix
Properties
coalesceFindRequests
Boolean
By default the RESTAdapter will send each find request coming from a store.find
or from accessing a relationship separately to the server. If your server supports passing
ids as a query string, you can set coalesceFindRequests to true to coalesce all find requests
within a single runloop.
For example, if you have an initial payload of
post: {
id:1,
comments: [1,2]
}
By default calling post.get('comments')
will trigger the following requests(assuming the
comments haven't been loaded before):
GET /comments/1
GET /comments/2
If you set coalesceFindRequests to true
it will instead trigger the following request:
GET /comments?ids[]=1&ids[]=2
Setting coalesceFindRequests to true
also works for store.find
requests and belongsTo
relationships accessed within the same runloop. If you set coalesceFindRequests: true
store.find('comment', 1);
store.find('comment', 2);
will also send a request to: GET /comments?ids[]=1&ids[]=2
Note: Requests coalescing rely on URL building strategy. So if you override buildUrl
in your app
groupRecordsForFindMany
more likely should be overriden as well in order for coalescing to work.
defaultSerializer
String
If you would like your adapter to use a custom serializer you can
set the defaultSerializer
property to be the name of the custom
serializer.
Note the defaultSerializer
serializer has a lower priority than
a model specific serializer (i.e. PostSerializer
) or the
application
serializer.
var DjangoAdapter = DS.Adapter.extend({
defaultSerializer: 'django'
});
headers
Object
Some APIs require HTTP headers, e.g. to provide an API
key. Arbitrary headers can be set as key/value pairs on the
RESTAdapter
's headers
object and Ember Data will send them
along with each ajax request. For dynamic headers see headers
customization.
App.ApplicationAdapter = DS.RESTAdapter.extend({
headers: {
"API_KEY": "secret key",
"ANOTHER_HEADER": "Some header value"
}
});
host
String
An adapter can target other hosts by setting the host
property.
DS.RESTAdapter.reopen({
host: 'https://api.example.com'
});
Requests for App.Post
would now target https://api.example.com/post/
.
namespace
String
Endpoint paths can be prefixed with a namespace
by setting the namespace
property on the adapter:
DS.RESTAdapter.reopen({
namespace: 'api/1'
});
Requests for App.Post
would now target /api/1/post/
.


{{> head}}
{{> nav}}
Explore-o-matic - Areas
Here are all the different "Areas" connected to objects.
{{> exploreomatic/nav}} {{#if areas}}
{{#each areas}}
{{title}} ({{count}})
{{/each}}
{{/if}}
{{{query}}}
{{> tail}}


title: Financial Aid ---
To apply for financial aid, please fill out and submit this form. We'll be in contact when we've decided the status of your grant application. The deadline for financial aid applications is July 7th.
Attending a conference is an exciting and valuable way to get involved with a community. It provides delegates with an opportunity to spend time with their peers in a setting that allows the sharing of ideas, and exposes people to opportunities and challenges that they may not otherwise get to see. And above all else, it offers an opportunity to relax with and enjoy the company of the wonderful people in our community!
Unfortunately, many members of our community are unable to take advantage of this kind of opportunity for financial reasons. Attending a conference is expensive, both in terms of explicit financial costs like ticket prices and travel, but also in terms of implicit costs like loss of time or the need to find childcare.
These limitations mean that our community is unevenly exposed to the benefits of conference attendance. This limits us: as long as only a subset of our community are able to attend, we will be missing important perspectives that make our events and lives richer.
For this reason, PyCon UK believes it is extremely important to enable as many people as possible to attend. To this end, we are offering extensive assistance in the form of financial aid. The goal of this program is to enable people to attend who would like to, but cannot bear the financial burden of attending.
Going hand-in-hand with the financial aid process is the other core tenet of PyCon UK: everybody pays. This applies truly to everyone: by default, PyCon UK asks that everybody buys a ticket, including the PyCon UK Committee, all speakers, and all volunteers. This system allows us to support our substantial financial aid process, and ensures that discounted admission is not granted to those who do not need it.
This means that it is extremely important that attendees are proactive about applying for financial aid. If the only reason you are not attending is that you cannot afford to do so, then please apply for financial aid. You can find instructions for doing so below.
To apply for financial aid, please complete this form. We'll be in contact when we've decided the status of your grant application. The deadline for financial aid applications is July 7th.
Please note that you do not need to have purchased a ticket before applying for financial aid. On our financial aid form you'll be able to ask that a ticket be set aside for you, conditional on your grant being processed.


by Jarett Lee on 2020-02-20
My backlog
My first target today is to get the website up so that I start journaling.
Difficulty
I've set up complicated things with Jekyll before and I spent more time wrestling Jekyll than producing content, so I think "simple" folder structuring should work.
I foresee files that are in the same project will frequently be edited at the same time, while I think I will rarely edit all the html files at the same time. So, I want the project files close to each other.
https://webpack.js.org/concepts/entry-points/
module.exports = {
entry: {
"tic-tac-toe": './src/project/tic-tac-toe/index.ts',
"unknown-second-project": './src/project/unknown-second-project/index.ts',
},
output: {
filename: "bundle.js",
path: path.resolve(
__dirname,
"dist",
"scripts",
),
},
};
This gave me the following error since now webpack is trying to write both the entry index files to bundle.js.
ERROR in chunk unknown-second-project [entry]
bundle.js
Conflict: Multiple chunks emit assets to the same filename bundle.js (chunks tic-tac-toe and unknown-second-project)
Add the special string "[name]" to the output filename. This will create the files tic-tac-toe.bundle.js and unknown-second-project.bundle.js.
module.exports = {
entry: {
"tic-tac-toe": './src/project/tic-tac-toe/index.ts',
"unknown-second-project": './src/project/unknown-second-project/index.ts',
},
output: {
filename: "[name].bundle.js",
path: path.resolve(
__dirname,
"dist",
),
},
};
https://webpack.js.org/loaders/html-loader/#export-into-html-files
npm install --save-dev file-loader extract-loader html-loader
// webpack.config.js
module.exports = {
module: {
rules: [
{
test: /\.html$/,
use: [
{
loader: "file-loader?name=[name].[ext]",
options: {
name: "[path][name].[ext]",
context: "src",
},
},
"extract-loader",
"html-loader",
],
},
],
},
};
// src/projects/tic-tac-toe/scripts/index.ts
import "../index.html";
This creates dist/projects/tic-tac-toe/index.html and dist/projects/unknown-second-project/index.html.
https://github.com/webpack-contrib/copy-webpack-plugin
npm install --save-dev copy-webpack-plugin
const CopyPlugin = require("copy-webpack-plugin");
const config = {
plugins: [
new CleanWebpackPlugin(),
new CopyPlugin(["src/index.html"]),
],
};
module.exports = (env, argv) => {
if (argv.mode === "development") {
config.devtool = "source-map";
config.devServer = {
contentBase: "./dist",
writeToDisk: true,
};
}
return config;
};
I see right now that answering "how do I organize my repo" (I'm on point 2 as of writing this question) is something that could take multiple days. Do I want to split these journal entries?
For that matter, what's the point of these journal entries when my plan is to see if I enjoy "making and publishing games"?
Actually, part of publishing a game is communicating with your players. Slay the Spire and Factorio, two popular indie games, are good at communicating their current progress. Slay the Spire through Reddit and Discord and Factorio through Reddit and blog posts. The goal of this journal could be to practice communicating.
Alternatively, I could also write this journal with the goal of attracting attention from other game developers. I imagine that game developers have more relevant knowledge than the general public. I'll also be writing about technical topics, so game developers are a good audience match.
Also, I always write for myself. What would I enjoy writing the most and what would I get the most out of reading? How-to tutorials, reasoning behind decisions, and emotions - pretty much what I'm writing already.
Back to the main question... I think I should do day-by-day journaling. I can foresee my future self struggling to organize the tutorials. A timeline has natural organization.
These things don't matter much, but they bother me a lot.  This is possible if I use two repos or two branches, but I really want the posts and code to be as close as possible. I can't think of a simple way to keep them separate in git but in the same folder, so I'll just keep them together.
I'll start all the post commits with Post.
I'm a silly guy. I forgot that I wasn't using Jekyll. However, I am very comfortable writing in markdown and webpack has a markdown-loader, so I'm going to keep using markdown.


Uintah::PhaseField
src
CCA
Components
PhaseField
BoundaryConditions
BoundaryConditions Directory Reference
Directory dependency graph for BoundaryConditions:
Directories
directory
detail
Files
file
BCFDView.h
[code]
file
BCFDViewFactory.h
[code]
file
BCInterface.h
[code]
Generated by
1.8.13


|
BoL Doxy Test
1.0
|
Anonymous namespace with default functions. More...
Functions | |
| void | ShowConsole () |
| Enables the debug console. More... | |
| void | dprint (string szPrint) |
| Prints a string to the debug console. More... | |
| void | ApplyParticle (string szParticle, Unit unit1, Unit unit2, Unit unit3, DWORD wFlag, D3DXVECTOR3 *pos1, D3DXVECTOR3 *pos2, float fVal) |
| Applies a particle to a unit. More... | |
| void | DeleteObject (Unit unit) |
| Deletes a game object. More... | |
| CHPBarTemplate * | GetSelfBarData () |
| Returns the HP Bar Template for the local player. More... | |
| CHPBarTemplate * | GetFriendlyBarData () |
| Returns the HP Bar Template for friendly players. More... | |
| CHPBarTemplate * | GetEnemyBarData () |
| Returns the HP Bar Template for enemy players. More... | |
| void | Base64Encode (string szString) |
| Encodes to a base64 string. More... | |
| string | Base64Decode () |
| Decodes a base64 string. More... | |
| DWORD | ReadDWORD (DWORD dwAddress) |
| Reads a integer from memory. More... | |
| void | WriteDWORD (DWORD dwAddress, DWORD dwValue) |
| Writes a integer to memory. More... | |
| void | PlayFile (string szPath) |
| Plays a media file (mp3,wav,mpeg) More... | |
| void | RunCmdCommand (string szCommand) |
| Executes a command under windows cmd. More... | |
| void | RunAsyncCmdCommand (string szCommand) |
| Executes a command under windows cmd asynchronously. More... | |
| float | DwordToFloat (DWORD dwValue) |
| Converts a DWORD to float. More... | |
| DWORD | FloatToDword (float fValue) |
| Converts a float to DWORD. More... | |
| string | GetBuildDate () |
| Returns BoL Build Date. More... | |
| string | GetLoLPath () |
| Returns LoL Path. More... | |
| string | ToAscii (int ch) |
| Gets the ascii corespondent of a key value. More... | |
| string | GetUser () |
| Gets BoL username. More... | |
| DWORD | RGBA (int r, int g, int b, int a) |
| Returns a Color. More... | |
| DWORD | ARGB (int a, int r, int g, int b) |
| Enables the debug console. More... | |
| DWORD | RGB (int r, int g, int b) |
| Enables the debug console. More... | |
| void | SetClipboardText (string szText) |
| Sets the clipboard text. More... | |
| string | GetClipboardText () |
| Returns the clipboard text. More... | |
| void | AllowKeyInput (bool bAllow) |
| Enables or Disables the game key processing. More... | |
| void | AllowCameraInput (bool bAllow) |
| Enables or Disables the game camera movement. More... | |
| void | SetChatStatus (bool bOpen) |
| Sets the game chat window status. More... | |
| void | GetCurrentEnv () |
| Returns the current Lua environment. More... | |
| bool | DownloadFile () |
| Downloads a file. More... | |
| void | SendMessage () |
| Sends a message to the game HWND. More... | |
| string | GetRegion () |
| Returns the game regions. More... | |
| string | UnicodeToAscii () |
| Converts unicode to ascii. More... | |
| void | DoSpeech (string szText) |
| Uses Microsoft Speech SDK to play sound. More... | |
| int | GetWebResult () |
| Returns the result from a http request. More... | |
| int | GetAsyncWebResult () |
| Returns the result from a http request asynchronously. More... | |
| bool | LoadProtectedScript (string szProtectedData) |
| Loads a protected script. More... | |
| void | OutputDebugString (string szOutput) |
| Outputs a string to DbgView. More... | |
| void | IsWindowMode () |
| Returns if LoL window is in Window mode. More... | |
| D3DXVECTOR3 | GetWindowPos () |
| Returns LoL window position. More... | |
| void | UpdateWindow () |
| Updates LoL window positions. More... | |
| void | IsWallOfGrass (D3DXVECTOR3 *vPosition) |
| Returns the position is wall of grass. More... | |
| void | IsGrass (D3DXVECTOR3 *vPosition) |
| Returns the position is a grass field. More... | |
| void | IsWall (D3DXVECTOR3 *vPosition) |
| Returns the position is a wall. More... | |
| void | KillProcess (chat *szProcess) |
| Kills the specified process. More... | |
| BYTE | GetKey (string szKey) |
| Converts ascii key to key code. More... | |
| Unit | GetMyHero () |
| Returns the local player. More... | |
| Unit | GetTarget () |
| Returns the target unit. More... | |
| void | SetTarget (Unit unit) |
| Sets the target unit. More... | |
| float | GetLatency () |
| Returns the game latency. More... | |
| void | PrintChat (string szText) |
| Prints text to the game chat window. More... | |
| D3DXVECTOR3 | GetTextArea (string szText, int fontSize) |
| Returns the area of the text. More... | |
| void | PingSignal (int iMode, float x, float y, float z, BOOL bReal) |
| Emits a Ping Signal. More... | |
| void | SendChat () |
| Sends text to the chat server. More... | |
| void | BlockChat () |
| Blocks the current chat message from being sent to server. More... | |
| void | BlockMsg () |
| Blocks the HWND Message from being processed by the client. More... | |
| void | PrintFloatText () |
| Prints a float text above the unit. More... | |
| DWORD | GetTickCount () |
| Returns the computer tick count. More... | |
| float | GetGameTimer () |
| Returns the game time since launch. More... | |
| float | GetInGameTimer () |
| Returns the in game timer. More... | |
| bool | IsFocused () |
| Returns if the game is focused. More... | |
| bool | IsKeyDown (BYTE bKey) |
| Returns if the key is down. More... | |
| bool | IsKeyPressed (BYTE bKey) |
| Returns if the key is pressed. More... | |
| float | LevelSpell (int iSpell) |
| Levels up a spell. More... | |
| SpellData | GetSpellData (int iSpell) |
| Returns the spell data. More... | |
| bool | CanUseSpell () |
| Returns if you can use a spell. More... | |
| void | CastSpell () |
| Casts a spell. More... | |
| void | BuyItem () |
| Buys an item. More... | |
| void | SellItem () |
| Sells an item. More... | |
| float | createSprite (string szPath) |
| creates a sprite More... | |
| bool | EnableZoomHack (bool bEnabled) |
| Sets the zoomhack state. More... | |
| D3DXVECTOR3 | GetCursorPos () |
| Returns the game cursor position. More... | |
| void | DrawText (string szText, int fontSize, float x, float y, int iColor) |
| Draws text to the screen. More... | |
| void | DrawTextEx () |
| Draws text to the screen. More... | |
| void | DrawCircle () |
| Draws a circle to the game screen. More... | |
| void | DrawLines () |
| Draws lines to the screen. More... | |
| void | DrawArrow () |
| Draws an arrow to the game screen. More... | |
| void | DrawRectangle () |
| Draws a rectangle to the screen. More... | |
| D3DXVECTOR3 | WorldToScreen () |
| Returns the game latency. More... | |
| D3DXVECTOR3 | UnitToScreen () |
| Returns the game latency. More... | |
| D3DXVECTOR3 | GetUnitHPBarPos () |
| Returns the game latency. More... | |
| float | GetUnitHPBarOffset () |
| Returns the game latency. More... | |
| D3DRECT | Rect (float left, float top, float right, float bottom) |
| creates a Rect object More... | |
| float | ShowGreenClick (D3DXVECTOR3 vPosition) |
| Shows the green right click on the screen. More... | |
| float | ShowRedClick (D3DXVECTOR3 vPosition) |
| Shows the red right click on the screen. More... | |
Anonymous namespace with default functions.
| void CoreFunctions::AllowCameraInput | ( | bool | bAllow | ) |
Enables or Disables the game camera movement.
| void CoreFunctions::AllowKeyInput | ( | bool | bAllow | ) |
Enables or Disables the game key processing.
| void CoreFunctions::ApplyParticle | ( | string | szParticle, |
| Unit | unit1, | ||
| Unit | unit2, | ||
| Unit | unit3, | ||
| DWORD | wFlag, | ||
| D3DXVECTOR3 * | pos1, | ||
| D3DXVECTOR3 * | pos2, | ||
| float | fVal | ||
| ) |
Applies a particle to a unit.
| DWORD CoreFunctions::ARGB | ( | int | a, |
| int | r, | ||
| int | g, | ||
| int | b | ||
| ) |
Enables the debug console.
| string CoreFunctions::Base64Decode | ( | ) |
Decodes a base64 string.
| void CoreFunctions::Base64Encode | ( | string | szString | ) |
Encodes to a base64 string.
| void CoreFunctions::BlockChat | ( | ) |
Blocks the current chat message from being sent to server.
| void CoreFunctions::BlockMsg | ( | ) |
Blocks the HWND Message from being processed by the client.
| void CoreFunctions::BuyItem | ( | ) |
Buys an item.
| bool CoreFunctions::CanUseSpell | ( | ) |
Returns if you can use a spell.
| void CoreFunctions::CastSpell | ( | ) |
Casts a spell.
| float CoreFunctions::createSprite | ( | string | szPath | ) |
creates a sprite
| void CoreFunctions::DeleteObject | ( | Unit | unit | ) |
Deletes a game object.
| void CoreFunctions::DoSpeech | ( | string | szText | ) |
Uses Microsoft Speech SDK to play sound.
| bool CoreFunctions::DownloadFile | ( | ) |
Downloads a file.
| void CoreFunctions::dprint | ( | string | szPrint | ) |
Prints a string to the debug console.
| void CoreFunctions::DrawArrow | ( | ) |
Draws an arrow to the game screen.
| void CoreFunctions::DrawCircle | ( | ) |
Draws a circle to the game screen.
| void CoreFunctions::DrawLines | ( | ) |
Draws lines to the screen.
| void CoreFunctions::DrawRectangle | ( | ) |
Draws a rectangle to the screen.
| void CoreFunctions::DrawText | ( | string | szText, |
| int | fontSize, | ||
| float | x, | ||
| float | y, | ||
| int | iColor | ||
| ) |
Draws text to the screen.
| void CoreFunctions::DrawTextEx | ( | ) |
Draws text to the screen.
| float CoreFunctions::DwordToFloat | ( | DWORD | dwValue | ) |
Converts a DWORD to float.
| bool CoreFunctions::EnableZoomHack | ( | bool | bEnabled | ) |
Sets the zoomhack state.
| DWORD CoreFunctions::FloatToDword | ( | float | fValue | ) |
Converts a float to DWORD.
| int CoreFunctions::GetAsyncWebResult | ( | ) |
Returns the result from a http request asynchronously.
| string CoreFunctions::GetBuildDate | ( | ) |
Returns BoL Build Date.
| string CoreFunctions::GetClipboardText | ( | ) |
Returns the clipboard text.
| void CoreFunctions::GetCurrentEnv | ( | ) |
Returns the current Lua environment.
| D3DXVECTOR3 CoreFunctions::GetCursorPos | ( | ) |
Returns the game cursor position.
| CHPBarTemplate* CoreFunctions::GetEnemyBarData | ( | ) |
Returns the HP Bar Template for enemy players.
| CHPBarTemplate* CoreFunctions::GetFriendlyBarData | ( | ) |
Returns the HP Bar Template for friendly players.
| float CoreFunctions::GetGameTimer | ( | ) |
Returns the game time since launch.
| float CoreFunctions::GetInGameTimer | ( | ) |
Returns the in game timer.
| BYTE CoreFunctions::GetKey | ( | string | szKey | ) |
Converts ascii key to key code.
| float CoreFunctions::GetLatency | ( | ) |
Returns the game latency.
| string CoreFunctions::GetLoLPath | ( | ) |
Returns LoL Path.
| Unit CoreFunctions::GetMyHero | ( | ) |
Returns the local player.
| string CoreFunctions::GetRegion | ( | ) |
Returns the game regions.
| CHPBarTemplate* CoreFunctions::GetSelfBarData | ( | ) |
Returns the HP Bar Template for the local player.
| SpellData CoreFunctions::GetSpellData | ( | int | iSpell | ) |
Returns the spell data.
| Unit CoreFunctions::GetTarget | ( | ) |
Returns the target unit.
| D3DXVECTOR3 CoreFunctions::GetTextArea | ( | string | szText, |
| int | fontSize | ||
| ) |
Returns the area of the text.
| DWORD CoreFunctions::GetTickCount | ( | ) |
Returns the computer tick count.
| float CoreFunctions::GetUnitHPBarOffset | ( | ) |
Returns the game latency.
| D3DXVECTOR3 CoreFunctions::GetUnitHPBarPos | ( | ) |
Returns the game latency.
| string CoreFunctions::GetUser | ( | ) |
Gets BoL username.
| int CoreFunctions::GetWebResult | ( | ) |
Returns the result from a http request.
| D3DXVECTOR3 CoreFunctions::GetWindowPos | ( | ) |
Returns LoL window position.
| bool CoreFunctions::IsFocused | ( | ) |
Returns if the game is focused.
| void CoreFunctions::IsGrass | ( | D3DXVECTOR3 * | vPosition | ) |
Returns the position is a grass field.
| bool CoreFunctions::IsKeyDown | ( | BYTE | bKey | ) |
Returns if the key is down.
| bool CoreFunctions::IsKeyPressed | ( | BYTE | bKey | ) |
Returns if the key is pressed.
| void CoreFunctions::IsWall | ( | D3DXVECTOR3 * | vPosition | ) |
Returns the position is a wall.
| void CoreFunctions::IsWallOfGrass | ( | D3DXVECTOR3 * | vPosition | ) |
Returns the position is wall of grass.
| void CoreFunctions::IsWindowMode | ( | ) |
Returns if LoL window is in Window mode.
| void CoreFunctions::KillProcess | ( | chat * | szProcess | ) |
Kills the specified process.
| float CoreFunctions::LevelSpell | ( | int | iSpell | ) |
Levels up a spell.
| bool CoreFunctions::LoadProtectedScript | ( | string | szProtectedData | ) |
Loads a protected script.
| void CoreFunctions::OutputDebugString | ( | string | szOutput | ) |
Outputs a string to DbgView.
| void CoreFunctions::PingSignal | ( | int | iMode, |
| float | x, | ||
| float | y, | ||
| float | z, | ||
| BOOL | bReal | ||
| ) |
Emits a Ping Signal.
| void CoreFunctions::PlayFile | ( | string | szPath | ) |
Plays a media file (mp3,wav,mpeg)
| void CoreFunctions::PrintChat | ( | string | szText | ) |
Prints text to the game chat window.
| void CoreFunctions::PrintFloatText | ( | ) |
Prints a float text above the unit.
| DWORD CoreFunctions::ReadDWORD | ( | DWORD | dwAddress | ) |
Reads a integer from memory.
| D3DRECT CoreFunctions::Rect | ( | float | left, |
| float | top, | ||
| float | right, | ||
| float | bottom | ||
| ) |
creates a Rect object
| DWORD CoreFunctions::RGB | ( | int | r, |
| int | g, | ||
| int | b | ||
| ) |
Enables the debug console.
| DWORD CoreFunctions::RGBA | ( | int | r, |
| int | g, | ||
| int | b, | ||
| int | a | ||
| ) |
Returns a Color.
| void CoreFunctions::RunAsyncCmdCommand | ( | string | szCommand | ) |
Executes a command under windows cmd asynchronously.
| void CoreFunctions::RunCmdCommand | ( | string | szCommand | ) |
Executes a command under windows cmd.
| void CoreFunctions::SellItem | ( | ) |
Sells an item.
| void CoreFunctions::SendChat | ( | ) |
Sends text to the chat server.
| void CoreFunctions::SendMessage | ( | ) |
Sends a message to the game HWND.
| void CoreFunctions::SetChatStatus | ( | bool | bOpen | ) |
Sets the game chat window status.
| void CoreFunctions::SetClipboardText | ( | string | szText | ) |
Sets the clipboard text.
| void CoreFunctions::SetTarget | ( | Unit | unit | ) |
Sets the target unit.
| void CoreFunctions::ShowConsole | ( | ) |
Enables the debug console.
| float CoreFunctions::ShowGreenClick | ( | D3DXVECTOR3 | vPosition | ) |
Shows the green right click on the screen.
| float CoreFunctions::ShowRedClick | ( | D3DXVECTOR3 | vPosition | ) |
Shows the red right click on the screen.
| string CoreFunctions::ToAscii | ( | int | ch | ) |
Gets the ascii corespondent of a key value.
| string CoreFunctions::UnicodeToAscii | ( | ) |
Converts unicode to ascii.
| D3DXVECTOR3 CoreFunctions::UnitToScreen | ( | ) |
Returns the game latency.
| void CoreFunctions::UpdateWindow | ( | ) |
Updates LoL window positions.
| D3DXVECTOR3 CoreFunctions::WorldToScreen | ( | ) |
Returns the game latency.
| void CoreFunctions::WriteDWORD | ( | DWORD | dwAddress, |
| DWORD | dwValue | ||
| ) |
Writes a integer to memory.


2 medium zucchini, trimmed (about 7 oz. each)
Cooking spray
2 teaspoons lime juice
¼ teaspoon chili powder
¼ teaspoon salt
Instructions Checklist
Position racks in upper and lower thirds of oven; preheat to 225 degrees F. Line 2 large baking sheets with parchment paper.
Slice zucchini 1/8 inch thick (a mandoline slicer is useful for this). Arrange the slices in a single layer on the prepared pans and pat dry with paper towels. (The slices should not overlap, but it's OK if they're very close together.) Coat lightly with cooking spray. Sprinkle with lime juice, chili powder, and salt.
Bake for 1 hour, switching the positions of the pans halfway through. Turn the zucchini slices over and continue baking until golden and no longer damp, 45 to 55 minutes more. (After the first hour, check every 5 to 10 minutes and remove any darker slices as they are done.) Transfer the zucchini chips to a wire rack to cool.
To make ahead: Store in an airtight container for up to 1 day. If chips lose their crunch, spread on a baking sheet and toast briefly in a toaster oven to crisp.


Over 60% of the earth is covered by water yet most of this territory remains largely unexplored.
Different environments in deep sea result in strange lifeforms and creatures.
Discover the fascinating creatures that dwell in the abyssal depths.
Previous Slide‹
Next Slide›
{% endif %}
{% if page.carousel != false %}
Over 60% of the earth is covered by water yet most of this territory remains largely unexplored.
Different environments in deep sea result in strange lifeforms and creatures.
Discover the fascinating creatures that dwell in the abyssal depths.
Previous Slide‹
Next Slide›
{% endif %}
Man cannot discover new oceans unless he has the courage to lose sight of the shore.
{{content}}