trashmonks / qud-wiki Goto Github PK
View Code? Open in Web Editor NEWDesktop app for creating and updating the official Caves of Qud wiki
Home Page: https://wiki.cavesofqud.com/
License: GNU Affero General Public License v3.0
Desktop app for creating and updating the official Caves of Qud wiki
Home Page: https://wiki.cavesofqud.com/
License: GNU Affero General Public License v3.0
https://cavesofqud.gamepedia.com/Gun_rack
Not uploading: page exists but format not recognized
Should investigate why and fix whatever's blocking the upload.
I have to manually edit some pages because {{ID to page|Human Corpse}}
and Human Corpse
are equivalent in QBE despite difference in formatting
we can use this for this section in order to provide a dynamically compiled comprehensive list of all water ritual skills, rather than just the faction ones
(special consideration is also due to neelahind, who gains the ritualable flag dynamically)
Currently, this seems to be affecting:
Glow-Wight Cultist of Agolgut
Glow-Wight Shepherd of Agolgut
Cannibal
Svenlainard
Additionally, in my brief look through the creatures in QBE, it seems that these 4 are the only ones who have =article= included in the descriptions QBE outputs for them.
Weapons can have an ElementalDamage
attribute which applies additional elemental damage to the target on hit (regardless of penetration), similar to elemental mods. We don't currently extract this data to the wiki.
Some creatures apply damage exclusively in this way, including Haggabah (whose weapon currently shows as doing 0 damage on the wiki). In other cases, weapons do both regular damage and ElementalDamage, like the Chrome Pyramid's distortion field.
I believe some inventoryobjects have a specified chance to be present in the character's inventory. For example, Trash Monk doesn't always have an electrobow, but we don't currently export the % chance to the wiki.
In the title of articles, QBE needs to add a space between multiple instances of qud shader
.
For example, this affects "crysteel long sword" and makes it appear as "crysteellong sword" on the wiki.
DisplayName="{{K|{{crysteel|crysteel}} long sword}}"
| title = {{Qud text|{{Qud shader|crysteel|crysteel}}{{Qud shader|K| long sword}}}}
long sword
template parameter with this output, so it won't work.| title = {{Qud text|{{Qud shader|crysteel|crysteel}} {{Qud shader|K|long sword}}}}
some are characters and some are not. for example, lah blooms are items (?) although they certainly have combat abilities. to be fair the item/character dichotomy was not great in the first place but they should be more consistent. i propose that characters match what i put in ALL_CHARS (has physics, nontakeable, and also is not a gas).
We should include the full game filepath with tiles we upload to the wiki.
Context:
https://discord.com/channels/214532333900922882/482714670860468234/952725451267264512
It would be nice to load the "Seeping" property for the Gas
part and add it to the Gas wiki template. This property controls whether gas can pass through walls or other solid objects.
qudobject
has gotten too long and we should refactor it (as @syntaxaire previously pointed out).
I'm not 100% sure the best way to refactor, being less experienced with python. Some internet searches seem to suggest there are multiple ways to handle splitting up a class across more than one file (making the class inherit from other classes, import methods into the class, create subclasses, etc.) and I'm not sure which method should be preferred.
Thematically we could likely split qudobject
into smaller modules such as qudobject_character
, qudobject_weapon
/qudobject_item
, or similar.
i'd like to upload basically a true or false value to the wiki for each item (and possibly other types of things if relevant) stating whether they're organic
This is perhaps an issue with {{CookEffect ID to name}}, as QBE correctly displays the cooking effect in QBE itself.
For example, spine fruit jam has "| cookeffect = {{CookEffect ID to name|reflect}}" in the template it exports to the wiki, but the cooking effect still shows up as "no results" on the actual wiki.
HitBonus isn't currently being included with Items (from the MeleeWeapon
part). For example, Amber-Tipped Staff has +1 to hit. Many natural weapons of creatures also have this property, such as the Chrome Pyramid's distortion field, which has +10 HitBonus.
Creatures have a dictionary labeled skill
that contains all of their skills. however, self.skill
is the name of a method that returns the skill used for a weapon. The method (and the variable name that's returned) should be probably be renamed.
Things such as inventory Blueprint="" or mutation Name="", skill Name="" in creatures will only have one of each type of these show up in the property list
After doing a mass upload the other day, noticed the following minor issues that should be resolved:
Overall there were many improvements and very few things wrong from what I spot checked.
Mostly likely an issue with escapeampersands, but the scoped masterwork carbine contains the mark of Sparafucile (the mars symbol) using the character sequence 
. However, the output in QBE completely erases it. We should probably find some way to separate it out of the Mark string and properly pass it into cp437_to_unicode
I'm writing this here since it I can't seem to figure it out right now, since there's nothing really different about the sparbine other than it having its article title overwritten
Simply clicking on natural weapons like Sawhander_Saw
(and stuff around it) raises a NoneType
exception that gets printed to the console. There seems to be some issue retrieving the qud_object
for these items inside tree_selection_handler
even though similar code works without error in wiki_check_selected
.
There's a Flyover
tag on some objects that indicates the player can fly over them. One example is Debris. Would be good to export this to the wiki to show as Extra data on the object.
Might also be worth exporting similar intproperty AllowMissiles
(which I think allows you to shoot over it, though I haven't verified that)
Luminous Hoarshroom appears with black coloration on the wiki, but it should probably have Y
set as its detail color instead. This coloration appears to be controlled in game by the AnimatedMaterialLuminous
part.
I assume we could do something similar to what we have done for holographic item tile coloration.
Have been encountering this issue fairly frequently as of late. Seems to have started after the UCP transition, maybe?
It seems easy to reproduce - upload 20 or 30 page templates, and then let QBE sit idle for 20 or 30 minutes. When you come back and try to upload something, you'll often get an error similar to this. I also sometimes run into it even while actively doing things, perhaps there's a page limit before it boots the account or something? Unsure exactly.
It would be nice if QBE could recover from this gracefully and re-log you in without having to restart the client each time it happens.
Traceback (most recent call last):
File "D:\Users\<username>\PycharmProjects\qud-wiki\qbe\explorer.py", line 524, in upload_selected_templates
self.upload_wikidata(self.upload_wiki_template, 'templates')
File "D:\Users\<username>\PycharmProjects\qud-wiki\qbe\explorer.py", line 557, in upload_wikidata
object_handler(qud_object, num)
File "D:\Users\<username>\PycharmProjects\qud-wiki\qbe\explorer.py", line 578, in upload_wiki_template
if page.upload_template() == 'Success':
File "D:\Users\<username>\PycharmProjects\qud-wiki\qbe\wiki_page.py", line 90, in upload_template
result = self.page.save(text=new_text, summary=self.EDITED_SUMMARY)
File "C:\Users\<username>\.virtualenvs\hagadias-C3wQwRSd\lib\site-packages\mwclient\page.py", line 179, in save
return self.edit(*args, **kwargs)
File "C:\Users\<username>\.virtualenvs\hagadias-C3wQwRSd\lib\site-packages\mwclient\page.py", line 184, in edit
return self._edit(summary, minor, bot, section, text=text, **kwargs)
File "C:\Users\<username>\.virtualenvs\hagadias-C3wQwRSd\lib\site-packages\mwclient\page.py", line 200, in _edit
raise mwclient.errors.AssertUserFailedError()
mwclient.errors.AssertUserFailedError: By default, mwclient protects you from accidentally editing without being logged in. If you actually want to edit without logging in, you can set force_login on the Site object to False.
luminous hoarshrooms, all weeps have innate mutations but lack stored ego (due to them being active fungus and not actually creatures). This causes the template to pass "None" into the template, throwing an invisible error that prevents the mutations from being stored into cargo
A long list of the tiles affected can be found by simply running the command to open QBE in your terminal.
The wiki doesn't currently show any info about swarmers, such as the Naphtaali runt.
The save tile then manually uploading the image works around this issue, but would like to see in app support for this
See the page for watervine farmer.
Seemingly, there are several turret types which exist in-game as the product of a specific, corresponding turret tinker, but do not show up in ObjectBlueprints.xml, and thus do not have a corresponding page on the wiki. Specifically, these are:
Dynamic turret tinkers throw another wrench into this, as they can create a turret from any ranged weapon, almost none of which have a corresponding wiki page, as they do not show up in ObjectBlueprints.xml.
For some reason, "MerchantAdvertisement" image seems to upload as a weird/empty image: https://wiki.cavesofqud.com/wiki/File:Advertisement_for_legendary_merchant.png
Not sure why this is, but crypto shows this tile fine, so I'm guessing it's something we're doing strange in the QBE upload process?
My pipe dream: folks can go to wiki pages like any of the following and click an "Equip" or "Start scanning..." button that toggles a preference setting on the wiki...
...After doing that, you can go to other wiki pages and those pages will show their scanning status details in the description of the page. So for example, if I go to VISAGE and click "Equip this item in the wikiverse", and then I go visit Blood-gradient hand vacuum, I will see the following additional details included in the Description box at the top of the page, which weren't visible before:
Right now this causes every vibro weapon to show PV (unpowered): 4/4
on the wiki, but I don't think that's accurate.
This currently prevents all ranged weapons from displaying damage, and QBE needs to be able to cross reference with the specified TemporaryProjectile in part_EnergyAmmoLoader_ProjectileObject/part_MagazineAmmoLoader_ProjectileObject/part_LiquidAmmoLoader_ProjectileObject
Add the ability to create a new object that inherits from a parent object.
Add the ability to save modifications to the object tree to XML.
Add a new object view, the tag tree, which has branches for Parts, Tags, Inventory objects and so on.
When loading the game tree, store all parts and attributes that we encounter, so that a modder can browse available parts or part attributes while adding them to a new or existing object.
https://cavesofqud.gamepedia.com/index.php?title=Hulk_honey_injector&diff=14894&oldid=14781 Regex probably needs to be updated to only replace the As Of Patch and not post the html tags if detected.
For example, Goatfolk Sower has an ego value of 7+1d3+3d2-1+1
, which expands out to a range of 11-16. However, roll_average
calculates this as having an average of 11.
Basically, the infobox capitalizes all the words in a title, while pages only capitalize the first.
For example, Vantabloom links to "Vanta Petals" not "Vanta petals", and thus the link does not go anywhere.
We should use OAuth login for QBE, because it's recommend and more secure than "Old-school login":
This might require setting up our bot accounts slightly differently from the looks of it:
Came across this while investigating the fact that QBE seems to be fairly agressively rate limited to about 30 pages per minute, we think it might be related to the login method. According to this mediawiki page on rate limiting, using OAuth tokens with the highvolume grant would make it so QBE isn't rate limited.
Example of status quo (QBE gets rate limited every 30 pages):
OrderedDict([('result', 'Success'), ('pageid', 390), ('title', 'Brick'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2028), ('title', 'Metal wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3087), ('title', 'Tarnished chrome'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1885), ('title', 'Machine wall (hot)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3290), ('title', 'Vacuum column tape drive'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1899), ('title', 'Mainframe status panel'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1898), ('title', 'Mainframe monitor'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1897), ('title', 'Mainframe control panel'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2714), ('title', 'Shale'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2639), ('title', 'Sandstone'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1822), ('title', 'Limestone'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1918), ('title', 'Marl'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2572), ('title', 'Rock salt'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1475), ('title', 'Gypsum'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 323), ('title', 'Black shale'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 656), ('title', 'Coral rag'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2253), ('title', 'Oolite'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2715), ('title', 'Shale wall with agate deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2720), ('title', 'Shale wall with topaz deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2718), ('title', 'Shale wall with jasper deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2716), ('title', 'Shale wall with amethyst deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2719), ('title', 'Shale wall with sapphire deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2717), ('title', 'Shale wall with emerald deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2032), ('title', 'Meteorite wall with peridot deposits'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2706), ('title', 'Serpentinite'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2799), ('title', 'Slate'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 423), ('title', 'Burnished azzurum'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2459), ('title', 'Quartzite'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 319), ('title', 'Black marble'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 819), ('title', 'Dirt'), ('contentmodel', 'wikitext'), ('nochange', '')])
Page edit rate-limited. Retrying in 3 seconds...
Page edit rate-limited. Retrying in 6 seconds...
Page edit rate-limited. Retrying in 12 seconds...
Page edit rate-limited. Retrying in 24 seconds...
OrderedDict([('result', 'Success'), ('pageid', 3120), ('title', 'Thatched wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2350), ('title', 'Plant matter'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3400), ('title', 'Weathered wood'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2305), ('title', 'Petal-strewn brinestalk wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1145), ('title', 'Fluted marble column'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1167), ('title', 'Forcefield'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1163), ('title', 'Force barrier'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 10135), ('title', 'Stasis field'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 900), ('title', 'Ebon fulcrete'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2963), ('title', 'Steaming vents'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1232), ('title', 'Fuming vents'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2894), ('title', 'Sparking vents'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2679), ('title', 'Scratched vents'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3165), ('title', 'Ticking vents'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3295), ('title', 'Vents with hexagonal residue'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3297), ('title', 'Vents with moss particulate'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3296), ('title', 'Vents with mold particulate'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1207), ('title', 'Frosted pillar'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1341), ('title', 'Gilded marble from the sultanate (first period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1343), ('title', 'Gilded marble from the sultanate (second period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1344), ('title', 'Gilded marble from the sultanate (third period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1342), ('title', 'Gilded marble from the sultanate (fourth period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1340), ('title', 'Gilded marble from the sultanate (fifth period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1345), ('title', 'Gilded marble from the sultanate of Resheph'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 478), ('title', 'Carved stone from the sultanate (first period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 480), ('title', 'Carved stone from the sultanate (second period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 481), ('title', 'Carved stone from the sultanate (third period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 479), ('title', 'Carved stone from the sultanate (fourth period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 476), ('title', 'Carved stone from the sultanate (fifth period)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 482), ('title', 'Carved stone from the sultanate of Resheph'), ('contentmodel', 'wikitext'), ('nochange', '')])
Page edit rate-limited. Retrying in 3 seconds...
Page edit rate-limited. Retrying in 6 seconds...
Page edit rate-limited. Retrying in 12 seconds...
Page edit rate-limited. Retrying in 24 seconds...
OrderedDict([('result', 'Success'), ('pageid', 477), ('title', 'Carved stone from the sultanate (fifth period, ornate)'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 778), ('title', 'Debris'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1571), ('title', 'Holographic shale'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 211), ('title', 'Basalt'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1916), ('title', 'Marble wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3388), ('title', 'Wax block'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1430), ('title', 'Granite'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3082), ('title', 'Tangled mudroot'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3118), ('title', 'Tetraxenonoglass wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1570), ('title', 'Holographic marble wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1212), ('title', 'Fulcrete'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1149), ('title', 'Foamcrete'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 627), ('title', 'Concrete'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2343), ('title', 'Pigskin wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 396), ('title', 'Brinestalk wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 531), ('title', 'Charred wood'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 395), ('title', 'Brinestalk stakes'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 142), ('title', 'Arrowslit'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 450), ('title', 'Canvas'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3443), ('title', 'Wooden fence'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 3475), ('title', 'Wrought iron fence'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1866), ('title', 'Low wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 393), ('title', 'Brinestalk fence'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2135), ('title', 'Mushroom flesh'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1357), ('title', 'Glass wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2776), ('title', 'Sinister wall'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 557), ('title', 'Chrome plaque'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 1259), ('title', 'Fused security door'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2268), ('title', 'Ornately carved marble'), ('contentmodel', 'wikitext'), ('nochange', '')])
OrderedDict([('result', 'Success'), ('pageid', 2270), ('title', 'Ornately filigreed marble'), ('contentmodel', 'wikitext'), ('nochange', '')])
Page edit rate-limited. Retrying in 3 seconds...
Page edit rate-limited. Retrying in 6 seconds...
Page edit rate-limited. Retrying in 12 seconds...
Page edit rate-limited. Retrying in 24 seconds...
OrderedDict([('result', 'Success'), ('pageid', 2807), ('title', 'Sleep gas grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2808), ('title', 'Sleep gas grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2809), ('title', 'Sleep gas grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2379), ('title', 'Poison gas grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2380), ('title', 'Poison gas grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2381), ('title', 'Poison gas grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3017), ('title', 'Stun gas grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3018), ('title', 'Stun gas grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3019), ('title', 'Stun gas grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 22), ('title', 'Acid gas grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 23), ('title', 'Acid gas grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 24), ('title', 'Acid gas grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1113), ('title', 'Flashbang grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1114), ('title', 'Flashbang grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1115), ('title', 'Flashbang grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3146), ('title', 'Thermal grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3147), ('title', 'Thermal grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3148), ('title', 'Thermal grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1181), ('title', 'Freeze grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1182), ('title', 'Freeze grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1183), ('title', 'Freeze grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1527), ('title', 'High explosive grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1528), ('title', 'High explosive grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1529), ('title', 'High explosive grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 887), ('title', 'EMP grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 888), ('title', 'EMP grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 889), ('title', 'EMP grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2202), ('title', 'Normality gas grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2203), ('title', 'Normality gas grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2204), ('title', 'Normality gas grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
Page edit rate-limited. Retrying in 3 seconds...
Page edit rate-limited. Retrying in 6 seconds...
Page edit rate-limited. Retrying in 12 seconds...
Page edit rate-limited. Retrying in 24 seconds...
OrderedDict([('result', 'Success'), ('pageid', 2944), ('title', 'Stasis grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2945), ('title', 'Stasis grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2946), ('title', 'Stasis grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2545), ('title', 'Resonance grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2546), ('title', 'Resonance grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2547), ('title', 'Resonance grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 788), ('title', 'Defoliant grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 789), ('title', 'Defoliant grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 790), ('title', 'Defoliant grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1247), ('title', 'Fungicide grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1248), ('title', 'Fungicide grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1249), ('title', 'Fungicide grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2920), ('title', 'Spring-turret grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2921), ('title', 'Spring-turret grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2922), ('title', 'Spring-turret grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3169), ('title', 'Time dilation grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3170), ('title', 'Time dilation grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 3171), ('title', 'Time dilation grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1362), ('title', 'Glitter grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1363), ('title', 'Glitter grenade mk II'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1364), ('title', 'Glitter grenade mk III'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2316), ('title', 'Phase shift grenade mk I'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 1487), ('title', 'Hand-E-Nuke'), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 2880), ('title', "Sower's seed"), ('contentmodel', 'wikitext'), ('nochange', ''), ('watched', '')])
OrderedDict([('result', 'Success'), ('pageid', 10495), ('title', 'Mine'), ('contentmodel', 'wikitext'), ('nochange', '')])
It'd be cool if we could eventually show some basic info on the wiki about where particular enemies are able to spawn, and maybe also where an item can be obtained (i.e. dropped from certain enemy).
This would help answer questions like "Where should I hunt for bloated leeches for my fungal cure?" or "What's the best place to look for an electric snail shell?"
A good example is the Sparbine. QBE lists this as Tier 4, which is technically correct. However, for the purposes of adding additional mods, it has an effective tinkering level of 6, because it already has two mods, and the tinkering screen treats it as a Tier 6 item.
I'm not sure if Tier has meaning anywhere else in the game - I confirmed that the game code doesn't actually increase the Tier when you mod something, it just adds Tier + Number_of_Mods when the Tinkering Screen is open to determine which bits you need to use for adding an additional mod.
So I guess my question is:
Attempting to upload carbide dagger with QBE causes a DB error (possibly because there is another cargo storage on the page? Manually updated it myself). This is only a visual bug, since you are still able to do normal functions with the mouse.
The error:
mwclient.errors.APIError: ('internal_api_error_DBTransactionStateError', '[7224e3ea0d47644c7f9849c9] Exception caught: A database query error has occurred. This may indicate a bug in the software.', None)
Nylon Bodypack currently gives no indication of it's carry weight bonus.
part_Armor_CarryBonus
Hologram colors are defined in cs and flicker often, but I think there should at least be an attempt, say to replace the detail color with C and tile color to b. I tried to implement this myself but realized qud tile had no reference to the object and took everything from the init, making it more complicated than I thought.
Thing this affects: Wraith-Knights (although must specifically check for this bc the hologram part is added in code), holographic ivory, holographic beth, Hologram Distraction, hologram of shekinah, HoloMarble
Mostly a project for me later, once I manage to get all the encounter tables on the wiki like dynamicobjectstables. Feels off how *Junk1 and stuff gets removed without any indication it was there.
Currently, if either is not specified, the character template will not show any of these stats. I might work on this later when I have the time. Default DV should probably be 6?
it might make sense for the wiki uploader to add Template:As of Patch
to articles that don't already have one, particularly when the only content on the page is automatically generated.
We already assign [[Category:Trade Goods]]
to trade goods, but I'd like to also export this data as a parameter in the template so that I can do some custom Item
template formatting for trade goods.
Currently QBE just returns the base MA value, which is 0 for just about everything (good example: Elder Irudad). Willpower needs to be factored in. Here's the formula the game uses:
public static int GetCombatMA(GameObject GO)
{
int num = 4;
if (GO.Statistics.ContainsKey("Willpower"))
{
num += GO.Statistics["Willpower"].Modifier;
}
if (GO.Statistics.ContainsKey("MA"))
{
num += GO.Statistics["MA"].Value;
}
return num;
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.