• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Feedback] Compiled List of 1.30 / 1.29 Bugs & Issues

Status
Not open for further replies.
Edit: Warcraft 3 V1.30.9922
I tried to use the new natives BlzSpecialEffectAddSubAnimation & BlzPlaySpecialEffect to display a working castle. The Animation would be "Stand Work Upgrade Second" which should result into:
SUBANIM_TYPE_WORK
SUBANIM_TYPE_UPGRADE
SUBANIM_TYPE_SECOND
ANIM_TYPE_STAND


The triggers used to create an effect displaying a working castle, all Fail.

This Trigger results into a working townhall (base form)
  • Castle working
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Special Effect - Create a special effect at (Player 1 (Red) start location) using buildings\human\TownHall\TownHall.mdl
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_WORK )
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_SECOND )
      • Custom script: call BlzPlaySpecialEffect(bj_lastCreatedEffect, ANIM_TYPE_STAND )
This Trigger results into an idly castle
  • Castle working Revert
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Special Effect - Create a special effect at (Center of (Playable map area)) using buildings\human\TownHall\TownHall.mdl
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_SECOND )
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_WORK )
      • Custom script: call BlzPlaySpecialEffect(bj_lastCreatedEffect, ANIM_TYPE_STAND )
Also shows an idly castle.
  • Castle working total
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Special Effect - Create a special effect at (Center of Region 000 <gen>) using buildings\human\TownHall\TownHall.mdl
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_SECOND )
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_UPGRADE )
      • Custom script: call BlzSpecialEffectAddSubAnimation(bj_lastCreatedEffect, SUBANIM_TYPE_WORK )
      • Custom script: call BlzPlaySpecialEffect(bj_lastCreatedEffect, ANIM_TYPE_STAND )

