diff --git a/mpq/arr/flingy.datex b/mpq/arr/flingy.datex index 983f92e9..6f1d48d8 100644 Binary files a/mpq/arr/flingy.datex and b/mpq/arr/flingy.datex differ diff --git a/mpq/arr/flingy.txt b/mpq/arr/flingy.txt index 155bf2d6..0e04edb4 100644 --- a/mpq/arr/flingy.txt +++ b/mpq/arr/flingy.txt @@ -710,8 +710,8 @@ Thrombocyte Vestige (Starbound) Arquebus (Hecaton) Acqui -Extended Flingy #504 -Extended Flingy #505 +Alzurokor (Imicren) +Hydrokor (Goszirith) Extended Flingy #506 Extended Flingy #507 Extended Flingy #508 diff --git a/mpq/arr/images.datex b/mpq/arr/images.datex index f30146a4..ab936dd2 100644 Binary files a/mpq/arr/images.datex and b/mpq/arr/images.datex differ diff --git a/mpq/arr/images.tbl b/mpq/arr/images.tbl index 980e5978..c242f8c0 100644 Binary files a/mpq/arr/images.tbl and b/mpq/arr/images.tbl differ diff --git a/mpq/arr/images.txt b/mpq/arr/images.txt index bce74193..c2de2b31 100644 --- a/mpq/arr/images.txt +++ b/mpq/arr/images.txt @@ -2436,16 +2436,16 @@ Arquebus (Hecaton) Arquebus (Hecaton) Shadow Acqui Acqui Shadow -Extended Image #1436 -Extended Image #1437 -Extended Image #1438 -Extended Image #1439 -Extended Image #1440 -Extended Image #1441 -Extended Image #1442 -Extended Image #1443 -Extended Image #1444 -Extended Image #1445 +Alzurokor (Imicren) +Alzurokor (Imicren) Shadow +Alzurokor (Imicren) Birth +Alzurokor (Imicren) Remnants +Hydrokor (Goszirith) +Hydrokor (Goszirith) Shadow +Hydrokor (Goszirith) Birth +Hydrokor (Goszirith) Remains +Hydrokor (Goszirith) Mutate +Hydralisk Mutate Extended Image #1446 Extended Image #1447 Extended Image #1448 diff --git a/mpq/arr/sprites.datex b/mpq/arr/sprites.datex index aff3236c..84aae0f6 100644 Binary files a/mpq/arr/sprites.datex and b/mpq/arr/sprites.datex differ diff --git a/mpq/arr/sprites.txt b/mpq/arr/sprites.txt index 7221653d..071877bd 100644 --- a/mpq/arr/sprites.txt +++ b/mpq/arr/sprites.txt @@ -1176,10 +1176,10 @@ Thrombocyte Vestige (Starbound) Arquebus (Hecaton) Acqui -Extended Sprite #662 -Extended Sprite #663 -Extended Sprite #664 -Extended Sprite #665 +Alzurokor (Imicren) +Hydrokor (Goszirith) +Alzurokor Remains +Hydrokor Remains Extended Sprite #666 Extended Sprite #667 Extended Sprite #668 diff --git a/mpq/arr/units.datex b/mpq/arr/units.datex index 890042d0..4394a3cf 100644 Binary files a/mpq/arr/units.datex and b/mpq/arr/units.datex differ diff --git a/mpq/arr/units.txt b/mpq/arr/units.txt index 24ce0feb..537c5dc8 100644 --- a/mpq/arr/units.txt +++ b/mpq/arr/units.txt @@ -618,17 +618,17 @@ Zerg Rozirokor (Imicren) Bloodsummon Thrombocyte Bloodsummon Grimoire Zerg Zytryleth (Zorthos) -Terran Camazotz (Nydus Trinity) +Terran Camazotz (Nydus) Protoss Simulacrum (Khalendric) Protoss Idol (Khalendric) Protoss Vestige (Starbound) Terran Arquebus (Hecaton) Bloodsummon Acqui -Extended Unit #399 -Extended Unit #400 -Extended Unit #401 -Extended Unit #402 -Extended Unit #403 +Zerg Alzurokor (Imicren) +Zerg Hydrokor (Goszirith) +Protoss Gladius (Order) +Terran Eidolon (Golden Republic) +Zerg Zethalisk (Orkoti) Extended Unit #404 Extended Unit #405 Extended Unit #406 diff --git a/mpq/datreq/Buttons.graft b/mpq/datreq/Buttons.graft index 17262467..a040ed5d 100644 Binary files a/mpq/datreq/Buttons.graft and b/mpq/datreq/Buttons.graft differ diff --git a/mpq/datreq/Orders.graft b/mpq/datreq/Orders.graft index 97bc7723..58f275e0 100644 Binary files a/mpq/datreq/Orders.graft and b/mpq/datreq/Orders.graft differ diff --git a/mpq/datreq/Tech.graft b/mpq/datreq/Tech.graft index 2f532f36..45cb4fab 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 0fe1d7b5..8cc15da9 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 2f75f599..002e0fdd 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 acf0f323..381d854a 100644 --- a/mpq/rez/stat.txt +++ b/mpq/rez/stat.txt @@ -1011,10 +1011,10 @@ b<3><4>Bloody Burst <1>(<3>B<1>)<10>Bursts the Thrombocyte, releasing a pulse th ¤<3><4>Portents <2>(passive)<10>When this combatant receives damage, it becomes cloaked, and decloaks after 2 seconds of not taking damage.<0> t<1><4>Build Arquebus <1>(<3>C<1>)<10>Incendiary platform.<0> ¤<3><4>Forlorn Haste <2>(passive)<10>While isolated within 3 range, this combatant gains 200% movement speed.<0> -<0> -<0> -<0> -<0> +t<1><4>Morph into Alzurokor <1>(<3>T<1>)<10>Subjugation strain.<0> +Alzur Aspect requires:<10> Ulgorg Cavern<0> +h<1><4>Morph into Hydrokors <1>(<3>H<1>)<10>Swift melee strain.<0> +Hydrokor requires:<10> Hydrith Den<0> <0> <0> Bloodsummon Stigmata<0> @@ -1356,7 +1356,7 @@ z<3><4>Switch to Power Siphon <1>(<3>Z<1>)<10>Activates the Savant's sustained f v<1><4>Morph into Konvilisk <1>(<3>V<1>)<10>Reinforcing duelist strain.<0> ¤<3><4>Reactive Payload <2>(passive)<10>For every 4 range travelled, this combatant's missiles split into an additional projectiles, homing in on the closest combatants within 3 range of the original target.<0> x<1><4>Mutate to Othstol Oviform <1>(<3>X<1>)<10>Tier 3 tech node.<0> -e<1><4>Mutate into Kethraj Keep <1>(<3>E<1>)<10>Artillery assault node.<0> +x<1><4>Mutate into Kethraj Keep <1>(<3>X<1>)<10>Artillery assault node.<0> Entropy Gauntlets Require:<10> Module switch<0> Power Siphon requires:<10> Module switch<0> a<1><4>Morph to Kagralisk <1>(<3>A<1>)<10>Bursting ranged strain.<0> diff --git a/mpq/rez/unitnames.tbl b/mpq/rez/unitnames.tbl index 86a98644..7b8918b5 100644 Binary files a/mpq/rez/unitnames.tbl and b/mpq/rez/unitnames.tbl differ diff --git a/mpq/samase/unitdef.txt b/mpq/samase/unitdef.txt index 5d4fbf3c..b5441969 100644 --- a/mpq/samase/unitdef.txt +++ b/mpq/samase/unitdef.txt @@ -107,6 +107,9 @@ military zethalor = 559 military scrylyleth = 560 military zoltorokor = 604 military rozirokor = 616 +military alzurokor = 626 +military hydrokor = 627 +military zethalisk = 630 # Terran military units military maverick = 0 diff --git a/mpq/scripts/aiscript.bin b/mpq/scripts/aiscript.bin index 801e33a0..6f5bd65b 100644 Binary files a/mpq/scripts/aiscript.bin and b/mpq/scripts/aiscript.bin differ diff --git a/mpq/scripts/iscript_zerg.bin b/mpq/scripts/iscript_zerg.bin index a01f084b..a15f3ca6 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 a74f0f59..69438a24 100644 --- a/mpq/scripts/iscript_zerg.txt +++ b/mpq/scripts/iscript_zerg.txt @@ -1175,7 +1175,7 @@ Enable [NONE] # ----------------------------------------------------------------------------- # HydraliskInit: - imgul 30 0 0 # Hydralisk Shadow (zerg\zhyShad.grp) + imgulnextid 0 0 # Hydralisk Shadow (zerg\zhyShad.grp) HydraliskWalkingToIdle: playfram 0x55 HydraliskLocal00: @@ -18786,4 +18786,244 @@ ChokralChaszalIsWorking: playfram 4 wait 1 playfram 5 - goto ChokralChaszalIsWorking \ No newline at end of file + goto ChokralChaszalIsWorking + +# ----------------------------------------------------------------------------- # +# This header is used by images.dat entries: +# 2442 Hydrokor (cm\f-z\hydrokor.grp) +.headerstart +IsId 844 +Type 26 +Init HydrokorInit +Death HydrokorDeath +GndAttkInit HydrokorGndAttkInit +AirAttkInit HydrokorGndAttkInit +Unused1 HydrokorUnused1 +GndAttkRpt HydrokorGndAttkRpt +AirAttkRpt HydrokorGndAttkRpt +CastSpell [NONE] +GndAttkToIdle HydrokorGndAttkToIdle +AirAttkToIdle HydrokorGndAttkToIdle +Unused2 [NONE] +Walking HydrokorWalking +WalkingToIdle HydrokorWalkingToIdle +SpecialState1 SkryrokorLocal00 +SpecialState2 HydrokorSpecialState2 +AlmostBuilt [NONE] +Built [NONE] +Landing [NONE] +LiftOff [NONE] +IsWorking [NONE] +WorkingToIdle [NONE] +WarpIn [NONE] +Unused3 [NONE] +StarEditInit [NONE] +Disable [NONE] +Burrow HydrokorBurrow +UnBurrow HydrokorUnBurrow +Enable [NONE] +.headerend +# ----------------------------------------------------------------------------- # + +HydrokorInit: + imgulnextid 0 0 # Hydrokor Shadow (cm\f-z\hydrokor-shadow.grp) +HydrokorWalkingToIdle: + playfram 0x55 +HydrokorLocal00: + wait 62 + randcondjmp 25 HydrokorLocal01 + randcondjmp 128 HydrokorLocal02 + goto HydrokorLocal00 + +HydrokorLocal01: + playfram 0x00 + wait 1 + playfram 0x11 + wait 1 + playfram 0x22 + wait 1 + playfram 0x33 + wait 25 + playfram 0x22 + wait 1 + playfram 0x11 + wait 1 + playfram 0x00 + wait 1 + goto HydrokorWalkingToIdle + +HydrokorLocal02: + randcondjmp 128 HydrokorLocal03 + 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 HydrokorWalkingToIdle + +HydrokorLocal03: + 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 HydrokorWalkingToIdle + +HydrokorDeath: + playsnd 867 # Zerg\Hydra\ZHyDth00.WAV + setfldirect 0 + playfram 0x121 + 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 2 + lowsprul 1181 0 0 # Hydrokor Remnants (cm\f-z\hydrokor-remains.grp) + wait 1 + end + +HydrokorUnused1: + wait 1 + nobrkcodestart + setfldirect 0 + playsnd 1172 # Hydrokor Revive 01 + playfram 296 + wait 2 + 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 0x121 + wait 2 + setfldirect 12 + nobrkcodeend + goto HydrokorWalkingToIdle + +HydrokorGndAttkInit: + playfram 0x00 + wait 1 + nobrkcodestart + playfram 0x22 + wait 1 +HydrokorGndAttkRpt: + wait 1 + playfram 0x44 + playsnd 64 # Bullet\SpoogHit.wav + sproluselo 332 0 # Needle Spines (thingy\spooge.grp) + attack + wait 1 + playfram 0x33 + wait 1 + playfram 0x22 + wait 1 + nobrkcodeend + gotorepeatattk + ignorerest +HydrokorGndAttkToIdle: + playfram 0x22 + wait 1 + playfram 0x11 + wait 1 + playfram 0x00 + wait 1 + goto HydrokorWalkingToIdle + +HydrokorWalking: + move 4 + wait 1 + playfram 0x66 + move 4 + wait 1 + playfram 0x77 + move 4 + wait 1 + playfram 0x88 + move 4 + wait 1 + playfram 0x99 + move 4 + wait 1 + playfram 0xaa + move 4 + wait 1 + playfram 0xbb + move 4 + wait 1 + playfram 0x55 + goto HydrokorWalking + +HydrokorSpecialState2: + playfram 0x110 + goto SkryrokorLocal00 + +HydrokorBurrow: + 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 + +HydrokorUnBurrow: + 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 HydrokorWalkingToIdle \ No newline at end of file diff --git a/mpq/unit/cm/f-z/hydrokor-birth.grp b/mpq/unit/cm/f-z/hydrokor-birth.grp new file mode 100644 index 00000000..5ec5d2ea Binary files /dev/null and b/mpq/unit/cm/f-z/hydrokor-birth.grp differ diff --git a/mpq/unit/cm/f-z/hydrokor-mutate.grp b/mpq/unit/cm/f-z/hydrokor-mutate.grp new file mode 100644 index 00000000..aa0f9de0 Binary files /dev/null and b/mpq/unit/cm/f-z/hydrokor-mutate.grp differ diff --git a/mpq/unit/cm/f-z/hydrokor-remains.grp b/mpq/unit/cm/f-z/hydrokor-remains.grp new file mode 100644 index 00000000..c739a415 Binary files /dev/null and b/mpq/unit/cm/f-z/hydrokor-remains.grp differ diff --git a/mpq/unit/cm/f-z/hydrokor-shadow.grp b/mpq/unit/cm/f-z/hydrokor-shadow.grp new file mode 100644 index 00000000..7a728bbe Binary files /dev/null and b/mpq/unit/cm/f-z/hydrokor-shadow.grp differ diff --git a/mpq/unit/cm/f-z/hydrokor.grp b/mpq/unit/cm/f-z/hydrokor.grp new file mode 100644 index 00000000..677b3031 Binary files /dev/null and b/mpq/unit/cm/f-z/hydrokor.grp differ diff --git a/mpq/unit/cmdbtns/cmdicons.grp b/mpq/unit/cmdbtns/cmdicons.grp index 7c66e069..161e0330 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 4116947d..393f9a57 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 3066fe1d..da289930 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 efbbc1b2..0d3c0bd9 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 f4088164..4652a38e 100644 --- a/patchnotes.md +++ b/patchnotes.md @@ -1,4 +1,4 @@ -# 15 August 2026 +# 16 August 2026 ## Year 4, month 8, patch 1 ## Patch goals @@ -31,6 +31,7 @@ - Lardfix: Protected against rare AI breakage from niche town configurations (c. DF) - **Nydus Trinity Eidolon**s now correctly regenerate life at a higher rate when cloaked (r. jakulangski) - **Tencendur**s can now issue load orders + - Resolved mnemonic hotkey conflict between **Caphrolosk** and **Kethraj Keep** (r. jakulangski) - **Audiovisuals:** - Fixed **Endbore** weapon name (r. Concealed Organic) - Fixed "dead pixels" in Askosi UI @@ -181,6 +182,10 @@ - Now considered a Sire - **NEW:** [Rozirokor](https://cosmonarchy.com/zerg/rozirokor): - **Imicren Tendril:** Izirokor replacement. Has Saber Siphon. +- **NEW:** [Alzurokor](https://cosmonarchy.com/zerg/alzurokor): + - **Imicren Tendril:** Ultrokor replacement. Has Captivating Claws and Devouring Instinct. +- **NEW:** [Hydrokor](https://cosmonarchy.com/zerg/hydrokor): + - **Goszirith Tendril:** Hydralisk replacement. Dual-birth melee strain. - **NEW:** [Zytryleth](https://cosmonarchy.com/zerg/zytryleth): - **Zorthos Tendril:** Structure mutated from Scrylyleth. Has Omnispores, acts as a town center, and gestates Larvae. diff --git a/plugins/gptp.qdp b/plugins/gptp.qdp index a770de13..64e242c3 100644 Binary files a/plugins/gptp.qdp and b/plugins/gptp.qdp differ