diff --git a/data/manifest.yaml b/data/manifest.yaml
index a49d2b23..0e44a2e8 100644
--- a/data/manifest.yaml
+++ b/data/manifest.yaml
@@ -128564,7 +128564,37 @@ Corpse Mob:
steam:
id: 828460
Corpse Party:
- alias: "Corpse Party: Blood Covered (2016)"
+ files:
+ "/corpseparty.ini":
+ tags:
+ - config
+ when:
+ - os: windows
+ "/save_data":
+ tags:
+ - save
+ when:
+ - os: windows
+ "/userdata//251270/remote":
+ tags:
+ - save
+ when:
+ - store: steam
+ gog:
+ id: 1460712231
+ installDir:
+ Corpse Party: {}
+ launch:
+ "/CorpseParty":
+ - when:
+ - os: linux
+ store: steam
+ "/CorpseParty.exe":
+ - when:
+ - os: windows
+ store: steam
+ steam:
+ id: 251270
Corpse Party (2021):
files:
"/CorpseParty":
@@ -128642,6 +128672,8 @@ Corpse Party (2021):
- os: windows
id:
lutris: corpse-party-bloodcovered
+"Corpse Party: Blood Covered (2016)":
+ alias: Corpse Party
"Corpse Party: Blood Covered ...Repeated Fear":
alias: Corpse Party (2021)
"Corpse Party: Blood Drive":
@@ -224626,6 +224658,35 @@ Fight or Flight:
fof1: {}
steam:
id: 775620
+Fight the Dragon:
+ files:
+ "/.config/unity3d/3 Sprockets/FightTheDragon":
+ tags:
+ - config
+ when:
+ - os: linux
+ "/AppData/LocalLow/3 Sprockets/FightTheDragon":
+ tags:
+ - save
+ when:
+ - os: windows
+ installDir:
+ FightTheDragon: {}
+ launch:
+ "/FightTheDragon.app":
+ - when:
+ - os: mac
+ store: steam
+ "/FightTheDragon.exe":
+ - when:
+ - os: windows
+ store: steam
+ "/startgame.sh":
+ - when:
+ - os: linux
+ store: steam
+ steam:
+ id: 250560
Fight the Horror:
installDir:
Fight_the_Horror: {}
diff --git a/data/missing.md b/data/missing.md
index f88ce14a..1339c1e7 100644
--- a/data/missing.md
+++ b/data/missing.md
@@ -5268,7 +5268,6 @@
* [Corpoct](https://www.pcgamingwiki.com/wiki/?curid=144939)
* [Corpse Killer - 25th Anniversary Edition](https://www.pcgamingwiki.com/wiki/?curid=139347)
* [Corpse of Discovery](https://www.pcgamingwiki.com/wiki/?curid=46713)
-* [Corpse Party: Blood Covered (2016)](https://www.pcgamingwiki.com/wiki/?curid=183572)
* [Corral](https://www.pcgamingwiki.com/wiki/?curid=92716)
* [Corridor 15](https://www.pcgamingwiki.com/wiki/?curid=76975)
* [Corridor 7: Alien Invasion](https://www.pcgamingwiki.com/wiki/?curid=26687)
@@ -7215,7 +7214,6 @@
* [DooM in the Dark 2](https://www.pcgamingwiki.com/wiki/?curid=153095)
* [Doom of the Clawn](https://www.pcgamingwiki.com/wiki/?curid=156098)
* [Doom Rails](https://www.pcgamingwiki.com/wiki/?curid=41208)
-* [DOOMBRINGER](https://www.pcgamingwiki.com/wiki/?curid=163148)
* [Doomed](https://www.pcgamingwiki.com/wiki/?curid=95057)
* [Doomed Kingdoms](https://www.pcgamingwiki.com/wiki/?curid=54977)
* [Doomed'n Damned](https://www.pcgamingwiki.com/wiki/?curid=47289)
@@ -9143,7 +9141,6 @@
* [Fight or Die](https://www.pcgamingwiki.com/wiki/?curid=56080)
* [Fight or Die 2](https://www.pcgamingwiki.com/wiki/?curid=63278)
* [Fight Sparring VR](https://www.pcgamingwiki.com/wiki/?curid=64307)
-* [Fight The Dragon](https://www.pcgamingwiki.com/wiki/?curid=191161)
* [Fight the Horror](https://www.pcgamingwiki.com/wiki/?curid=109048)
* [Fight This](https://www.pcgamingwiki.com/wiki/?curid=130462)
* [Fight wisdom](https://www.pcgamingwiki.com/wiki/?curid=155608)
diff --git a/data/steam-game-cache.yaml b/data/steam-game-cache.yaml
index 29f52f23..b58fde0a 100644
--- a/data/steam-game-cache.yaml
+++ b/data/steam-game-cache.yaml
@@ -29931,6 +29931,12 @@
- description: Launch
executable: Livelock.exe
251270:
+ cloud:
+ saves:
+ - path: save_data
+ pattern: dummy.dat
+ recursive: true
+ root: gameinstall
installDir: Corpse Party
launch:
- config:
diff --git a/data/wiki-game-cache.yaml b/data/wiki-game-cache.yaml
index 317808d2..64963a76 100644
--- a/data/wiki-game-cache.yaml
+++ b/data/wiki-game-cache.yaml
@@ -36705,6 +36705,17 @@ Corpse Killer - 25th Anniversary Edition:
Corpse Mob:
pageId: 94405
steam: 828460
+Corpse Party:
+ gog: 1460712231
+ pageId: 34195
+ renamedFrom:
+ - Corpse Party
+ - "Corpse Party: Blood Covered (2016)"
+ steam: 251270
+ templates:
+ - "{{Game data/config|Windows|{{p|game}}\\corpseparty.ini}}"
+ - "{{Game data/saves|Windows|{{p|game}}\\save_data\\}}"
+ - "{{Game data/saves|Steam|{{p|steam}}/userdata/{{p|uid}}/251270/remote/}}"
Corpse Party (2021):
gog: 1138308214
pageId: 172374
@@ -36729,10 +36740,6 @@ Corpse Party (2021):
templates:
- "{{Game data/config|Windows|{{p|game}}\\grisgris.ini}}"
- "{{Game data/saves|Windows|{{p|game}}\\save_data\\*.*}}"
-"Corpse Party: Blood Covered (2016)":
- pageId: 183572
- renamedFrom:
- - Corpse Party
"Corpse Party: Blood Drive":
gog: 1771718646
pageId: 147874
@@ -41096,11 +41103,6 @@ DOKA 2 GUTS OUT NINJA:
DOKA 2 KISHKI EDITION:
pageId: 120982
steam: 967250
-DOOMBRINGER:
- pageId: 163148
- renamedFrom:
- - DOOMBRINGER
- - Doombringer
DOOMTANK:
pageId: 136846
steam: 1087310
@@ -64584,8 +64586,6 @@ Fight Me Bro!:
Fight Sparring VR:
pageId: 64307
steam: 665730
-Fight The Dragon:
- pageId: 191161
Fight This:
pageId: 130462
steam: 1037900
@@ -64607,6 +64607,14 @@ Fight or Die 2:
Fight or Flight:
pageId: 124526
steam: 775620
+Fight the Dragon:
+ pageId: 16274
+ renamedFrom:
+ - Fight The Dragon
+ steam: 250560
+ templates:
+ - "{{Game data/config|Linux|{{p|linuxhome}}/.config/unity3d/3 Sprockets/FightTheDragon}}"
+ - "{{Game data/saves|Windows|{{p|userprofile}}\\AppData\\LocalLow\\3 Sprockets\\FightTheDragon\\}}"
Fight the Horror:
pageId: 109048
steam: 857600
diff --git a/src/wiki.rs b/src/wiki.rs
index 9fa5a517..94affb2f 100644
--- a/src/wiki.rs
+++ b/src/wiki.rs
@@ -291,7 +291,15 @@ impl WikiCache {
match latest {
Ok(mut latest) => {
latest.renamed_from = cached.renamed_from.clone();
- self.0.insert(title.to_string(), latest);
+ if let Some(new_title) = latest.new_title.take() {
+ println!(" page {} redirected to '{}'", cached.page_id, &new_title);
+
+ latest.renamed_from.push(title.to_string());
+ self.0.remove(title);
+ self.0.insert(new_title, latest);
+ } else {
+ self.0.insert(title.to_string(), latest);
+ }
}
Err(Error::PageMissing) => {
// Couldn't find it by name, so try again by ID.
@@ -299,23 +307,32 @@ impl WikiCache {
// (If they have a redirect, then the recent changes code takes care of it.)
let Some(new_title) = get_page_title(cached.page_id).await? else {
// Page no longer exists.
- println!(":: refresh: page no longer exists");
+ println!(" page no longer exists");
self.0.remove(title);
continue;
};
- println!(
- ":: refresh: page {} called '{}' renamed to '{}'",
- cached.page_id, title, &new_title
- );
+ println!(" page {} renamed to '{}'", cached.page_id, &new_title);
if new_title.starts_with("File:") || new_title.starts_with("Company:") {
- println!(":: refresh: page is no longer a game");
+ println!(" page is no longer a game");
self.0.remove(title);
continue;
}
- let mut latest = WikiCacheEntry::fetch_from_page(new_title.clone()).await?;
+ let mut latest = match WikiCacheEntry::fetch_from_page(new_title.clone()).await {
+ Ok(x) => x,
+ Err(Error::PageMissing) => {
+ println!(" page does not exist");
+ self.0.remove(title);
+ continue;
+ }
+ Err(e) => {
+ return Err(e);
+ }
+ };
+
+ let new_title = latest.new_title.take().unwrap_or(new_title);
let mut cached = self.0[title].clone();
cached.renamed_from.push(title.clone());
@@ -360,6 +377,10 @@ pub struct WikiCacheEntry {
pub steam_side: BTreeSet,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub templates: Vec,
+
+ /// This will be set after resolving a redirect.
+ #[serde(skip)]
+ pub new_title: Option,
}
impl WikiCacheEntry {
@@ -370,7 +391,12 @@ impl WikiCacheEntry {
};
let wiki = make_client().await?;
- let params = wiki.params_into(&[("action", "parse"), ("prop", "wikitext"), ("page", &article)]);
+ let params = wiki.params_into(&[
+ ("action", "parse"),
+ ("prop", "wikitext"),
+ ("page", &article),
+ ("redirects", "1"),
+ ]);
let res = wiki
.get_query_api_json_all(¶ms)
@@ -382,6 +408,12 @@ impl WikiCacheEntry {
}
out.page_id = res["parse"]["pageid"].as_u64().ok_or(Error::WikiData("parse.pageid"))?;
+
+ let received_title = res["parse"]["title"].as_str().ok_or(Error::WikiData("parse.title"))?;
+ if received_title != article {
+ out.new_title = Some(received_title.to_string());
+ }
+
let raw_wikitext = res["parse"]["wikitext"]["*"]
.as_str()
.ok_or(Error::WikiData("parse.wikitext"))?;