diff --git a/mpq/arr/images.datex b/mpq/arr/images.datex index 098d6a8c..b5e1268d 100644 Binary files a/mpq/arr/images.datex and b/mpq/arr/images.datex differ diff --git a/mpq/arr/units.datex b/mpq/arr/units.datex index 84277641..d40ce994 100644 Binary files a/mpq/arr/units.datex and b/mpq/arr/units.datex differ diff --git a/mpq/arr/weapons.datex b/mpq/arr/weapons.datex index 0589579f..f61f742a 100644 Binary files a/mpq/arr/weapons.datex and b/mpq/arr/weapons.datex differ diff --git a/mpq/arr/weapons.txt b/mpq/arr/weapons.txt index 14de52aa..c9c87ba2 100644 --- a/mpq/arr/weapons.txt +++ b/mpq/arr/weapons.txt @@ -323,7 +323,7 @@ Ikta Driver (Tirade, Deployed) Erce Twinburst (Magian) Landfall (Askosi) Sizzling Venom (Rakzilisk) -Extended Weapon #196 +Extended Spikes (Yvilirokor) Extended Weapon #197 Extended Weapon #198 Extended Weapon #199 diff --git a/mpq/datreq/Buttons.graft b/mpq/datreq/Buttons.graft index 710bde48..52cf5049 100644 Binary files a/mpq/datreq/Buttons.graft and b/mpq/datreq/Buttons.graft differ diff --git a/mpq/datreq/Tech.graft b/mpq/datreq/Tech.graft index b13520ea..e080d27f 100644 Binary files a/mpq/datreq/Tech.graft and b/mpq/datreq/Tech.graft differ diff --git a/mpq/datreq/Units.graft b/mpq/datreq/Units.graft index 90e1ef11..137959f5 100644 Binary files a/mpq/datreq/Units.graft and b/mpq/datreq/Units.graft differ diff --git a/mpq/game/icons.grp b/mpq/game/icons.grp index 1e1bc3a3..d3ffe3fb 100644 Binary files a/mpq/game/icons.grp and b/mpq/game/icons.grp differ diff --git a/mpq/rez/stat.txt b/mpq/rez/stat.txt index d716cc48..3cedbce1 100644 --- a/mpq/rez/stat.txt +++ b/mpq/rez/stat.txt @@ -301,9 +301,9 @@ <0> <0> <0> -<0> -<0> -<0> +¤<3><4>Torrent of Teeth <2>(passive)<10>Upon taking damage, this strain launches three retaliatory bones in the direction of their attacker that travel up to 3 range, piercing any hostiles in their path.<0> +z<1><4>Morph into Yvilirokors<1>(<3>Z<1>)<10>Shredding reactive strain.<0> +Yvilir Aspect requires:<10> Tethvith Swamp<0> ¤<3><4>Erupting Deposits <2>(passive)<10>Victims of the Rakzilisk's attacks are debuffed, causing them to explode when they are struck again, consuming the debuff and dealing 8 damage to all combatants within 2 range.<0> z<3><4>Landfall <1>(<3>Z<1>)<10>Leaps to the target ground ally within 5 range, activating Impact Dissipation for all allies within 3 range of the jump target.<10>After 3 seconds, if the Magian endures, all targets within 3 range of the jump site are teleported to the Magian.<0> e<3><4>Siege Mode <1>(<3>E<1>)<10>Switches forms, gaining splash radius and weapon range, while disabling movement.<0> @@ -928,7 +928,7 @@ Must target enemy units or allied embedded units.<0> ¤<3>Ultrokors <1>are enabled from Zoryusthaleths.<0> ¤<3>Zobriolisks <1>are enabled from Lakizilisks.<0> ¤<3>Zarcavrokors <1>are enabled from Gorgrokors.<0> -r<1><4>Morph into Rakzilisk <1>(<3>R<1>)<10>Ground control strain.<0> +a<1><4>Morph into Rakzilisk <1>(<3>A<1>)<10>Ground control strain.<0> Rakzilisk requires:<10> Rakzogth Roost<0> z<1><4>Morph into Ogroszaleth <1>(<3>Z<1>)<10>Area-denial strain.<0> Ogroszaleth requires:<10> Rakzogth Roost<0> diff --git a/mpq/scripts/iscript_zerg.bin b/mpq/scripts/iscript_zerg.bin index 30a6b250..fa0d8c4f 100644 Binary files a/mpq/scripts/iscript_zerg.bin and b/mpq/scripts/iscript_zerg.bin differ diff --git a/mpq/scripts/iscript_zerg.txt b/mpq/scripts/iscript_zerg.txt index 1ffb59c8..57f999d8 100644 --- a/mpq/scripts/iscript_zerg.txt +++ b/mpq/scripts/iscript_zerg.txt @@ -20479,4 +20479,231 @@ RakziliskUnburrow: wait 1 sigorder 4 setfldirect 14 - goto RakziliskWalkingToIdle \ No newline at end of file + goto RakziliskWalkingToIdle + +# ----------------------------------------------------------------------------- # +# This header is used by images.dat entries: +# 2544 Yvilirokor (cm\z\yvilirokor.grp) +.headerstart +IsId 852 +Type 26 +Init YvilirokorInit +Death YvilirokorDeath +GndAttkInit YvilirokorGndAttkInit +AirAttkInit [NONE] +Unused1 YvilirokorUnused1 +GndAttkRpt YvilirokorGndAttkInit +AirAttkRpt [NONE] +CastSpell [NONE] +GndAttkToIdle YvilirokorGndAttkToIdle +AirAttkToIdle [NONE] +Unused2 [NONE] +Walking YvilirokorWalking +WalkingToIdle YvilirokorGndAttkToIdle +SpecialState1 SkryrokorLocal00 +SpecialState2 YvilirokorSpecialState2 +AlmostBuilt [NONE] +Built [NONE] +Landing [NONE] +LiftOff [NONE] +IsWorking [NONE] +WorkingToIdle [NONE] +WarpIn [NONE] +Unused3 [NONE] +StarEditInit [NONE] +Disable [NONE] +Burrow YvilirokorBurrow +UnBurrow YvilirokorUnBurrow +Enable [NONE] +.headerend +# ----------------------------------------------------------------------------- # + +YvilirokorInit: + imgulnextid 0 0 # Yvilirokor Shadow (cm\z\yvilirokor-shadow.grp) +YvilirokorGndAttkToIdle: + playfram 0x00 + goto YvilirokorLocal00 + +YvilirokorLocal00: + wait 63 + randcondjmp 25 YvilirokorLocal01 + randcondjmp 128 YvilirokorLocal02 + goto YvilirokorLocal00 + +YvilirokorLocal01: + playfram 0x00 + wait 1 + playfram 0x11 + wait 1 + playfram 0x22 + wait 1 + playfram 0x33 + wait 12 + playfram 0x22 + wait 1 + playfram 0x11 + wait 1 + playfram 0x00 + wait 1 + goto YvilirokorGndAttkToIdle + +YvilirokorLocal02: + randcondjmp 128 YvilirokorLocal03 + playfram 0x66 + wait 1 + turnccwise 1 + playfram 0x77 + wait 1 + turnccwise 1 + playfram 0x88 + wait 1 + turnccwise 1 + playfram 0x99 + wait 1 + turnccwise 1 + playfram 0xaa + wait 1 + turnccwise 1 + playfram 0xbb + wait 1 + turnccwise 1 + goto YvilirokorGndAttkToIdle + +YvilirokorLocal03: + playfram 0x66 + wait 1 + turncwise 1 + playfram 0x77 + wait 1 + turncwise 1 + playfram 0x88 + wait 1 + turncwise 1 + playfram 0x99 + wait 1 + turncwise 1 + playfram 0xaa + wait 1 + turncwise 1 + playfram 0xbb + wait 1 + turncwise 1 + goto YvilirokorGndAttkToIdle + +YvilirokorDeath: + imgol 3 0 0 # Skryrokor Death (zerg\zavDeath.grp) + playsnd 896 # Zerg\Zergling\ZZeDth00.WAV + setfldirect 0 + playfram 289 + wait 2 + playfram 290 + wait 2 + playfram 291 + wait 2 + playfram 292 + wait 2 + playfram 293 + wait 2 + playfram 294 + wait 2 + playfram 295 + wait 1 + lowsprul 1228 0 0 # Yvilirokor Remnants (zerg\zethrokor-remains.grp) + wait 1 + end + +YvilirokorUnused1: + wait 1 + nobrkcodestart + setfldirect 0 + playsnd 1171 + playfram 295 + wait 2 + playfram 294 + wait 2 + playfram 293 + wait 2 + playfram 292 + wait 2 + playfram 291 + wait 2 + playfram 290 + wait 2 + playfram 289 + wait 2 + setfldirect 10 + nobrkcodeend + goto YvilirokorGndAttkToIdle + +YvilirokorGndAttkInit: + playfram 0x00 + wait 1 + nobrkcodestart + playfram 0x22 + attackmelee 1 894 # Zerg\Ultra\zulHit00.WAV + wait 1 + playfram 0x33 + wait 1 + nobrkcodeend + playfram 0x44 + wait 1 + gotorepeatattk + goto YvilirokorGndAttkToIdle + +YvilirokorWalking: + move 6 + wait 1 + playfram 0x66 + move 6 + wait 1 + playfram 0x77 + move 6 + wait 1 + playfram 0x88 + move 6 + wait 1 + playfram 0x99 + move 6 + wait 1 + playfram 0xaa + move 6 + wait 1 + playfram 0xbb + move 6 + wait 1 + playfram 0x55 + goto YvilirokorWalking + +YvilirokorSpecialState2: + playfram 0x110 + goto SkryrokorLocal00 + +YvilirokorBurrow: + imgol 423 0 0 # Burrowing Dust (thingy\bDust.grp) + playfram 0xcc + wait 1 + playfram 0xdd + wait 1 + playfram 0xee + wait 1 + playfram 0xff + wait 1 + playfram 0x110 + wait 1 + sigorder 4 + goto SkryrokorLocal00 + +YvilirokorUnBurrow: + wait 1 + waitrand 1 2 + imgul 423 0 0 # Burrowing Dust (thingy\bDust.grp) + playfram 0xff + wait 1 + playfram 0xee + wait 1 + playfram 0xdd + wait 1 + playfram 0xcc + wait 1 + sigorder 4 + goto YvilirokorGndAttkToIdle \ No newline at end of file diff --git a/mpq/unit/cmdbtns/cmdicons.grp b/mpq/unit/cmdbtns/cmdicons.grp index 93a36754..0833ab28 100644 Binary files a/mpq/unit/cmdbtns/cmdicons.grp and b/mpq/unit/cmdbtns/cmdicons.grp differ diff --git a/mpq/unit/cmdbtns/uniticons.grp b/mpq/unit/cmdbtns/uniticons.grp index b9ce4ca1..c321b663 100644 Binary files a/mpq/unit/cmdbtns/uniticons.grp and b/mpq/unit/cmdbtns/uniticons.grp differ diff --git a/mpq/unit/wirefram/grpwire.grp b/mpq/unit/wirefram/grpwire.grp index b29d16bf..b8c8b5cd 100644 Binary files a/mpq/unit/wirefram/grpwire.grp and b/mpq/unit/wirefram/grpwire.grp differ diff --git a/mpq/unit/wirefram/wirefram.grp b/mpq/unit/wirefram/wirefram.grp index 589bf2ca..5fd00d48 100644 Binary files a/mpq/unit/wirefram/wirefram.grp and b/mpq/unit/wirefram/wirefram.grp differ diff --git a/patchnotes.md b/patchnotes.md index e95d2caf..114bec3d 100644 --- a/patchnotes.md +++ b/patchnotes.md @@ -1,52 +1,17 @@ -# 25 October 2026 -## Year 4, month 10, patch 4 +# 7 November 2026 +## Year 4, month 11, patch 1 ## Patch goals - Complete various fixes to our widescreen implementation! -- Continue technical improvements, bugfixes, and audiovisual additions ahead of each of the Gauntlet Stages! +- Continue technical improvements, bugfixes, and audiovisual additions ahead of the Battlements Stage! - [Subscribe on ko-fi](https://ko-fi.com/pr0nogoandveeq7) to get a sneak peek of the incoming changes! - Join our communities ([Discord](https://discord.com/invite/s5SKBmY) | [Fluxer](https://fluxer.gg/1rebBmBw)), or get in touch with Pr0nogo via email! pr0nogo@fraudsclub.com -## Core -- CJK (Chinese, Japanese, Korean) text input has been achieved! (c. Jesse) - - We are looking for feedback on this feature, so if you use these languages, let us know how it feels! -- A localization system has been added for in-game tooltip text! (c. Jesse) - - Translations for unit names and menu strings will be activated later! -- Korean translations are now available for in-game tooltips! (c. Xetsumei) -- Spanish translations are now available for in-game tooltips! (c. Sosij) -- Notably improved performance related to unit speed buffs and debuffs (c. Jesse) - ## Bugfixes -- **Stability:** - - Resolved crashes on long tooltip hovers (c. Jesse) - - Further reduced desync probability due to floating points (c. Jesse) - - Resolved desync cases with Terran addon construction, Terran repair, and Irradiate damage ticking - - Protected against a crash (and possibly desync) caser related to warping in units and structures while they are cloaked (c. DF) - **Gameplay:** - - Restored projectile cloning on hallucinating targets (r. ArbuzBudesh & GreenEggs'NSpam) -- **Audiovisuals:** - - Improve tooltip formatting (c. Jesse) - - Restored Starbound Manifold portrait (r. jun3hong) - - Fixed clipping for Tirade engine (r. fasswawds) + - Fixed Sovroleths morphing from Protathalors only providing 1 Sovroleth (r. jakulangski) -## Audiovisuals -- New graphics for: - - Scepter, Arch (c. fasswawds; wireframes c. jun3hong) -- Updated graphics for: - - Olympian (The Best. c. TheBeaver99) - - Atreus (c. TheBeaver99) -- New projectile vfx for: - - Siren, Scepter, Scralia -- New portraits for: - - Hydrokor (c. jun3hong) -- New unit responses for: - - Autocort, Manifold, Oscilliant, Architect, Vibrance (c. jun3hong) - - Malkothrokor, Ghitorokor, Almaksalisk, Okrimnilisk, Alkajelisk, Kethrostalor, Vilgorokor, Tetcaerokor, Akistrokor, Axtoth Axis, Rakzogth Roost (c. jun3hong) - - Chantry, Dorminge, Cipher, Gauntlet, Zylode, Lotiro, Astrolabe (c. jun3hong) -- New projectile sfx for: - - Siren - -## Zerg -- **NEW:** [Rakzilisk](https://cosmonarchy.com/zerg/rakzilisk/): - - Ground control strain; Requires Rakzogth Roost; Commissioned by knightoftherealm! - - *This unit will be disabled on release until Gauntlet Stage C concludes.* \ No newline at end of file +## Zerg factions +- **NEW:** [Yvilirokor](https://cosmonarchy.com/zerg/yvilirokor/): + - **Goszirith Tendril:** Tethzorokor replacement; dual-birth shredding reactive strain. + - Community milestone reward: Discord server boosts! (c. jakulangski & KutyamCsupan) \ No newline at end of file diff --git a/plugins/gptp.qdp b/plugins/gptp.qdp index cae15d34..bd941c61 100644 Binary files a/plugins/gptp.qdp and b/plugins/gptp.qdp differ