I did try different orders of this 3 Subanimations but none produced the working castle effect :(.
Also tried to display a avatared mountain king slam attack also did not work. The default moutain king slam attack works.
After some tests I realized that only the first SubAnim is used which disallows a working castle as it disallows an avatared mountain king slam attack.

Something related but offtopic;
I personaly think it is a bit confusing that "SUBANIM_TYPE_ROOTED" displays "alternate", but there is also "SUBANIM_TYPE_ALTERNATE_EX".
From the names one would choose "SUBANIM_TYPE_ALTERNATE_EX" to display an alternate form. But one needs to use "SUBANIM_TYPE_ROOTED".
 

Attachments

  • Working Castle.jpg
    Working Castle.jpg
    145.2 KB · Views: 173
  • SpecialEffect Working Castle.w3x
    17.7 KB · Views: 173
Last edited:

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,804
I don't know/remember if this was mentioned before but my saves are not in the Warcraft III folder under Documents but in another Warcraft III folder under the folder Saved Games in my user profile folder o_O
I'm still on 1.29.2 so I don't know about 1.30.
 
Level 39
Joined
Feb 27, 2007
Messages
4,992
20. BlzUnitShowAbility and BlzUnitHideAbility seem to have an internal counter which creates odd behavior. Is this intended? There is no way to access the counter without manually keeping track of it. (Post)
Some natives like UnitHideAbility + UnitShowAbility work strange, because if we used UnitHideAbility (for example) twice, we should use UnitShowAbility twice. These functions have their counters and it's a bad thing, which should be fixed to my mind.

I just discovered this myself and came here to post, but it's already been added. In case it's helpful, attached is a test map that clearly shows the problem and can be used to test if it has yet been fixed in a patch. It was saved on a 1.29 editor.
 

Attachments

  • disable bug.w3x
    13.8 KB · Views: 147
The counter-based setter natives work towards keeping consistency with how the game works, methinks. That is what enables multiple sources of silence abilities to work.

With that in mind, let us consider ShowUnit and IsUnitHidden. We can keep track of it's counter value, but it would be quite costly, being O(2n). We can also retrieve the counter value of sources of invulnerability by the same method.

JASS:
function GetUnitShowCounter(unit)
    int i = 0
    int j = 0
    bool flag = IsUnitHidden(unit)
    
    // If hidden, show it
    // Else, hide it
    if flag then
       do
            ShowUnit(unit, flag)
        while (IsUnitHidden(unit))
            i++
    else
        do
            ShowUnit(unit, flag)
        while not (IsUnitHidden(unit))
            i--
    endif

    // Revert hiding.
    flag = not flag
    if (not flag) then
        while (j < i)
        ShowUnit(unit, flag)
        j++
    else
        while (j > I)
        ShowUnit(unit, flag)
        j--
    endif
    return i
endfunction

// I'm not sure if there are faults in the logic, but I hope it's understood.
 
Level 39
Joined
Feb 27, 2007
Messages
4,992
Right, you can do that for hiding and showing units. But is there a Blz native that lets us know if the ability for a unit is currently disabled or enabled? I still don't have a list of the new Blz ones in front of me for quick reference. Without that or a reliable method to test other than ordering the unit to use the ability, it seems we wouldn't know how many times to enable/disable to get it to 0. IMO silence stacking is not a good analogy because that brings with it a dispellable buff; players can see it's there and mappers can remove the buff to end any of the silences they want.
 
Level 4
Joined
Aug 9, 2012
Messages
27
Good afternoon people,
Today I tested my map in LAN but everytime joining players got the message You were disconnected, something that didn't happen in 1.29.
So I tried to: deactivate all triggers and test again (failed, same message), play other custom maps (failed), play melee maps (failed), check if ports are open in Firewall (already open), make a fresh install of both RoC and TFT (failed).
Am I the only one who's trapped?
 
Good afternoon people,
Today I tested my map in LAN but everytime joining players got the message You were disconnected, something that didn't happen in 1.29.
So I tried to: deactivate all triggers and test again (failed, same message), play other custom maps (failed), play melee maps (failed), check if ports are open in Firewall (already open), make a fresh install of both RoC and TFT (failed).
Am I the only one who's trapped?

Which version of the World Editor are you using? Try saving your map in the 1.30 editor and hosting again.

Also, try on the PTR.
 
Level 4
Joined
Aug 9, 2012
Messages
27
Hi TriggerHappy,
I have saved the map with the version 1.30 (6061) and it keeps disconnecting. However, I've just tried the map on the PTR (also 1.30) and it works perfectly.
All computers I'm using for testing use the same version of the game.
 
Level 4
Joined
Jan 6, 2008
Messages
69
Hello everyone! I was working on a map with a friend of mine for a long time in 1.28 and 1.29. I had a Hero in the map with a trigger that used the reset ability cooldown functionality that was added in 1.28 or 1.29, whichever one it was. However now when I try to load that map I get the error message "Trigger function does not exist in database: EndUnitAbilityCooldown" which I can only assume is related to that trigger. Then it crashes.

Is there a fix of any kind? Can I somehow go in and remove the offending trigger in any way? I have an older version that I could go back to but I would love to salvage as much of my work as I can. I appreciate any help.
 
Level 39
Joined
Feb 27, 2007
Messages
4,992
I have a 1.29 install that's never touched 1.30 so I should still have the native. PM the map and I will try to remove/disable it. If you have many triggers it would be helpful to know which one it's in.

Won't work: see TriggerHappy's post below.
 
Last edited:
Hello everyone! I was working on a map with a friend of mine for a long time in 1.28 and 1.29. I had a Hero in the map with a trigger that used the reset ability cooldown functionality that was added in 1.28 or 1.29, whichever one it was. However now when I try to load that map I get the error message "Trigger function does not exist in database: EndUnitAbilityCooldown" which I can only assume is related to that trigger. Then it crashes.

Is there a fix of any kind? Can I somehow go in and remove the offending trigger in any way? I have an older version that I could go back to but I would love to salvage as much of my work as I can. I appreciate any help.

It looks like you developed your map on the 1.29 PTR. The native was renamed to BlzEndUnitAbilityCooldown when the patch went live.
 
Level 4
Joined
Jan 6, 2008
Messages
69
Guess I'm SOL then. Well thanks for the tip anyways. I wasn't too far behind in my older version so I guess I'll use it as a chance to rework some stuff while I can.
 
Level 39
Joined
Feb 27, 2007
Messages
4,992
I would use this MPQ editor: Ladik's MPQ Editor 32bit
This is probably a good resource to learn what each of the files you'l find in your map are for: Inside the w3m/w3x (the 2nd) - Page 4 - Wc3C.net

I actually tried it myself messing with a map and it looks like if you delete war3map.wct, war3map.wtg, and war3map.j it will clear all the trigger data but keep the trigger strings intact so you don't lose text all over your map. war3map.j gets generated again from scratch the next time you save so that won't be an issue but you might run into a problem when things try to make new TRIGSTR_s. Deleting the war3map.wts is not a good idea.

I tried just editing a line in war3map.j and it didn't persist after I saved via MPQ editor, opened the map, and saved again, but there may yet be a way to simply change the text of the line that calls the native. I believe if the call is in your map's Custom Script header you can edit the war3map.wct directly and change it to the right name for the native, but that's more of a special case.

I'm not very experienced in this. Make a backup of your map and give it a whirl trying different things.
 
Does this mean removing all trigger data, or just the offending trigger? Also, where can I learn how to do this?
You need to export the wtg file, then replace the ptr functions, with the current ones by adding the prefix Blz make sure the wtg file is not changed on saveup (charset), then reimport that wtg into your map if all worked fine your map should now be editable and work under current patch.
With default windows 7 Editor I succesfully did already such an update.

Make a backup copy of your Map, the wtg file can be broken and then the maps triggers also will be.
 
Level 4
Joined
Jan 6, 2008
Messages
69
You need to export the wtg file, then replace the ptr functions, with the current ones by adding the prefix Blz make sure the wtg file is not changed on saveup (charset), then reimport that wtg into your map if all worked fine your map should now be editable and work under current patch.
With default windows 7 Editor I succesfully did already such an update.

Make a backup copy of your Map, the wtg file can be broken and then the maps triggers also will be.

I did exactly this and it worked perfectly! Thank you Tasyen, Pyrogasm and TriggerHappy for your help!
 
Level 4
Joined
Jul 8, 2015
Messages
7
Some sounds that should be playing locally (as in, as a 3D sound at a specific location) appear to play globally instead now, not sure if there's any specific rhyme or reason to it. Other examples I've found include the Slow spell SFX, and the Satyr death sound (incredibly noticeable in multiplayer maps that have you killing satyrs, example here:
).
 
Level 3
Joined
Jul 2, 2014
Messages
45
Okay I'm not even sure what I'm facing at here, but for the natives BlzSetAbilityTooltip(whichAbil, str, abilLevel) and BlzSetAbilityExtendedTooltip(whichAbil, str, abilLevel), it seems that if those fields in the Object Editor are not customized (example: Channel has those fields past level 1 empty) they just do not work, to make them work I had to fill the fields with random values (Ability has 20 levels, Tooltip is "T1" to "T20" and ExtendedTooltip "EX1" to "EX20"); they did change however but ended up copying the level 1 texts. I'm really struggling to describe this bug and so far I solved it but I could replicate it I think.

I'd say; if you attempt to change tooltip and extended tooltip, and their value are empty, you'll endup changing the first level that has a value and edit for that level only, and not the desired level, but will end up being your text for all the higher levels of that ability.

Meaning if your Channel has 3 levels, you don't edit tooltip and extended tooltip, changing level 3 tooltip will endup changing level 1 tooltip and tooltip displayed to your level 3 channel will be identical to your level 1 channel's tooltip.

Not sure if that's clear enough tho'.

Edit: added test map thanks to Niklas @HiveDiscord
 

Attachments

  • Tooltip bug.w3x
    27.3 KB · Views: 135
Last edited:
This seems late but I tried animating special effects by rotating their Roll, Yaw and Pitch properties, it seems Pitch (or rotation of Y axis) is bugged on values [90..270] degrees if changed over time (the effect is like it tries to render it on the opposite angle, and then corrects it on the next frame). Yaw does this correctly. (I can't provide a video right now.)
 
Level 14
Joined
Jan 16, 2009
Messages
716
@Almia
Try this:
JASS:
if dx == 0. and dy == 0. then
    set this.angleY = 0.
    if dz > 0 then
        set this.angleX = - bj_PI/2.
    else 
        set this.angleX = bj_PI/2.
    endif
else
    set ax = Math.abs(dx)
    set ay = Math.abs(dy)
    set px = ( ax / ( ax + ay ) )
    set py = 1. - px
    if dy == 0 then
        set this.angleX = 0.
    else
        set this.angleX = Atan(dz/dy)*py
    endif
 
    if dx == 0 then
        set this.angleY = 0.
    else
        set this.angleY = -Atan(dz/dx)*px
    endif
endif
set this.angleZ = Atan2(dy,dx)
call BlzSetSpecialEffectOrientation(this.effect,this.angleX,this.angleY,this.angleZ)
 
Last edited:
I tried to test my maps in 1.29, and I appear to be unable to run any of my maps at all.
The map select screen turns up blank.
The same happens to a Wurst test map that I tried running before that.
Most other maps are totally fine.
This appears to be an issue with .w3x files that have been tampered with outside the editor, which I personally do (for easier terrain / object data management), and what Wurst does as well.
I'm attaching both a protected and unprotected version if anyone wishes to take a look, though both of them are tampered with and both don't work.
I also use vJASS imports for importing triggers, unfortunately none of the source code is in the map itself.

Anyone else having same issues?

Late response time!

The script has a syntax error which is preventing it from compiling.

We looked it over and will investigate improving error messaging.
 
@Almia
Try this:
JASS:
if dx == 0. and dy == 0. then
    set this.angleY = 0.
    if dz > 0 then
        set this.angleX = - bj_PI/2.
    else
        set this.angleX = bj_PI/2.
    endif
else
    set ax = Math.abs(dx)
    set ay = Math.abs(dy)
    set px = ( ax / ( ax + ay ) )
    set py = 1. - px
    if dy == 0 then
        set this.angleX = 0.
    else
        set this.angleX = Atan(dz/dy)*py
    endif
 
    if dx == 0 then
        set this.angleY = 0.
    else
        set this.angleY = -Atan(dz/dx)*px
    endif
endif
set this.angleZ = Atan2(dy,dx)
call BlzSetSpecialEffectOrientation(this.effect,this.angleX,this.angleY,this.angleZ)

overly complicated, what I did was to store the new value and then reapply that whenever I try to update the pitch
JASS:
        method operator pitch= takes real r returns nothing 
            call BlzSetSpecialEffectPitch(effect, t__pitch)
            set t__pitch = r 
            call BlzSetSpecialEffectPitch(effect, r)
        endmethod
 
Ahoy, there's something that i tell again and again, but :
☼ Chaos morph tend to make desync when morphed units have applied techs, please fix these
☼ In B-net login screen in War3, the selection box is shifted like if there's no any black band : i've to follow the red line to select my username (though buttons functions correctly)
upload_2018-12-7_12-49-9.png
☼ Even if i rehost the exact same map it's uploaded again in the cloud. Being 30mb, it's painfull to wait at least 5mn to get my heavy maps fully downloadable at every new hosts. It is said that maps are stored in the cloud but not if it's temporary or permanently. It would be GREAT to be able to manage what we uploaded ; if it's planned in future updates then nevermind.

As usual, my suggestions :
► Make a map setting that define the max selection (from 12 to 48 for example)
► Increase the pathfinding buffer (for now it laggs out units when you move more than 400 in the same time)
► Make the UI customizable in a map.
► Being able to add ressources/attack/armor types in custom maps, creating then new constants in the map data.
► Put a new field for art for each objects, one for classic and one for reforged for TWO BIG REASONS :
------> Old models will looks ugly in Reforged
------> New models will destroy the FPS of smaller computers. Many players keep playing classic because of the low performance impact. It shall be very frustrating to be forced to buy a new computer just to be able to continue to play. It's not surprising that many people are migrating to third-party Wc3 servers.
You can also set what is the default model.
 
Level 7
Joined
Oct 3, 2008
Messages
183
So I've been replaying the campaigns recently, and I'm onto chapter 3 of the Reign of Chaos campaign for Night Elves: The Awakening of Stormrage. The Primal Guardians each used to have an elemental Orb in their inventory, respectively Orb of Fire, Orb of Frost and Orb of Lightning. However, these just spawn at their feet now and are able to be picked up by the player. (easily visible in the opening cinematic.)

In Chapter 4 of the same campaign, The Druids Arise, the Corrupted Ancient Protectors don't properly turn when attacking, though I believe this was an issue already in the original WC3 release.

In Chapter 5, Brothers is Blood, when Malfurion encounters the feral Druids of the Claw the voice line for the Druid of the Talon doesn't play.
 
Last edited:

deepstrasz

Map Reviewer
Level 69
Joined
Jun 4, 2009
Messages
18,804
In Chapter 4 of the same campaign, The Druids Arise, the Corrupted Ancient Protectors don't properly turn when attacking, though I believe this was an issue already in the original WC3 release
Yes and here is the fix. Hopefully they will implement it or at least Hive would make these official in the Models section:
Rooted Corrupted Ancients attack animation bug
 

mafe

Map Reviewer
Level 24
Joined
Nov 2, 2013
Messages
869
So I've been replaying the campaigns recently, and I'm onto chapter 3 of the Reign of Chaos campaign for Night Elves: The Awakening of Stormrage. The Primal Guardians each used to have an elemental Orb in their inventory, respectively Orb of Fire, Orb of Frost and Orb of Lightning. However, these just spawn at their feet now and are able to be picked up by the player. (easily visible in the opening cinematic.)

In Chapter 4 of the same campaign, The Druids Arise, the Corrupted Ancient Protectors don't properly turn when attacking, though I believe this was an issue already in the original WC3 release.

In Chapter 5, Brothers is Blood, when Malfurion encounters the feral Druids of the Claw the voice line for the Druid of the Talon doesn't play.
Adding to this, in Chapter 7 of the TFT nightelf campaign, The Ruins Of Dalaran, you can research natures blessing an unlimited number of times. However, it has no effect at all (at least not on armor), and costs resources all the time. In this level, my tree of eternity also got destroyed, but instead he became an unselectable walking tree which kept attack the naga units that were still in the bloodelf base. The naga couldnt attack the tree however, and the tree only despawned after the killing the last naga that was still attacking the bloodelves. I'm not sure if I had uprooted the tree before it got "destroyed", and if it has to do with the bugged upgrade.
 
Last edited:
Level 13
Joined
May 10, 2009
Messages
868
Adding to this, in Chapter 7 of the TFT nightelf campaign, The Ruins Of Dalaran, you can research natures blessing an unlimited number of times. However, it has no effect at all (at least not on armor), and costs resources all the time. In this level, my tree of eternity also got destroyed, but instead he became an unselectable walking tree which kept attack the naga units that were still in the bloodelf base. The naga couldnt attack the tree however, and the tree only despawned after the killing the last naga that was still attacking the bloodelves. I'm not sure if I had uprooted the tree before it got "destroyed", and if it has to do with the bugged upgrade.

There's also another minor inconsistency in that very same map where in the main quest description, the map maker said that Fan of Knives is capable of damaging units in ethereal form, but that isn't a such big deal.
 
Level 3
Joined
May 17, 2012
Messages
15
another bug: you can't change the tooltips for certain levels of an ability unless you've edited that ability field in the object editor (i.e: made the text pink as seen here
V5EVxQB.png
)

for example: change moon glaive (or any ability with 1 default level) without changing the level 2 tooltip in the object editor, then use
JASS:
call BlzSetAbilityTooltip('Amgl', "Moon Glaive lvl 2", 2)

the tooltip won't change ingame (as seen in the hidden screenshot)
qAQTj6v.jpg


a test map is attached
 

Attachments

  • testtooltipchange.w3x
    17.5 KB · Views: 119
another bug: you can't change the tooltips for certain levels of an ability unless you've edited that ability field in the object editor (i.e: made the text pink as seen here
V5EVxQB.png
)

for example: change moon glaive (or any ability with 1 default level) without changing the level 2 tooltip in the object editor, then use
JASS:
call BlzSetAbilityTooltip('Amgl', "Moon Glaive lvl 2", 2)

the tooltip won't change ingame (as seen in the hidden screenshot)
qAQTj6v.jpg


a test map is attached
IIRC this has already been documented, as the native only works for level 1.
 
Level 25
Joined
Feb 2, 2006
Messages
1,685
When I host a game, it often says the name is already used which it is clearly not (tried many different names). I had to reconnect to the Battle.net.
My friend in Battle.net saw only the game ID but not the name.
When my friend left the lobby of my hosted game I was kicked out of Battle.net.
Half of the funmaps we joined yesterday hosted by other players ended immediately after loading with a score screen.

edit: And pls add a trigger function which gets the current host or the new host after one player has left or allow to set the priority for players who become hosts next.
 
Last edited:
Level 14
Joined
Aug 31, 2009
Messages
775
It seems that Blizzard's GUI function to get the pathability of a given point no longer works - it always returns true.

For example, checking if "Pathability of type walkable at (point)" returns true in all cases tested - pathing blockers, buildings, cliffs etc all produce a positive.
 
Level 19
Joined
Dec 12, 2010
Messages
2,069
It seems that Blizzard's GUI function to get the pathability of a given point no longer works - it always returns true.

For example, checking if "Pathability of type walkable at (point)" returns true in all cases tested - pathing blockers, buildings, cliffs etc all produce a positive.
remember its bugged to be reverted? or does it return true on pahtable as well?
 
So I've been replaying the campaigns recently, and I'm onto chapter 3 of the Reign of Chaos campaign for Night Elves: The Awakening of Stormrage. The Primal Guardians each used to have an elemental Orb in their inventory, respectively Orb of Fire, Orb of Frost and Orb of Lightning. However, these just spawn at their feet now and are able to be picked up by the player. (easily visible in the opening cinematic.)
I do not know if this is the case here, but if a hero is assigned to an AI player, it can drop "useless" items on ground. I think this is part of how AI works.
 
Level 20
Joined
Apr 12, 2018
Messages
494
I do not know if this is the case here, but if a hero is assigned to an AI player, it can drop "useless" items on ground. I think this is part of how AI works.
Yeah, in RoC the Orbs didn't have the Item Levels they got in TFT; the AI never drops Lv.0 items I think (which was the entire purpose of the Phat Lewt item which was used to stop the AI from picking stuff up). The three Orbs got reused as vendor items on the melee vendor buildings so that messed with some things.

The Orbs themselves I don't believe were ever Lv.0 items.

The other thing that could be happening is those guys just plain don't have the Inventory ability for whatever reason.
 
  • Like
Reactions: Rui
Level 7
Joined
Oct 3, 2008
Messages
183
Yeah, in RoC the Orbs didn't have the Item Levels they got in TFT; the AI never drops Lv.0 items I think (which was the entire purpose of the Phat Lewt item which was used to stop the AI from picking stuff up). The three Orbs got reused as vendor items on the melee vendor buildings so that messed with some things.

The Orbs themselves I don't believe were ever Lv.0 items.

The other thing that could be happening is those guys just plain don't have the Inventory ability for whatever reason.

Opening the map with cascview has them not have an inventory, yeah. But I also see nowhere in the triggers or anywhere that adds or tries to give the orbs to them. I seem to remember the orbs working fine in the past so maybe the map got changed? I actually don't know what happens if you remove the inventory hero ability from a unit that you've given an item.

Edit; yep, just tested it. If you give a preplaced unit an item already (so not through triggers, but by selecting it and going to the inventory tab), and then remove the inventory ability in the object editor, there will be no item in the editor but upon loading the game the item will be at the units feet. So in some patch the ghosts got their inventory ability removed and that causes the oddity.
 
Status
Not open for further replies.
Top