mirror of
https://gitlab.com/news-flash/article_scraper.git
synced 2025-07-07 16:15:32 +02:00
fix strip unlikely table-child & add 2 new tests
This commit is contained in:
parent
873e081c33
commit
2189f527d7
8 changed files with 2579 additions and 4 deletions
450
resources/tests/readability/keep-images/expected.html
Normal file
450
resources/tests/readability/keep-images/expected.html
Normal file
|
@ -0,0 +1,450 @@
|
||||||
|
<article><div name="ef8c" id="readability-page-1">
|
||||||
|
<div>
|
||||||
|
<figure name="b9ad" id="b9ad">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*sLDnS1UWEFIS33uLMxq3cw.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*sLDnS1UWEFIS33uLMxq3cw.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h2 name="9ebb" id="9ebb" data-align="center">Inside the Deep Web Drug Lab</h2>
|
||||||
|
|
||||||
|
<h4 name="9736" id="9736" data-align="center">Welcome to DoctorX’s Barcelona lab, where the drugs you bought online are tested for safety and purity. No questions asked.</h4>
|
||||||
|
|
||||||
|
<figure name="7417" id="7417">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*3vIhkoHIzcxvUdijoCVx6w.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*3vIhkoHIzcxvUdijoCVx6w.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*3vIhkoHIzcxvUdijoCVx6w.png">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</figure>
|
||||||
|
<p name="8a83" id="8a83">Standing at a table in a chemistry lab in Barcelona, Cristina Gil Lladanosa
|
||||||
|
tears open a silver, smell-proof protective envelope. She slides out a
|
||||||
|
transparent bag full of crystals. Around her, machines whir and hum, and
|
||||||
|
other researchers mill around in long, white coats.</p>
|
||||||
|
<p name="b675" id="b675">She is holding the lab’s latest delivery of a drug bought from the “deep
|
||||||
|
web,” the clandestine corner of the internet that isn’t reachable by normal
|
||||||
|
search engines, and is home to some sites that require special software
|
||||||
|
to access. Labeled as <a href="http://en.wikipedia.org/wiki/MDMA" data-href="http://en.wikipedia.org/wiki/MDMA" rel="nofollow" target="_blank">MDMA</a> (the street
|
||||||
|
term is ecstasy), this sample has been shipped from Canada. Lladanosa and
|
||||||
|
her colleague Iván Fornís Espinosa have also received drugs, anonymously,
|
||||||
|
from people in China, Australia, Europe and the United States.</p>
|
||||||
|
<p name="3c0b" id="3c0b">“Here we have speed, MDMA, cocaine, pills,” Lladanosa says, pointing to
|
||||||
|
vials full of red, green, blue and clear solutions sitting in labeled boxes.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="c4e6" id="c4e6">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*4gN1-fzOwCniw-DbqQjDeQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*4gN1-fzOwCniw-DbqQjDeQ.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Cristina Gil Lladanosa, at the Barcelona testing lab | photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="7a54" id="7a54">Since 2011, with the launch of <a href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" data-href="http://en.wikipedia.org/wiki/Silk_Road_%28marketplace%29" rel="nofollow" target="_blank">Silk Road</a>, anybody has been able to safely buy illegal
|
||||||
|
drugs from the deep web and have them delivered to their door. Though the
|
||||||
|
FBI shut down that black market in October 2013, other outlets have emerged
|
||||||
|
to fill its role. For the last 10 months the lab at which Lladanosa and
|
||||||
|
Espinosa work has offered a paid testing service of those drugs. By sending
|
||||||
|
in samples for analysis, users can know exactly what it is they are buying,
|
||||||
|
and make a more informed decision about whether to ingest the substance.
|
||||||
|
The group, called <a href="http://energycontrol.org/" data-href="http://energycontrol.org/" rel="nofollow" target="_blank">Energy Control</a>,
|
||||||
|
which has being running “harm reduction” programs since 1999, is the first
|
||||||
|
to run a testing service explicitly geared towards verifying those purchases
|
||||||
|
from the deep web.</p>
|
||||||
|
<p name="4395" id="4395">Before joining Energy Control, Lladanosa briefly worked at a pharmacy,
|
||||||
|
whereas Espinosa spent 14 years doing drug analysis. Working at Energy
|
||||||
|
Control is “more gratifying,” and “rewarding” than her previous jobs, Lladanosa
|
||||||
|
told me. They also receive help from a group of volunteers, made up of
|
||||||
|
a mixture of “squatters,” as Espinosa put it, and medical students, who
|
||||||
|
prepare the samples for testing.</p>
|
||||||
|
<p name="0c18" id="0c18">After weighing out the crystals, aggressively mixing it with methanol
|
||||||
|
until dissolved, and delicately pouring the liquid into a tiny brown bottle,
|
||||||
|
Lladanosa, a petite woman who is nearly engulfed by her lab coat, is now
|
||||||
|
ready to test the sample. She loads a series of three trays on top of a
|
||||||
|
large white appliance sitting on a table, called a gas chromatograph (GC).
|
||||||
|
A jungle of thick pipes hang from the lab’s ceiling behind it.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="559c" id="559c">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*2KPmZkIBUrhps-2uwDvYFQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*2KPmZkIBUrhps-2uwDvYFQ.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="1549" id="1549">“Chromatography separates all the substances,” Lladanosa says as she loads
|
||||||
|
the machine with an array of drugs sent from the deep web and local Spanish
|
||||||
|
users. It can tell whether a sample is pure or contaminated, and if the
|
||||||
|
latter, with what.</p>
|
||||||
|
<p name="5d0f" id="5d0f">Rushes of hot air blow across the desk as the gas chromatograph blasts
|
||||||
|
the sample at 280 degrees Celsius. Thirty minutes later the machine’s robotic
|
||||||
|
arm automatically moves over to grip another bottle. The machine will continue
|
||||||
|
cranking through the 150 samples in the trays for most of the work week.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="d6aa" id="d6aa">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*PU40bbbox2Ompc5I3RE99A.jpeg" data-width="2013" data-height="1241" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*PU40bbbox2Ompc5I3RE99A.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="15e0" id="15e0">To get the drugs to Barcelona, a user mails at least 10 milligrams of
|
||||||
|
a substance to the offices of the Asociación Bienestar y Desarrollo, the
|
||||||
|
non-government organization that oversees Energy Control. The sample then
|
||||||
|
gets delivered to the testing service’s laboratory, at the Barcelona Biomedical
|
||||||
|
Research Park, a futuristic, seven story building sitting metres away from
|
||||||
|
the beach. Energy Control borrows its lab space from a biomedical research
|
||||||
|
group for free.</p>
|
||||||
|
<p name="2574" id="2574">The tests cost 50 Euro per sample. Users pay, not surprisingly, with Bitcoin.
|
||||||
|
In the post announcing Energy Control’s service on the deep web, the group
|
||||||
|
promised that “All profits of this service are set aside of maintenance
|
||||||
|
of this project.”</p>
|
||||||
|
<p name="2644" id="2644">About a week after testing, those results are sent in a PDF to an email
|
||||||
|
address provided by the anonymous client.</p>
|
||||||
|
<p name="9f91" id="9f91">“The process is quite boring, because you are in a routine,” Lladanosa
|
||||||
|
says. But one part of the process is consistently surprising: that moment
|
||||||
|
when the results pop up on the screen. “Every time it’s something different.”
|
||||||
|
For instance, one cocaine sample she had tested also contained phenacetin,
|
||||||
|
a painkiller added to increase the product’s weight; lidocaine, an anesthetic
|
||||||
|
that numbs the gums, giving the impression that the user is taking higher
|
||||||
|
quality cocaine; and common caffeine.</p>
|
||||||
|
<figure name="b821" id="b821">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</figure>
|
||||||
|
<p name="39a6" id="39a6">The deep web drug lab is the brainchild of Fernando Caudevilla, a Spanish
|
||||||
|
physician who is better known as “DoctorX” on the deep web, a nickname
|
||||||
|
given to him by his Energy Control co-workers because of his earlier writing
|
||||||
|
about the history, risks and recreational culture of MDMA. In the physical
|
||||||
|
world, Caudevilla has worked for over a decade with Energy Control on various
|
||||||
|
harm reduction focused projects, most of which have involved giving Spanish
|
||||||
|
illegal drug users medical guidance, and often writing leaflets about the
|
||||||
|
harms of certain substances.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="eebc" id="eebc">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*mKvUNOAVQxl6atCbxbCZsg.jpeg" data-width="2100" data-height="1241" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*mKvUNOAVQxl6atCbxbCZsg.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Fernando Caudevilla, AKA DoctorX. Photo: Joseph Cox</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="c099" id="c099">Caudevilla first ventured into Silk Road forums in April 2013. “I would
|
||||||
|
like to contribute to this forum offering professional advice in topics
|
||||||
|
related to drug use and health,” he wrote in an <a href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" data-href="http://web.archive.org/web/20131015051405/https://dkn255hz262ypmii.onion.to/index.php?topic=147607.0" rel="nofollow" target="_blank">introductory post</a>,
|
||||||
|
using his DoctorX alias. Caudevilla offered to provide answers to questions
|
||||||
|
that a typical doctor is not prepared, or willing, to respond to, at least
|
||||||
|
not without a lecture or a judgment. “This advice cannot replace a complete
|
||||||
|
face-to-face medical evaluation,” he wrote, “but I know how difficult it
|
||||||
|
can be to talk frankly about these things.”</p>
|
||||||
|
<p name="ff1d" id="ff1d">The requests flooded in. A diabetic asked what effect MDMA has on blood
|
||||||
|
sugar; another what the risks of frequent psychedelic use were for a young
|
||||||
|
person. Someone wanted to know whether amphetamine use should be avoided
|
||||||
|
during lactation. In all, Fernando’s thread received over 50,000 visits
|
||||||
|
and 300 questions before the FBI shut down Silk Road.</p>
|
||||||
|
<p name="1f35" id="1f35">“He’s amazing. A gift to this community,” one user wrote on the Silk Road
|
||||||
|
2.0 forum, a site that sprang up after the original. “His knowledge is
|
||||||
|
invaluable, and never comes with any judgment.” Up until recently, Caudevilla
|
||||||
|
answered questions on the marketplace “Evolution.” Last week, however,
|
||||||
|
the administrators of that site <a href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" data-href="http://motherboard.vice.com/read/one-of-the-darknets-biggest-markets-may-have-just-stole-all-its-users-bitcoin" rel="nofollow" target="_blank">pulled a scam</a>,
|
||||||
|
shutting the market down and escaping with an estimated $12 million worth
|
||||||
|
of Bitcoin.</p>
|
||||||
|
<p name="b20f" id="b20f">Caudevilla’s transition from dispensing advice to starting up a no-questions-asked
|
||||||
|
drug testing service came as a consequence of his experience on the deep
|
||||||
|
web. He’d wondered whether he could help bring more harm reduction services
|
||||||
|
to a marketplace without controls. The Energy Control project, as part
|
||||||
|
of its mandate of educating drug users and preventing harm, had already
|
||||||
|
been carrying out drug testing for local Spanish users since 2001, at music
|
||||||
|
festivals, night clubs, or through a drop-in service at a lab in Madrid.</p>
|
||||||
|
<p name="f739" id="f739">“I thought, we are doing this in Spain, why don’t we do an international
|
||||||
|
drug testing service?” Caudevilla told me when I visited the other Energy
|
||||||
|
Control lab, in Madrid. Caudevilla, a stocky character with ear piercings
|
||||||
|
and short, shaved hair, has eyes that light up whenever he discusses the
|
||||||
|
world of the deep web. Later, via email, he elaborated that it was not
|
||||||
|
a hard sell. “It was not too hard to convince them,” he wrote me. Clearly,
|
||||||
|
Energy Control believed that the reputation he had earned as an unbiased
|
||||||
|
medical professional on the deep web might carry over to the drug analysis
|
||||||
|
service, where one needs to establish “credibility, trustworthiness, [and]
|
||||||
|
transparency,” Caudevilla said. “We could not make mistakes,” he added.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="4058" id="4058">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*knT10_FNVUmqQIBLnutmzQ.jpeg" data-width="4400" data-height="3141" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*knT10_FNVUmqQIBLnutmzQ.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo: Joseph Cox</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="818c" id="818c">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</figure>
|
||||||
|
<p name="7b5e" id="7b5e">While the Energy Control lab in Madrid lab only tests Spanish drugs from
|
||||||
|
various sources, it is the Barcelona location which vets the substances
|
||||||
|
bought in the shadowy recesses of of the deep web. Caudevilla no longer
|
||||||
|
runs it, having handed it over to his colleague Ana Muñoz. She maintains
|
||||||
|
a presence on the deep web forums, answers questions from potential users,
|
||||||
|
and sends back reports when they are ready.</p>
|
||||||
|
<p name="0f0e" id="0f0e">The testing program exists in a legal grey area. The people who own the
|
||||||
|
Barcelona lab are accredited to experiment with and handle drugs, but Energy
|
||||||
|
Control doesn’t have this permission itself, at least not in writing.</p>
|
||||||
|
<p name="e002" id="e002">“We have a verbal agreement with the police and other authorities. They
|
||||||
|
already know what we are doing,” Lladanosa tells me. It is a pact of mutual
|
||||||
|
benefit. Energy Control provides the police with information on batches
|
||||||
|
of drugs in Spain, whether they’re from the deep web or not, Espinosa says.
|
||||||
|
They also contribute to the European Monitoring Centre for Drugs and Drug
|
||||||
|
Addiction’s early warning system, a collaboration that attempts to spread
|
||||||
|
information about dangerous drugs as quickly as possible.</p>
|
||||||
|
<p name="db1b" id="db1b">By the time of my visit in February, Energy Control had received over
|
||||||
|
150 samples from the deep web and have been receiving more at a rate of
|
||||||
|
between 4 and 8 a week. Traditional drugs, such as cocaine and MDMA, make
|
||||||
|
up about 70 percent of the samples tested, but the Barcelona lab has also
|
||||||
|
received samples of the prescription pill codeine, research chemicals and
|
||||||
|
synthetic cannabinoids, and even pills of Viagra.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="b885" id="b885">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*Vr61dyCTRwk6CemmVF8YAQ.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*Vr61dyCTRwk6CemmVF8YAQ.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="e76f" id="e76f">So it’s fair to make a tentative judgement on what people are paying for
|
||||||
|
on the deep web. The verdict thus far? Overall, drugs on the deep web appear
|
||||||
|
to be of much higher quality than those found on the street.</p>
|
||||||
|
<p name="5352" id="5352">“In general, the cocaine is amazing,” says Caudevilla, saying that the
|
||||||
|
samples they’ve seen have purities climbing towards 80 or 90 percent, and
|
||||||
|
some even higher. To get an idea of how unusual this is, take a look at
|
||||||
|
the <a href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" data-href="http://www.unodc.org/documents/wdr2014/Cocaine_2014_web.pdf" rel="nofollow" target="_blank">United Nations Office on Drugs and Crime World Drug Report 2014</a>,
|
||||||
|
which reports that the average quality of street cocaine in Spain is just
|
||||||
|
over 40 percent, while in the United Kingdom it is closer to 30 percent.“We
|
||||||
|
have found 100 percent [pure] cocaine,” he adds. “That’s really, really
|
||||||
|
strange. That means that, technically, this cocaine has been purified,
|
||||||
|
with clandestine methods.”</p>
|
||||||
|
<p name="a71c" id="a71c">Naturally, identifying vendors who sell this top-of-the-range stuff is
|
||||||
|
one of the reasons that people have sent samples to Energy Control. Caudevilla
|
||||||
|
was keen to stress that, officially, Energy Control’s service “is not intended
|
||||||
|
to be a control of drug quality,” meaning a vetting process for identifying
|
||||||
|
the best sellers, but that is exactly how some people have been using it.</p>
|
||||||
|
<p name="cb5b" id="cb5b">As one buyer on the Evolution market, elmo666, wrote to me over the site’s
|
||||||
|
messaging system, “My initial motivations were selfish. My primary motivation
|
||||||
|
was to ensure that I was receiving and continue to receive a high quality
|
||||||
|
product, essentially to keep the vendor honest as far as my interactions
|
||||||
|
with them went.”</p>
|
||||||
|
<p name="d80d" id="d80d">Vendors on deep web markets advertise their product just like any other
|
||||||
|
outlet does, using flash sales, gimmicky giveaways and promises of drugs
|
||||||
|
that are superior to those of their competitors. The claims, however, can
|
||||||
|
turn out to be empty: despite the test results that show that deep web
|
||||||
|
cocaine vendors typically sell product that is of a better quality than
|
||||||
|
that found on the street, in plenty of cases, the drugs are nowhere near
|
||||||
|
as pure as advertised.</p>
|
||||||
|
<p name="36de" id="36de">“You won’t be getting anything CLOSE to what you paid for,” one user complained
|
||||||
|
about the cocaine from ‘Mirkov’, a vendor on Evolution. “He sells 65% not
|
||||||
|
95%.”</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="8544" id="8544">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*a-1_13xE6_ErQ-QSlz6myw.jpeg" data-width="2100" data-height="1402" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*a-1_13xE6_ErQ-QSlz6myw.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="d521" id="d521">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*ohyycinH18fz98TCyUzVgQ.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*ohyycinH18fz98TCyUzVgQ.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*ohyycinH18fz98TCyUzVgQ.png">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</figure>
|
||||||
|
<p name="126b" id="126b">Despite the prevalence of people using the service to gauge the quality
|
||||||
|
of what goes up their nose, many users send samples to Energy Control in
|
||||||
|
the spirit of its original mission: keeping themselves alive and healthy.
|
||||||
|
The worst case scenario from drugs purchased on the deep web is, well the
|
||||||
|
worst case. That was the outcome when <a href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" data-href="http://www.independent.co.uk/news/uk/crime/teenager-patrick-mcmullen-who-died-while-on-skype-had-bought-drugs-from-silk-road-8942329.html" rel="nofollow" target="_blank">Patrick McMullen,</a> a
|
||||||
|
17-year-old Scottish student, ingested half a gram of MDMA and three tabs
|
||||||
|
of LSD, reportedly purchased from the Silk Road. While talking to his friends
|
||||||
|
on Skype, his words became slurred and he passed out. Paramedics could
|
||||||
|
not revive him. The coroner for that case, Sherrif Payne, who deemed the
|
||||||
|
cause of death ecstasy toxicity, told <em>The Independent</em> “You
|
||||||
|
never know the purity of what you are taking and you can easily come unstuck.”</p>
|
||||||
|
<p name="5e9e" id="5e9e">ScreamMyName, a deep web user who has been active since the original Silk
|
||||||
|
Road, wants to alert users to the dangerous chemicals that are often mixed
|
||||||
|
with drugs, and is using Energy Control as a means to do so.</p>
|
||||||
|
<p name="19a6" id="19a6">“We’re at a time where some vendors are outright sending people poison.
|
||||||
|
Some do it unknowingly,” ScreamMyName told me in an encrypted message.
|
||||||
|
“Cocaine production in South America is often tainted with either levamisole
|
||||||
|
or phenacetine. Both poison to humans and both with severe side effects.”</p>
|
||||||
|
<p name="9fef" id="9fef">In the case of Levamisole, those prescribing it are often not doctors
|
||||||
|
but veterinarians, as Levamisole is commonly used on animals, primarily
|
||||||
|
for the treatment of worms. If ingested by humans it can lead to cases
|
||||||
|
of extreme eruptions of the skin, as <a href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" data-href="http://www.ncbi.nlm.nih.gov/pubmed/22127712" rel="nofollow" target="_blank">documented in a study</a> from researchers at the University
|
||||||
|
of California, San Francisco. But Lladanosa has found Levamisole in cocaine
|
||||||
|
samples; dealers use it to increase the product weight, allowing them to
|
||||||
|
stretch their batch further for greater profit — and also, she says, because
|
||||||
|
Levamisole has a strong stimulant effect.</p>
|
||||||
|
<p name="7886" id="7886">“It got me sick as fuck,” Dr. Feel, an Evolution user, wrote on the site’s
|
||||||
|
forums after consuming cocaine that had been cut with 23 percent Levamisole,
|
||||||
|
and later tested by Energy Control. “I was laid up in bed for several days
|
||||||
|
because of that shit. The first night I did it, I thought I was going to
|
||||||
|
die. I nearly drove myself to the ER.”</p>
|
||||||
|
<p name="18d3" id="18d3">“More people die because of tainted drugs than the drugs themselves,”
|
||||||
|
Dr. Feel added. “It’s the cuts and adulterants that are making people sick
|
||||||
|
and killing them.”</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="552a" id="552a">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg" data-width="2100" data-height="1192" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*IWXhtSsVv0gNnCwnDEXk-Q.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="839a" id="839a">The particular case of cocaine cut with Levamisole is one of the reasons
|
||||||
|
that ScreamMyName has been pushing for more drug testing on the deep web
|
||||||
|
markets. “I recognize that drug use isn’t exactly healthy, but why exacerbate
|
||||||
|
the problem?” he told me when I contacted him after his post. “[Energy
|
||||||
|
Control] provides a way for users to test the drugs they’ll use and for
|
||||||
|
these very users to know what it is they’re putting in their bodies. Such
|
||||||
|
services are in very short supply.”</p>
|
||||||
|
<p name="18dc" id="18dc">After sending a number of Energy Control tests himself, ScreamMyName started
|
||||||
|
a de facto crowd-sourcing campaign to get more drugs sent to the lab, and
|
||||||
|
then shared the results, after throwing in some cash to get the ball rolling.
|
||||||
|
<a href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" data-href="https://blockchain.info/address/1Mi6VjMFqjcD48FPV7cnPB24MAtQQenRy3" rel="nofollow" target="_blank">He set up a Bitcoin wallet</a>, with the hope that users might chip in
|
||||||
|
to fund further tests. At the time of writing, the wallet has received
|
||||||
|
a total of 1.81 bitcoins; around $430 at today’s exchange rates.</p>
|
||||||
|
<p name="dcbd" id="dcbd">In posts to the Evolution community, ScreamMyName pitched this project
|
||||||
|
as something that will benefit users and keep drug dealer honest. “When
|
||||||
|
the funds build up to a point where we can purchase an [Energy Control]
|
||||||
|
test fee, we’ll do a US thread poll for a few days and try to cohesively
|
||||||
|
decide on what vendor to test,” he continued.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="9d32" id="9d32">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*NGcrjfkV0l37iQH2uyYjEw.jpeg" data-width="1368" data-height="913" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*NGcrjfkV0l37iQH2uyYjEw.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="bff6" id="bff6">Other members of the community have been helping out, too. PlutoPete,
|
||||||
|
a vendor from the original Silk Road who sold cannabis seeds and other
|
||||||
|
legal items, has provided ScreamMyName with packaging to safely send the
|
||||||
|
samples to Barcelona. “A box of baggies, and a load of different moisture
|
||||||
|
barrier bags,” PlutoPete told me over the phone. “That’s what all the vendors
|
||||||
|
use.”</p>
|
||||||
|
<p name="bb78" id="bb78">It’s a modest program so far. ScreamMyName told me that so far he had
|
||||||
|
gotten enough public funding to purchase five different Energy Control
|
||||||
|
tests, in addition to the ten or so he’s sent himself so far. “The program
|
||||||
|
created is still in its infancy and it is growing and changing as we go
|
||||||
|
along but I have a lot of faith in what we’re doing,” he says.</p>
|
||||||
|
<p name="5638" id="5638">But the spirit is contagious: elmo666, the other deep web user testing
|
||||||
|
cocaine, originally kept the results of the drug tests to himself, but
|
||||||
|
he, too, saw a benefit to distributing the data. “It is clear that it is
|
||||||
|
a useful service to other users, keeping vendors honest and drugs (and
|
||||||
|
their users) safe,” he told me. He started to report his findings to others
|
||||||
|
on the forums, and then created a thread with summaries of the test results,
|
||||||
|
as well as comments from the vendors if they provided it. Other users were
|
||||||
|
soon basing their decisions on what to buy on elmo666‘s tests.</p>
|
||||||
|
<p name="de75" id="de75">“I’m defo trying the cola based on the incredibly helpful elmo and his
|
||||||
|
energy control results and recommendations,” wrote user jayk1984. On top
|
||||||
|
of this, elmo666 plans to launch an independent site on the deep web that
|
||||||
|
will collate all of these results, which should act as a resource for users
|
||||||
|
of all the marketplaces.</p>
|
||||||
|
<p name="6b72" id="6b72">As word of elmo666's efforts spread, he began getting requests from drug
|
||||||
|
dealers who wanted him to use their wares for testing. Clearly, they figured
|
||||||
|
that a positive result from Energy Control would be a fantastic marketing
|
||||||
|
tool to draw more customers. They even offered elmo666 free samples. (He
|
||||||
|
passed.)</p>
|
||||||
|
<p name="b008" id="b008">Meanwhile, some in the purchasing community are arguing that those running
|
||||||
|
markets on the deep web should be providing quality control themselves.
|
||||||
|
PlutoPete told me over the phone that he had been in discussions about
|
||||||
|
this with Dread Pirate Roberts, the pseudonymous owner of the original
|
||||||
|
Silk Road site. “We [had been] talking about that on a more organized basis
|
||||||
|
on Silk Road 1, doing lots of anonymous buys to police each category. But
|
||||||
|
of course they took the thing [Silk Road] down before we got it properly
|
||||||
|
off the ground,” he lamented.</p>
|
||||||
|
<p name="49c8" id="49c8">But perhaps it is best that the users, those who are actually consuming
|
||||||
|
the drugs, remain in charge of shaming dealers and warning each other.
|
||||||
|
“It’s our responsibility to police the market based on reviews and feedback,”
|
||||||
|
elmo666 wrote in an Evolution forum post. It seems that in the lawless
|
||||||
|
space of the deep web, where everything from child porn to weapons are
|
||||||
|
sold openly, users have cooperated in an organic display of self-regulation
|
||||||
|
to stamp out those particular batches of drugs that are more likely to
|
||||||
|
harm users.</p>
|
||||||
|
<p name="386d" id="386d">“That’s always been the case with the deep web,” PlutoPete told me. Indeed,
|
||||||
|
ever since Silk Road, a stable of the drug markets has been the review
|
||||||
|
system, where buyers can leave a rating and feedback for vendors, letting
|
||||||
|
others know about the reliability of the seller. But DoctorX’s lab, rigorously
|
||||||
|
testing the products with scientific instruments, takes it a step further.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<figure name="890b" id="890b">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*WRlKt3q3mt7utmwxcbl3sQ.jpeg" data-width="2100" data-height="1373" src="https://d262ilb51hltx0.cloudfront.net/max/2000/1*WRlKt3q3mt7utmwxcbl3sQ.jpeg">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<figcaption>Photo by Joan Bardeletti</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p name="b109" id="b109">“In the white market, they have quality control. In the dark market, it
|
||||||
|
should be the same,” Cristina Gil Lladanosa says to me before I leave the
|
||||||
|
Barcelona lab.</p>
|
||||||
|
<p name="e3a4" id="e3a4">A week after I visit the lab, the results of the MDMA arrive in my inbox:
|
||||||
|
it is 85 percent pure, with no indications of other active ingredients.
|
||||||
|
Whoever ordered that sample from the digital shelves of the deep web, and
|
||||||
|
had it shipped to their doorstep in Canada, got hold of some seriously
|
||||||
|
good, and relatively safe drugs. And now they know it.</p>
|
||||||
|
<figure name="31cf" id="31cf">
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<p><img data-image-id="1*320_4I0lxbn5x3bx4XPI5Q.png" data-width="1200" data-height="24" data-action="zoom" data-action-value="1*320_4I0lxbn5x3bx4XPI5Q.png" src="https://d262ilb51hltx0.cloudfront.net/max/800/1*320_4I0lxbn5x3bx4XPI5Q.png">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</figure>
|
||||||
|
<p name="9b87" id="9b87" data-align="center"><em>Top photo by Joan Bardeletti</em>
|
||||||
|
</p>
|
||||||
|
<p name="c30a" id="c30a" data-align="center">Follow Backchannel: <a href="https://twitter.com/backchnnl" data-href="https://twitter.com/backchnnl" rel="nofollow" target="_blank"><em>Twitter</em></a>
|
||||||
|
<em>|</em><a href="https://www.facebook.com/pages/Backchannel/1488568504730671" data-href="https://www.facebook.com/pages/Backchannel/1488568504730671" rel="nofollow" target="_blank"><em>Facebook</em></a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div></article>
|
833
resources/tests/readability/keep-images/source.html
Normal file
833
resources/tests/readability/keep-images/source.html
Normal file
File diff suppressed because one or more lines are too long
540
resources/tests/readability/keep-tabular-data/expected.html
Normal file
540
resources/tests/readability/keep-tabular-data/expected.html
Normal file
|
@ -0,0 +1,540 @@
|
||||||
|
<article><div id="readability-page-1">
|
||||||
|
|
||||||
|
<p>Posted by kovarex, TOGos, Ernestas, Albert on 2019-02-15, <a href="http://fakehost/blog/" target="_blank">all posts</a></p>
|
||||||
|
|
||||||
|
<h2>The release plan <span size="2">(kovarex)</span>
|
||||||
|
</h2>
|
||||||
|
<p>This week was the time to close and finish all the things that will go to 0.17.0.</p>
|
||||||
|
<p>Not all of the things that we originally planned to be done were done (surprise), but we just left any non-essential stuff for later so we won't postpone the release any further. The plan is, that next week will be dedicated to the office playtesting and bugfixing. Many would argue, that we could just release instantly and let the players find the bugs for us, but we want to fix the most obvious problems in-house to avoid too many duplicate bug reports and chaos after the release. Also, some potential bugs, like save corruptions, are much more easily worked on in-house.</p>
|
||||||
|
<p>
|
||||||
|
If the playtesting goes well, we will let you know next Friday, and if it is the case, we will aim to release the week starting 25th February.
|
||||||
|
</p>
|
||||||
|
<h3>After release plan</h3>
|
||||||
|
<p>
|
||||||
|
Since there are a lot of things we would like to do before we can call 0.17 good enough, we will simply push new things into the 0.17 releases as time goes on. Even if 0.17 becomes stable in a reasonable time, we would still push things on top of it. We can still make experimental/stable version numbers inside 0.17. Most of the things shouldn't be big enough to make the game generally unstable. I've heard countless times a proposal to make small frequent releases of what have we added, this will probably be reality after 0.17 for some time.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The smaller releases will contain mainly:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Final looks and behaviour of new GUI screens as they will be finished.</li>
|
||||||
|
<li>New graphics.</li>
|
||||||
|
<li>New sounds and sound system tweaks.</li>
|
||||||
|
<li>Mini tutorial additions and tweaks.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This is actually quite a large change to our procedures, and there are many ways we will be trying to maximize the effectiveness of smaller and more regular content updates.
|
||||||
|
</p>
|
||||||
|
<h2>The GUI progress <span size="2">(kovarex)</span>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
There are several GUI screens that are finished. Others (most of them) are just left there as they are in 0.16. They are a combination of the new GUI styles and old ones. They sometimes look funny and out of place, but they should be functional.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td>General UX</td>
|
||||||
|
<td>UX draft</td>
|
||||||
|
<td>UX review</td>
|
||||||
|
<td>UI mockup</td>
|
||||||
|
<td>UI review</td>
|
||||||
|
<td>Implementation draft</td>
|
||||||
|
<td>Implementation review</td>
|
||||||
|
<td>Final review</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Load map</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Save map</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Graphics settings</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Control settings</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Sound settings</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Interface settings</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Other settings</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Map generator</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Quick bar <i><b>Twinsen</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Train GUI <i><b>kovarex</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Technology GUI<i> <b>Oxyd</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Technology tooltip <i><b>Oxyd</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Blueprint library<i> <b>kovarex</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Shortcut bar <i><b>Oxyd</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Character screen <i><b>Dominik</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Help overlay <i><b>kovarex</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Manage/Install mods <i><b>Rseding</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Recipe/item/Entity tooltip <i><b>Twinsen</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Chat icon selector <i><b>?</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>New game <i><b>?</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Menu structure <i><b>?</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Main screen chat <i><b>?</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Recipe explorer <i><b>?</b></i>
|
||||||
|
</td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
<td><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px"></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<p><i>* Newly finished things since the last update in <a href="https://www.factorio.com/blog/post/fff-277" target="_blank">FFF-277</a>.</i></p>
|
||||||
|
<h3>Blueprint library</h3>
|
||||||
|
<p>
|
||||||
|
The blueprint library changes have been split into several steps. The reason is, that there was a big motivation to do the integration with the new quickbar (final version introduced in <a href="https://www.factorio.com/blog/post/fff-278" target="_blank">FFF-278</a>) in time for 0.17.0, while the other changes can be done after. The thing with the quickbar is, that it is quite a big change to one of the most used tools in the game and people generally don't like change even when it is for the better. To minimize the hate of the change, we need to "sell it properly". By that, we should provide as many of the positive aspects of the new quickbar at the time of its introduction.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So the change that is already implemented and working for 0.17 is the ability to put blueprints/books into the quick bar in a way that the quick bar is linked directly to the blueprint library window, so you don't need to have the physical blueprint items in your inventory. The other change is, that picking a blueprint from the blueprint library and then pressing Q will just dismiss it, instead of silently pushing it to your inventory. This works the same as the clipboard described in <a href="https://www.factorio.com/blog/post/fff-255" target="_blank">FFF-255</a>. You can still explicitly insert the blueprint from the library to an inventory slot, but if you just pick it, use it, and press Q, it goes away.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In addition to this, other changes related to the blueprint library will follow soon after 0.17.0. The first thing is the change of how the GUI looks:
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-grid-view.png" width="900px">
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We will also allow to switch between grid and list view. It mainly provides a way to nicely see the longer names of the blueprint. We noticed that players try to put a large amount of info about a blueprint in its name, so we are planning to add a possibility to write a textual description of the blueprint.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-list-view.png" width="900px">
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The last big change is to allow to put blueprint books into blueprint books, allowing better organisation. Basically like a directory structure. Whenever a blueprint/book is opened, we plan to show its current location, so the player knows exactly what is going on.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-book.png" width="900px">
|
||||||
|
</p>
|
||||||
|
<h3>The hand</h3>
|
||||||
|
<p>
|
||||||
|
Has it ever happened to you, that you have robots trying to put things into your full inventory, while you pick an item from it to build something, and then you just can't put it back, as the diligent robots just filled the last slot in your inventory by whatever they are trying to give to you? Wood from tree removal is the most frequent thing in my case.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This was annoying in 0.16 from time to time, but with the new quickbar, it started to happen even more, as now, you have only one inventory, and no reserved slots in the quickbar. To solve that, we just extended the "principal" of the hand. When you pick something from the inventory, the hand icon appears on the slot. As long as you hold the thing in your cursor, the hand stays there, and prevents other things from being inserted there. This way, you should always be able to return the currently selected item into your inventory as long as you didn't get it from external source like a chest.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-the-hand.png" width="900px"><br>
|
||||||
|
<i>The hand is protecting the slot from the robots.</i>
|
||||||
|
</p>
|
||||||
|
<h2>Terrain generation updates <span size="2">(TOGoS)</span>
|
||||||
|
</h2>
|
||||||
|
<p>Everyone has different opinions about what makes a good Factorio world.
|
||||||
|
I've been working on several changes for 0.17, but the overarching theme
|
||||||
|
has been to make the map generator options screen more intuitive
|
||||||
|
and more powerful.</p>
|
||||||
|
<p>
|
||||||
|
This was talked about somewhat in an earlier FFF (<a href="https://www.factorio.com/blog/post/fff-258" target="_blank">FFF-258</a>) regarding ore placement,
|
||||||
|
but since then we found more stuff to fix.
|
||||||
|
</p>
|
||||||
|
<h3>Biter Bases</h3>
|
||||||
|
<p>
|
||||||
|
In 0.16, the size control for biter bases didn't have much effect.
|
||||||
|
The frequency control changed the frequency, but that also decreased the size of bases,
|
||||||
|
which <a href="https://forums.factorio.com/viewtopic.php?t=55113" target="_blank">wasn't generally what people wanted</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For 0.17 we've reworked biter placement using a system similar to that with which we got resource placement under control. The size and frequency controls now act more like most people would expect, with frequency increasing the number of bases, and size changing the size of each base.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-enemy-bases.gif">
|
||||||
|
<br><i>New preview UI showing the effects of enemy base controls.
|
||||||
|
In reality the preview takes a couple seconds to regenerate after every change,
|
||||||
|
but the regeneration part is skipped in this animation to clearly show the effects of the controls.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you don't like the relatively uniform-across-the-world placement of biters,
|
||||||
|
there are changes under the hood to make it easier for modders to do something different.
|
||||||
|
Placement is now based on <a href="https://wiki.factorio.com/Prototype/NamedNoiseExpression" target="_blank">NamedNoiseExpressions</a> "enemy-base-frequency" and "enemy-base-radius", which in turn reference "enemy-base-intensity".
|
||||||
|
By overriding any of those, a modder could easily create a map where biters are found only at high elevations,
|
||||||
|
or only near water, or correlate enemy placement with that of resources, or any other thing
|
||||||
|
that can be expressed as a function of location.
|
||||||
|
</p>
|
||||||
|
<h3>Cliffs</h3>
|
||||||
|
<p>
|
||||||
|
We've added a 'continuity' control for cliffs. If you really
|
||||||
|
like mazes of cliffs, set it to high to reduce the number of gaps in cliff faces.
|
||||||
|
Or you can turn it way down to make cliffs very rare or be completely absent.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-cliff-controls.gif">
|
||||||
|
<br><i>Changing cliff frequency and continuity. Since cliffs are based on elevation,
|
||||||
|
you'll have to turn frequency <strong>way</strong> up if you want lots of layers
|
||||||
|
even near the starting lake.</i>
|
||||||
|
</p>
|
||||||
|
<h3>Biome Debugging</h3>
|
||||||
|
<p>
|
||||||
|
Tile placement is based on a range of humidity and 'aux' values
|
||||||
|
(humidity and aux being properties that vary at different points across the world)
|
||||||
|
that are suitable for each type of tile. For example: grass is only placed in
|
||||||
|
places with relatively high humidity, and desert (not to be confused with plain old sand)
|
||||||
|
only gets placed where aux is high. We've taken to calling these constraints 'rectangles',
|
||||||
|
because when you plot each tile's home turf on a chart of humidity and aux,
|
||||||
|
they are shown as rectangles.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It's hard to make sense of the rectangles just by looking at the autoplace code
|
||||||
|
for each tile, so I wrote a script to chart them. This allowed us to ensure that
|
||||||
|
they were arranged as we wanted, with no gaps between them,
|
||||||
|
and with overlap in some cases.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-rectangles.png" width="900" height="900">
|
||||||
|
<br><i>Rectangles.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Having the humidity-aux-tile chart is all well and good, but doesn't tell the whole story,
|
||||||
|
since tile placement also depends on a noise layer specific to each tile type,
|
||||||
|
and could also influenced by user-adjustable autoplace controls (e.g. turning the grass slider up).
|
||||||
|
So to further help us visualize how humidity, aux, tile-specific noise, and
|
||||||
|
autoplace controls worked together to determine tiles on the map,
|
||||||
|
there are a couple of alternate humidity and aux generators that simply vary them
|
||||||
|
linearly from north-south and west-east, respectively.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-debug-map.png" width="900" height="900">
|
||||||
|
<br><i>Using 'debug-moisture' and 'debug-aux' generators to drive moisture and aux, respectively.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This map helped us realize that, rather than having controls
|
||||||
|
for each different type of tile, it made more sense to just
|
||||||
|
control moisture and aux (which is called 'terrain type' in the GUI,
|
||||||
|
because 'aux' doesn't mean anything).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-controls.gif" width="900" height="664">
|
||||||
|
<br><i>Sliding the moisture and aux bias sliders to make the world more or less grassy or red-deserty.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A pet project of mine has been to
|
||||||
|
put controls in the map generator GUI so that we could select generators
|
||||||
|
for various tile properties (temperature, aux, humidity, elevation, etc) at
|
||||||
|
map-creation time without necessarily needing to involve mods.
|
||||||
|
This was useful for debugging the biome rectangles, but my ulterior
|
||||||
|
motive was to, at least in cases where there are multiple options,
|
||||||
|
show the generator information to players. A couple of reasons for
|
||||||
|
this:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>It was already possible for mods to override tile property generators via presets, but
|
||||||
|
we didn't have a place to show that information in the UI.
|
||||||
|
So switching between presets could change hidden variables in non-obvious ways
|
||||||
|
and lead to a lot of confusion.</li>
|
||||||
|
<li>I had dreams of shipping alternate elevation generators in the base game.</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Water Placement</h3>
|
||||||
|
<p>
|
||||||
|
For 0.16 I <a href="https://www.factorio.com/blog/post/fff-207" target="_blank">attempted to make the shape of continents more interesting</a>. Some people <a href="https://www.reddit.com/r/factorio/comments/7n3mn1/016_swamplands_are_pure_awesome/" target="_blank">really liked</a> the <a href="https://www.youtube.com/watch?v=-pkwTjG-sJg" target="_blank">new terrain</a>, or at least <a href="https://www.reddit.com/r/factorio/comments/7krq86/question_about_water_generation_in_016/" target="_blank">managed to find some settings that made it work</a> for them. Others called it a "swampy mess". A common refrain was that the world was more fun to explore in the 0.12 days.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So in 0.17 we're restoring the <em>default</em> elevation generator to one very similar to that used
|
||||||
|
by 0.12. Which means large, sometimes-connected lakes.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The water 'frequency' control was confusing to a lot of people including myself.
|
||||||
|
It could be interpreted as "how much water", when the actual effect was to inversely
|
||||||
|
scale both bodies of water and continents, such that higher water frequency actually meant smaller bodies of water.
|
||||||
|
So for 0.17, the water 'frequency' and 'size' sliders are being replaced with 'scale' and 'coverage',
|
||||||
|
which do the same thing, but in a hopefully more obvious way.
|
||||||
|
Larger scale means larger land features, while more coverage means more of the map covered in water.
|
||||||
|
</p>
|
||||||
|
<h3>New Map Types</h3>
|
||||||
|
<p>
|
||||||
|
In order to ensure a decent starting area, the elevation generator
|
||||||
|
always makes a plateau there (so you'll never spawn in the middle of
|
||||||
|
the ocean), and a lake (so you can get a power plant running).
|
||||||
|
Depending on what's going on outside of that plateau, this sometimes resulted in
|
||||||
|
a circular ring of cliffs around the starting point,
|
||||||
|
which looked very artificial, and we wanted to reduce that effect.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In the process of solving that problem I created another custom generator for debugging purposes.
|
||||||
|
This one simply generated that starting area plateau in an endless ocean.
|
||||||
|
I don't actually remember how this was useful for debugging, but at one point I directed Twinsen to look at it
|
||||||
|
to illustrate the mechanics behind generating the starting area.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The rest of the team liked that setting so much that we're making it a player-selectable option.
|
||||||
|
So in 0.17 you'll get to pick between the 'Normal' map type, which resembles that from 0.12,
|
||||||
|
and 'Island', which gives you a single large-ish island at the starting point.
|
||||||
|
There's a slider to let you change the size of the island(s).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-island.png" width="900" height="900">
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Maps with multiple starting points will have multiple islands.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-islands.png" width="900" height="900">
|
||||||
|
<br><i>PvP islands!</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
And speaking of scale sliders, we're expanding their range from ± a factor of 2 (the old 'very low' to 'very high' settings)
|
||||||
|
to ± a factor of 6 (shown as '17%' to '600%'). Previously the values were stored internally as one of 5 discrete options,
|
||||||
|
but as the recent terrain generation changes have made actual numeric multipliers more meaningful in most contexts
|
||||||
|
(e.g. the number of ore patches is directly proportional to the value of the 'frequency' slider,
|
||||||
|
rather than being just vaguely related to it somehow),
|
||||||
|
we're switching to storing them as numbers.
|
||||||
|
This has the side-effect that if you don't mind
|
||||||
|
<a href="https://gist.github.com/Bilka2/a17841d0ff1028b63c60c2bbf6fa7e4f" target="_blank">editing some JSON</a>,
|
||||||
|
you'll be able to create maps with values outside the range provided by the GUI sliders.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mods will be able to add their own 'map types' to the map type drop-down, too. If you really liked the shape of landmasses in 0.16 and want to be able to continue creating new maps with it, please let us know on the forum.
|
||||||
|
</p>
|
||||||
|
<h2>High-res accumulators <span size="2">(Ernestas, Albert)</span>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator.gif">
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The design of the accumulator has been always good. The 4 very visible cylinders, looking like giant batteries, Tesla poles and the electric beams perfectly telegraphed its function in terms of style and readability. That’s why for the high-res conversion we were very careful about keeping this entity as it was.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The only thing that was a bit disturbing (for some) are the poles crossing to each other when more than one accumulator is placed in a row. So we decided to fix it (or break it). The rest of the work was making the entity compatible for the actual look of the game. But in essence accumulators are still the same.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator-comparison.png" width="900px">
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As always, let us know what you think on our <a href="https://forums.factorio.com/64912" target="_blank">forum</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
</div></article>
|
740
resources/tests/readability/keep-tabular-data/source.html
Normal file
740
resources/tests/readability/keep-tabular-data/source.html
Normal file
|
@ -0,0 +1,740 @@
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Friday Facts #282 - 0.17 in sight | Factorio</title>
|
||||||
|
<meta property="og:title" content="Friday Facts #282 - 0.17 in sight | Factorio" />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:image" content="http://www.factorio.com/static/img/factorio-wheel.png" />
|
||||||
|
<meta property="og:site_name" content="Factorio.com" />
|
||||||
|
<link href="/static/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||||
|
<link href="/static/img/favicon.ico" rel="shortcut icon" type="image/x-icon" />
|
||||||
|
<link href="/static/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/static/css/bootstrap-responsive.min.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/static/css/factorio.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/static/lightbox/css/lightbox.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link href="/blog/rss" rel="alternate" title="Recent Blog Posts" type="application/atom+xml" />
|
||||||
|
<meta name="viewport" content="width=device-width" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="background: rgb(22, 22, 22) url(/static/img/stressed_linen_texture.png) repeat 0 0;">
|
||||||
|
<div class="container header" style="margin-top: 30px;">
|
||||||
|
<!-- top row -->
|
||||||
|
<div class="row" style="margin-bottom: 30px;">
|
||||||
|
<div class="span4">
|
||||||
|
<a href="/"><img src="/static/img/factorio-logo.png" style="margin-top: 10px;" /></a>
|
||||||
|
</div>
|
||||||
|
<div class="span8 span8-navbar" style="margin-top: 10px;">
|
||||||
|
<div class="user-controls">
|
||||||
|
<a href="/login">log in</a>
|
||||||
|
<a href="/signup">sign up</a>
|
||||||
|
</div>
|
||||||
|
<div class="navbar">
|
||||||
|
<ul class="nav">
|
||||||
|
<li>
|
||||||
|
<a href="/"> Home </a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/store" style="color: #ff7200;"> Merch </a>
|
||||||
|
</li>
|
||||||
|
<li class="custom-dropdown">
|
||||||
|
<a class="custom-dropdown-toggle" data-toggle="dropdown" href="/game-overview" role="button">
|
||||||
|
Game
|
||||||
|
</a>
|
||||||
|
<ul class="custom-dropdown-menu" role="menu">
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/starter-page">
|
||||||
|
Starter Page
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/screenshots">
|
||||||
|
Screenshots
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/videos">
|
||||||
|
Videos
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/content">
|
||||||
|
Content
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/modding">
|
||||||
|
Modding
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/team">
|
||||||
|
Team
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="custom-dropdown">
|
||||||
|
<a class="custom-dropdown-toggle" data-toggle="dropdown" href="/support-overview" role="button">
|
||||||
|
Support
|
||||||
|
</a>
|
||||||
|
<ul class="custom-dropdown-menu" role="menu">
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/help">
|
||||||
|
Help
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/faq">
|
||||||
|
FAQ
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/press-and-youtube">
|
||||||
|
Press and Youtube
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/community">
|
||||||
|
Community
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/partners">
|
||||||
|
Partners
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li role="presentation">
|
||||||
|
<a href="/credits">
|
||||||
|
Credits
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://forums.factorio.com/"> Forums </a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/contact"> Contact </a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="container">
|
||||||
|
<noscript>
|
||||||
|
<div class="alert alert-block alert-error" style="font-weight: bold; ">
|
||||||
|
Javascript is required for proper functioning of these web pages.
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
<div class="row">
|
||||||
|
<div class="span12 blog-post">
|
||||||
|
<h2 style="margin-top: 20px; margin-bottom:5px;">
|
||||||
|
Friday Facts #282 - 0.17 in sight
|
||||||
|
</h2>
|
||||||
|
<div style="font-size: 11px;">Posted by kovarex, TOGos, Ernestas, Albert on 2019-02-15, <a href="/blog/">all posts</a></div>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
<h2>The release plan <font size="2">(kovarex)</font>
|
||||||
|
</h2>
|
||||||
|
<p>This week was the time to close and finish all the things that will go to 0.17.0.</p>
|
||||||
|
<p>Not all of the things that we originally planned to be done were done (surprise), but we just left any non-essential stuff for later so we won't postpone the release any further. The plan is, that next week will be dedicated to the office playtesting and bugfixing. Many would argue, that we could just release instantly and let the players find the bugs for us, but we want to fix the most obvious problems in-house to avoid too many duplicate bug reports and chaos after the release. Also, some potential bugs, like save corruptions, are much more easily worked on in-house.</p>
|
||||||
|
<p>
|
||||||
|
If the playtesting goes well, we will let you know next Friday, and if it is the case, we will aim to release the week starting 25th February.
|
||||||
|
</p>
|
||||||
|
<h3>After release plan</h3>
|
||||||
|
<p>
|
||||||
|
Since there are a lot of things we would like to do before we can call 0.17 good enough, we will simply push new things into the 0.17 releases as time goes on. Even if 0.17 becomes stable in a reasonable time, we would still push things on top of it. We can still make experimental/stable version numbers inside 0.17. Most of the things shouldn't be big enough to make the game generally unstable. I've heard countless times a proposal to make small frequent releases of what have we added, this will probably be reality after 0.17 for some time.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The smaller releases will contain mainly:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>Final looks and behaviour of new GUI screens as they will be finished.</li>
|
||||||
|
<li>New graphics.</li>
|
||||||
|
<li>New sounds and sound system tweaks.</li>
|
||||||
|
<li>Mini tutorial additions and tweaks.</li>
|
||||||
|
</ul>
|
||||||
|
<p></p>
|
||||||
|
<p>
|
||||||
|
This is actually quite a large change to our procedures, and there are many ways we will be trying to maximize the effectiveness of smaller and more regular content updates.
|
||||||
|
</p>
|
||||||
|
<h2>The GUI progress <font size="2">(kovarex)</font>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
There are several GUI screens that are finished. Others (most of them) are just left there as they are in 0.16. They are a combination of the new GUI styles and old ones. They sometimes look funny and out of place, but they should be functional.
|
||||||
|
</p>
|
||||||
|
<style>
|
||||||
|
.header_cell {
|
||||||
|
text-align:center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.finished {
|
||||||
|
text-align:center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.not_finished {
|
||||||
|
text-align:center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.finished_gui_table {
|
||||||
|
border-spacing: 10px;
|
||||||
|
border-collapse: collapse;
|
||||||
|
max-width: 900px;
|
||||||
|
}
|
||||||
|
.finished_gui_table td {
|
||||||
|
border: 1px;
|
||||||
|
border-style:solid;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<table class="finished_gui_table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td class="header_cell">General UX</td>
|
||||||
|
<td class="header_cell">UX draft</td>
|
||||||
|
<td class="header_cell">UX review</td>
|
||||||
|
<td class="header_cell">UI mockup</td>
|
||||||
|
<td class="header_cell">UI review</td>
|
||||||
|
<td class="header_cell">Implementation draft</td>
|
||||||
|
<td class="header_cell">Implementation review</td>
|
||||||
|
<td class="header_cell">Final review</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Load map</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Save map</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Graphics settings</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Control settings</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Sound settings</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Interface settings</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Other settings</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Map generator</td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Quick bar <i><b>Twinsen</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Train GUI <i><b>kovarex</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Technology GUI<i> <b>Oxyd</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Technology tooltip <i><b>Oxyd</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Blueprint library<i> <b>kovarex</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Shortcut bar <i><b>Oxyd</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Character screen <i><b>Dominik</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Help overlay <i><b>kovarex</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Manage/Install mods <i><b>Rseding</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Recipe/item/Entity tooltip <i><b>Twinsen</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Chat icon selector <i><b>?</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>New game <i><b>?</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Menu structure <i><b>?</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Main screen chat <i><b>?</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-282-newly-finished.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Recipe explorer <i><b>?</b></i></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
<td class="not_finished"><img src="https://cdn.factorio.com/assets/img/blog/fff-277-not-finished-2.png" width="20px" /></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<i>* Newly finished things since the last update in <a href="https://www.factorio.com/blog/post/fff-277">FFF-277</a>.</i>
|
||||||
|
<h3>Blueprint library</h3>
|
||||||
|
<p>
|
||||||
|
The blueprint library changes have been split into several steps. The reason is, that there was a big motivation to do the integration with the new quickbar (final version introduced in <a href="https://www.factorio.com/blog/post/fff-278">FFF-278</a>) in time for 0.17.0, while the other changes can be done after. The thing with the quickbar is, that it is quite a big change to one of the most used tools in the game and people generally don't like change even when it is for the better. To minimize the hate of the change, we need to "sell it properly". By that, we should provide as many of the positive aspects of the new quickbar at the time of its introduction.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So the change that is already implemented and working for 0.17 is the ability to put blueprints/books into the quick bar in a way that the quick bar is linked directly to the blueprint library window, so you don't need to have the physical blueprint items in your inventory. The other change is, that picking a blueprint from the blueprint library and then pressing Q will just dismiss it, instead of silently pushing it to your inventory. This works the same as the clipboard described in <a href="https://www.factorio.com/blog/post/fff-255">FFF-255</a>. You can still explicitly insert the blueprint from the library to an inventory slot, but if you just pick it, use it, and press Q, it goes away.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In addition to this, other changes related to the blueprint library will follow soon after 0.17.0. The first thing is the change of how the GUI looks:
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-grid-view.png" width="900px" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We will also allow to switch between grid and list view. It mainly provides a way to nicely see the longer names of the blueprint. We noticed that players try to put a large amount of info about a blueprint in its name, so we are planning to add a possibility to write a textual description of the blueprint.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-library-list-view.png" width="900px" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The last big change is to allow to put blueprint books into blueprint books, allowing better organisation. Basically like a directory structure. Whenever a blueprint/book is opened, we plan to show its current location, so the player knows exactly what is going on.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-blueprint-book.png" width="900px" />
|
||||||
|
</p>
|
||||||
|
<h3>The hand</h3>
|
||||||
|
<p>
|
||||||
|
Has it ever happened to you, that you have robots trying to put things into your full inventory, while you pick an item from it to build something, and then you just can't put it back, as the diligent robots just filled the last slot in your inventory by whatever they are trying to give to you? Wood from tree removal is the most frequent thing in my case.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This was annoying in 0.16 from time to time, but with the new quickbar, it started to happen even more, as now, you have only one inventory, and no reserved slots in the quickbar. To solve that, we just extended the "principal" of the hand. When you pick something from the inventory, the hand icon appears on the slot. As long as you hold the thing in your cursor, the hand stays there, and prevents other things from being inserted there. This way, you should always be able to return the currently selected item into your inventory as long as you didn't get it from external source like a chest.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img style="vertical-align: top;" src="https://cdn.factorio.com/assets/img/blog/fff-282-the-hand.png" width="900px" /><br />
|
||||||
|
<i>The hand is protecting the slot from the robots.</i>
|
||||||
|
</p>
|
||||||
|
<h2>Terrain generation updates <font size="2">(TOGoS)</font>
|
||||||
|
</h2>
|
||||||
|
<p>Everyone has different opinions about what makes a good Factorio world.
|
||||||
|
I've been working on several changes for 0.17, but the overarching theme
|
||||||
|
has been to make the map generator options screen more intuitive
|
||||||
|
and more powerful.</p>
|
||||||
|
<p>
|
||||||
|
This was talked about somewhat in an earlier FFF (<a href="https://www.factorio.com/blog/post/fff-258">FFF-258</a>) regarding ore placement,
|
||||||
|
but since then we found more stuff to fix.
|
||||||
|
</p>
|
||||||
|
<h3>Biter Bases</h3>
|
||||||
|
<p>
|
||||||
|
In 0.16, the size control for biter bases didn't have much effect.
|
||||||
|
The frequency control changed the frequency, but that also decreased the size of bases,
|
||||||
|
which <a href="https://forums.factorio.com/viewtopic.php?t=55113">wasn't generally what people wanted</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
For 0.17 we've reworked biter placement using a system similar to that with which we got resource placement under control. The size and frequency controls now act more like most people would expect, with frequency increasing the number of bases, and size changing the size of each base.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-enemy-bases.gif" />
|
||||||
|
<br /><i>New preview UI showing the effects of enemy base controls.
|
||||||
|
In reality the preview takes a couple seconds to regenerate after every change,
|
||||||
|
but the regeneration part is skipped in this animation to clearly show the effects of the controls.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you don't like the relatively uniform-across-the-world placement of biters,
|
||||||
|
there are changes under the hood to make it easier for modders to do something different.
|
||||||
|
Placement is now based on <a href="https://wiki.factorio.com/Prototype/NamedNoiseExpression">NamedNoiseExpressions</a> "enemy-base-frequency" and "enemy-base-radius", which in turn reference "enemy-base-intensity".
|
||||||
|
By overriding any of those, a modder could easily create a map where biters are found only at high elevations,
|
||||||
|
or only near water, or correlate enemy placement with that of resources, or any other thing
|
||||||
|
that can be expressed as a function of location.
|
||||||
|
</p>
|
||||||
|
<h3>Cliffs</h3>
|
||||||
|
<p>
|
||||||
|
We've added a 'continuity' control for cliffs. If you really
|
||||||
|
like mazes of cliffs, set it to high to reduce the number of gaps in cliff faces.
|
||||||
|
Or you can turn it way down to make cliffs very rare or be completely absent.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-cliff-controls.gif" />
|
||||||
|
<br /><i>Changing cliff frequency and continuity. Since cliffs are based on elevation,
|
||||||
|
you'll have to turn frequency <strong>way</strong> up if you want lots of layers
|
||||||
|
even near the starting lake.</i>
|
||||||
|
</p>
|
||||||
|
<h3>Biome Debugging</h3>
|
||||||
|
<p>
|
||||||
|
Tile placement is based on a range of humidity and 'aux' values
|
||||||
|
(humidity and aux being properties that vary at different points across the world)
|
||||||
|
that are suitable for each type of tile. For example: grass is only placed in
|
||||||
|
places with relatively high humidity, and desert (not to be confused with plain old sand)
|
||||||
|
only gets placed where aux is high. We've taken to calling these constraints 'rectangles',
|
||||||
|
because when you plot each tile's home turf on a chart of humidity and aux,
|
||||||
|
they are shown as rectangles.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It's hard to make sense of the rectangles just by looking at the autoplace code
|
||||||
|
for each tile, so I wrote a script to chart them. This allowed us to ensure that
|
||||||
|
they were arranged as we wanted, with no gaps between them,
|
||||||
|
and with overlap in some cases.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-rectangles.png" width="900" height="900" />
|
||||||
|
<br /><i>Rectangles.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Having the humidity-aux-tile chart is all well and good, but doesn't tell the whole story,
|
||||||
|
since tile placement also depends on a noise layer specific to each tile type,
|
||||||
|
and could also influenced by user-adjustable autoplace controls (e.g. turning the grass slider up).
|
||||||
|
So to further help us visualize how humidity, aux, tile-specific noise, and
|
||||||
|
autoplace controls worked together to determine tiles on the map,
|
||||||
|
there are a couple of alternate humidity and aux generators that simply vary them
|
||||||
|
linearly from north-south and west-east, respectively.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-debug-map.png" width="900" height="900" />
|
||||||
|
<br /><i>Using 'debug-moisture' and 'debug-aux' generators to drive moisture and aux, respectively.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
This map helped us realize that, rather than having controls
|
||||||
|
for each different type of tile, it made more sense to just
|
||||||
|
control moisture and aux (which is called 'terrain type' in the GUI,
|
||||||
|
because 'aux' doesn't mean anything).
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-moisture+aux-controls.gif" width="900" height="664" />
|
||||||
|
<br /><i>Sliding the moisture and aux bias sliders to make the world more or less grassy or red-deserty.</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
A pet project of mine has been to
|
||||||
|
put controls in the map generator GUI so that we could select generators
|
||||||
|
for various tile properties (temperature, aux, humidity, elevation, etc) at
|
||||||
|
map-creation time without necessarily needing to involve mods.
|
||||||
|
This was useful for debugging the biome rectangles, but my ulterior
|
||||||
|
motive was to, at least in cases where there are multiple options,
|
||||||
|
show the generator information to players. A couple of reasons for
|
||||||
|
this:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>It was already possible for mods to override tile property generators via presets, but
|
||||||
|
we didn't have a place to show that information in the UI.
|
||||||
|
So switching between presets could change hidden variables in non-obvious ways
|
||||||
|
and lead to a lot of confusion.</li>
|
||||||
|
<li>I had dreams of shipping alternate elevation generators in the base game.</li>
|
||||||
|
</ul>
|
||||||
|
<h3>Water Placement</h3>
|
||||||
|
<p>
|
||||||
|
For 0.16 I <a href="https://www.factorio.com/blog/post/fff-207">attempted to make the shape of continents more interesting</a>. Some people <a href="https://www.reddit.com/r/factorio/comments/7n3mn1/016_swamplands_are_pure_awesome/">really liked</a> the <a href="https://www.youtube.com/watch?v=-pkwTjG-sJg">new terrain</a>, or at least <a href="https://www.reddit.com/r/factorio/comments/7krq86/question_about_water_generation_in_016/">managed to find some settings that made it work</a> for them. Others called it a "swampy mess". A common refrain was that the world was more fun to explore in the 0.12 days.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
So in 0.17 we're restoring the <em>default</em> elevation generator to one very similar to that used
|
||||||
|
by 0.12. Which means large, sometimes-connected lakes.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The water 'frequency' control was confusing to a lot of people including myself.
|
||||||
|
It could be interpreted as "how much water", when the actual effect was to inversely
|
||||||
|
scale both bodies of water and continents, such that higher water frequency actually meant smaller bodies of water.
|
||||||
|
So for 0.17, the water 'frequency' and 'size' sliders are being replaced with 'scale' and 'coverage',
|
||||||
|
which do the same thing, but in a hopefully more obvious way.
|
||||||
|
Larger scale means larger land features, while more coverage means more of the map covered in water.
|
||||||
|
</p>
|
||||||
|
<h3>New Map Types</h3>
|
||||||
|
<p>
|
||||||
|
In order to ensure a decent starting area, the elevation generator
|
||||||
|
always makes a plateau there (so you'll never spawn in the middle of
|
||||||
|
the ocean), and a lake (so you can get a power plant running).
|
||||||
|
Depending on what's going on outside of that plateau, this sometimes resulted in
|
||||||
|
a circular ring of cliffs around the starting point,
|
||||||
|
which looked very artificial, and we wanted to reduce that effect.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In the process of solving that problem I created another custom generator for debugging purposes.
|
||||||
|
This one simply generated that starting area plateau in an endless ocean.
|
||||||
|
I don't actually remember how this was useful for debugging, but at one point I directed Twinsen to look at it
|
||||||
|
to illustrate the mechanics behind generating the starting area.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The rest of the team liked that setting so much that we're making it a player-selectable option.
|
||||||
|
So in 0.17 you'll get to pick between the 'Normal' map type, which resembles that from 0.12,
|
||||||
|
and 'Island', which gives you a single large-ish island at the starting point.
|
||||||
|
There's a slider to let you change the size of the island(s).
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-island.png" width="900" height="900" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Maps with multiple starting points will have multiple islands.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-islands.png" width="900" height="900" />
|
||||||
|
<br /><i>PvP islands!</i>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
And speaking of scale sliders, we're expanding their range from ± a factor of 2 (the old 'very low' to 'very high' settings)
|
||||||
|
to ± a factor of 6 (shown as '17%' to '600%'). Previously the values were stored internally as one of 5 discrete options,
|
||||||
|
but as the recent terrain generation changes have made actual numeric multipliers more meaningful in most contexts
|
||||||
|
(e.g. the number of ore patches is directly proportional to the value of the 'frequency' slider,
|
||||||
|
rather than being just vaguely related to it somehow),
|
||||||
|
we're switching to storing them as numbers.
|
||||||
|
This has the side-effect that if you don't mind
|
||||||
|
<a href="https://gist.github.com/Bilka2/a17841d0ff1028b63c60c2bbf6fa7e4f">editing some JSON</a>,
|
||||||
|
you'll be able to create maps with values outside the range provided by the GUI sliders.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Mods will be able to add their own 'map types' to the map type drop-down, too. If you really liked the shape of landmasses in 0.16 and want to be able to continue creating new maps with it, please let us know on the forum.
|
||||||
|
</p>
|
||||||
|
<h2>High-res accumulators <font size="2">(Ernestas, Albert)</font>
|
||||||
|
</h2>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator.gif" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The design of the accumulator has been always good. The 4 very visible cylinders, looking like giant batteries, Tesla poles and the electric beams perfectly telegraphed its function in terms of style and readability. That’s why for the high-res conversion we were very careful about keeping this entity as it was.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
The only thing that was a bit disturbing (for some) are the poles crossing to each other when more than one accumulator is placed in a row. So we decided to fix it (or break it). The rest of the work was making the entity compatible for the actual look of the game. But in essence accumulators are still the same.
|
||||||
|
</p>
|
||||||
|
<p style="text-align: center; margin:auto; margin-top:20px; margin-bottom:20px;">
|
||||||
|
<img src="https://cdn.factorio.com/assets/img/blog/fff-282-accumulator-comparison.png" width="900px" />
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
As always, let us know what you think on our <a href="https://forums.factorio.com/64912">forum</a>.
|
||||||
|
</p>
|
||||||
|
<p></p>
|
||||||
|
<div class="footer">
|
||||||
|
<div class="footer-copyright">
|
||||||
|
Copyright © 2015 - 2019 Wube Software - all rights reserved.
|
||||||
|
</div>
|
||||||
|
<div class="footer-menu">
|
||||||
|
<a href="/terms-of-service" style="font-size: 11px;"> Terms of Service </a>
|
||||||
|
<span style="font-size: 11px;"> | </span>
|
||||||
|
<a href="/privacy-policy" style="font-size: 11px;"> Privacy </a>
|
||||||
|
<span style="font-size: 11px;"> | </span>
|
||||||
|
<a href="/imprint" style="font-size: 11px;"> Imprint </a>
|
||||||
|
<span style="font-size: 11px;"> | </span>
|
||||||
|
<a href="/presskit" style="font-size: 11px;"> Presskit </a>
|
||||||
|
<span style="font-size: 11px;"> | </span>
|
||||||
|
<a href="/faq" style="font-size: 11px;"> FAQ </a>
|
||||||
|
<span style="font-size: 11px;"> | </span>
|
||||||
|
<a href="/blog/rss" style="font-size: 11px;"> RSS </a>
|
||||||
|
<span style="font-size: 11px;"> | </span>
|
||||||
|
<a href="/jobs" style="font-size: 11px;">
|
||||||
|
Jobs
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" async="" src="https://ssl.google-analytics.com/ga.js"></script>
|
||||||
|
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
|
||||||
|
<script src="/static/js/raphael-min.js" type="text/javascript"></script>
|
||||||
|
<script src="/static/js/factorio.min.js" type="text/javascript"></script>
|
||||||
|
<script src="/static/lightbox/js/lightbox.min.js" type="text/javascript"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var _gaq = _gaq || [];
|
||||||
|
_gaq.push(['_setAccount', 'UA-115167276-1']);
|
||||||
|
_gaq.push(['_trackPageview']);
|
||||||
|
(function() {
|
||||||
|
var ga = document.createElement('script');
|
||||||
|
ga.type = 'text/javascript';
|
||||||
|
ga.async = true;
|
||||||
|
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||||
|
var s = document.getElementsByTagName('script')[0];
|
||||||
|
s.parentNode.insertBefore(ga, s);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="lightboxOverlay" class="lightboxOverlay" style="display: none;"></div>
|
||||||
|
<div id="lightbox" class="lightbox" style="display: none;">
|
||||||
|
<div class="lb-outerContainer">
|
||||||
|
<div class="lb-container"><img class="lb-image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" />
|
||||||
|
<div class="lb-nav"><a class="lb-prev" href=""></a><a class="lb-next" href=""></a></div>
|
||||||
|
<div class="lb-loader"><a class="lb-cancel"></a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="lb-dataContainer">
|
||||||
|
<div class="lb-data">
|
||||||
|
<div class="lb-details"><span class="lb-caption"></span><span class="lb-number"></span></div>
|
||||||
|
<div class="lb-closeContainer"><a class="lb-close"></a></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
|
@ -535,9 +535,11 @@ impl FullTextParser {
|
||||||
if let Some(mut parent) = node.get_parent() {
|
if let Some(mut parent) = node.get_parent() {
|
||||||
let new_node = if child_count == 1 && first_child_is_text {
|
let new_node = if child_count == 1 && first_child_is_text {
|
||||||
let link_content = node.get_content();
|
let link_content = node.get_content();
|
||||||
Node::new_text(&link_content, document).expect("Failed to create new text node")
|
Node::new_text(&link_content, document)
|
||||||
|
.expect("Failed to create new text node")
|
||||||
} else {
|
} else {
|
||||||
let mut container = Node::new("span", None, document).expect("Failed to create new span container node");
|
let mut container = Node::new("span", None, document)
|
||||||
|
.expect("Failed to create new span container node");
|
||||||
for mut child in child_nodes.drain(..) {
|
for mut child in child_nodes.drain(..) {
|
||||||
child.unlink();
|
child.unlink();
|
||||||
_ = container.add_child(&mut child);
|
_ = container.add_child(&mut child);
|
||||||
|
|
|
@ -576,7 +576,7 @@ impl Readability {
|
||||||
let text = Util::get_inner_text(&article_content, true);
|
let text = Util::get_inner_text(&article_content, true);
|
||||||
let text_length = text.len();
|
let text_length = text.len();
|
||||||
|
|
||||||
//Util::serialize_node(&article_content, "debug.html");
|
//Util::serialize_node(&article_content, "dbg.html");
|
||||||
|
|
||||||
if text_length < constants::DEFAULT_CHAR_THRESHOLD {
|
if text_length < constants::DEFAULT_CHAR_THRESHOLD {
|
||||||
parse_successful = false;
|
parse_successful = false;
|
||||||
|
|
|
@ -257,6 +257,16 @@ async fn js_link_replacement() {
|
||||||
run_test("js-link-replacement").await
|
run_test("js-link-replacement").await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn keep_images() {
|
||||||
|
run_test("keep-images").await
|
||||||
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn keep_tabular_data() {
|
||||||
|
run_test("keep-tabular-data").await
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn webmd_1() {
|
async fn webmd_1() {
|
||||||
run_test("webmd-1").await
|
run_test("webmd-1").await
|
||||||
|
|
|
@ -358,7 +358,7 @@ impl Util {
|
||||||
None => return false,
|
None => return false,
|
||||||
};
|
};
|
||||||
|
|
||||||
if tmp_node.get_name() == tag_name
|
if tmp_node.get_name().to_uppercase() == tag_name
|
||||||
&& filter
|
&& filter
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|filter| filter(&tmp_node))
|
.map(|filter| filter(&tmp_node))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue