• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • It's time for the first HD Modeling Contest of 2025. Join the theme discussion for Hive's HD Modeling Contest #7! Click here to post your idea!

War3 Reign of Chaos Beta Remake

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
The Reign of Chaos Beta has been shrouded in mystery... until now.

The aim is to recreate the gameplay of the of the first release of the Reign of Chaos Beta from 2002-01-25.
As far as I know, that's the earliest build of the game that people outside of Blizzard or game magazines were able to get their hands on.

Uses the latest version of WC3.

AI works, so you can play with computers as well as other people.

Why?​

The Reign of Chaos beta has always been a historical curiosity for me, and I'm sure many others.

While there exist actual beta builds of war3 floating around, it's impossible to actually play them with anyone, or even the AI. This limitation, combined with regular crashes, makes it difficult to appreciate the numerous intriguing differences between the beta and the retail version.

With this project, people will finally have an easy way to play around with the 'Beta' version of Warcraft 3, in actual multiplayer games, and with the QOL improvements brought by the modern version of the game.

Gameplay differences

Human​

  • Archmage
    • Water Elemental does not attack air, but does splash damage to enemy ground units.
  • Mountain King
    • Thunder Clap stuns instead of slows, so it is like War Stomp.
    • No Bash.
    • Avatar drains mana while active, and can be turned off.
    • Avatar does not confer spell immunity.
  • Paladin
    • Divine Shield drains mana while active, and can be turned off.
    • Resurrection revives units in a target area instead of around the Paladin.
  • Peasant
    • No Speedbuilding. Enters a building to construct it like a Peon.
    • No Militia.
  • Footman
    • Defend protects against ranged attacks of all types, except artillery.
  • Priest
    • Inner Fire is his Initiate spell.
    • Dispel Magic is single-target.
    • Heal is his Master spell.
  • Steam Tank
    • Uses a wrecking ball to attack structures at melee range.
    • Can load up to 4 ground units of any type.
    • When at least one Rifleman is loaded, gains a ranged attack against ground and air units.
    • Each extra Rifleman increases the speed of both of the Steam Tank's attacks.
  • Workshop
    • Can be built at tier-1, only requires a blacksmith.
  • Mage Tower
    • Trains Priest and Sorceress.
  • Arcane Sanctum
    • Requires Mage Tower. Enables Sorceresses. Contains upgrades for casters.

Orc​

  • Far Seer
    • Does not have Feral Spirit.
  • Blademaster
    • Mirror image only creates 1 image, that is more resilient with each level.
    • Critical Strike always does triple damage, but the chance increases with level.
    • Invulnerable while Bladestorming.
  • Tauren Chieftain
    • Does not have War Stomp.
    • Has 'Command Aura' instead of Endurance, which increases damage.
    • Reincarnation has a mana cost. It works the same way as it does in retail, but if his mana is too low when he dies he will not revive. It also has different effect art.
    • Has different 'Pissed' lines.
  • Peon
    • The only unit that has Pillage, which doesn't need to be researched.
  • Grunt
    • Has a Berserker Rage ability that increases attack speed.
  • Troll Headhunter
    • Has an upgrade that increases night sight range.
  • Kodo Beast
    • Requires Fortress.
    • Does not attack.
    • Has a mana pool.
    • Instead of War Drums, has two auras: Healing Drums and Speed Drums. They drain his mana while active.
  • Wyvern
    • Requires Wyvern Taming research to unlock.
  • Shaman
    • Bloodlust has different effect art.
    • Voiced by Chris Metzen.
  • Witch Doctor
    • Instead of Healing Ward, has Ancestral Guardian, which is similar to the Shadow Hunter's Serpent Ward.
  • Tauren
    • Instead of Pulverize, has an ability called 'Warstomp', which functions like Critical Strike.
  • Orc Burrow
    • Attacks automatically without needing to load any units.
    • Can still load Peons, but also Grunts and Headhunters. The unit type does not matter, loading units just increases the attack speed.
    • Does not provide food.
  • Techtree
    • War Mill is split into two buildings: Lumber Mill and Forge.
    • Pig Farms provide food instead of Orc Burrows.
    • Orc Burrows function as the primary tower. Watch Tower does not exist.

Undead​

  • Death Knight
    • Death Pact creates a damage-shield instead of restoring life.
    • No Unholy Aura.
    • Animate Dead raises units in a target area, instead of around the Death Knight.
  • Lich
    • Frost Nova damages ground units around the Lich, instead of targeting a unit.
    • Death & Decay has different art effects.
  • Dreadlord
    • Face texture is slightly different.
    • Instead of Inferno, has an ability called Dark Summoning, which works like the StarCraft Arbiter's Recall ability.
  • Acolyte
    • Can not unsummon buildings.
    • Sacrifice requires research.
  • Gargoyle
    • Requires the Gargoyle Spire building.
    • Stone Form costs mana, and drains mana while active. It does not confer Spell Immunity.
  • Necromancer
    • Instead of Cripple, has Corpse Explosion.
  • Meat Wagon
    • Trained from the Crypt.
    • Requires Halls of the Dead.
    • Attack requires research from the Slaughterhouse called Fling Corpse.
  • Abomination
    • Instead of Disease Cloud, has an upgrade to explode on death.
  • Frost Wyrm
    • Freeze Breath on buildings is a manually-cast ability.
    • Attack is an artillery weapon-type, so it has an Attack Ground command.
  • Buildings
    • Regenerate health on blight.
    • Hall:
      • Can return gold. Though acolytes won't do this, it does prevent them from being built next to a gold mine.
      • Tier 2/3 does not attack.
    • Graveyard: Contains no research and does not return lumber. Only purpose is to generate corpses.
    • Sacrificial Pit: Available at the tier-1. Contains armor/attack upgrades.
    • Gargoyle Spire: Enables Gargoyles and contains the Stone Form upgrade.

Night Elf​

  • Demon Hunter
    • Has Permanent Immolation while in Metamorphosis form.
  • Keeper of the Grove
    • Is a melee hero.
  • Priestess of the Moon
    • Instead of Scout, has a hero version of the Huntress' Sentinel ability.
    • Starfall targets an area instead of happening around the caster. It also does not damage spell-immune units.
  • Wisp
    • Has a different icon.
    • Instead of a standard repair ability, has a tier-2-researched healing ability for both units and structures that costs mana instead of resources.
    • Consumed when constructing any building, not just ancients.
  • Huntress
    • Instead of Sentinel, has a Scout ability that sends an owl to reveal an area.
    • No bouncing attack.
  • Dryad
    • Spell Immunity requires research.
    • Does not have Slow Poison.
  • Druid of the Talon
    • Has a slightly different model.
    • Crow Form is his only ability.
  • Druid of the Claw
    • Instead of Roar, has Battle Roar, a passive ability while in Bear Form that grants a chance on attack to reduce nearby enemies' armor.
    • Instead of Rejuvination, has the Barkskin ability, which increases armor of a target unit.
  • Chimaera
    • Corrosive Breath is a manually-cast ability that deals damage-over-time to buildings. They still retain their siege attack against buildings.
    • Attack is an artillery weapon-type, so it has an Attack Ground command.
  • Entangled Gold Mine
    • Harvests gold from the mine automatically, without any Wisps. The Tree of Life must manually click the Entangle Gold Mine ability when near a gold mine to entangle it.
  • Moon Well
    • Replenishes mana only, not life.
    • Regenerates mana during day and night.
  • Ancient Protector
    • When rooted, attacks like a StarCraft Sunken Colony.
  • Bear Den
    • Enables production of Druids of the Claw. Contains the Spell Immunity upgrade for Dryads.
  • Shadow Meld
    • Has a different icon.

General balance differences​

  • Attack and Armor Types are different. How they work in the beta is hard-coded, not exposed like in the modern version, so I did some comprehensive testing by adding custom units into the beta build to work out what the %s are:
  • Heroes are summoned from your Town Hall.
  • Altars are tier-2 buildings whose only purpose is to revive your heroes.
  • Heroes don't start with any skill points, they must level up first.
  • Heroes can spend multiple skill points in a row on a single ability, no need to alternate.
  • Agility increases movement speed, but not attack speed.
  • Ultimate abilities are unlocked at level 5.
  • Ultimate abilities ignore spell immunity. Interesting, because they don't in retail Reign of Chaos, but do in Frozen Throne.
  • Max hero level is 15.
  • No such thing as 'Hero duration'. Spells last their full duration on both heroes and units.
  • Upkeep levels are 30, 60, 90.
  • Players start with 4 peons. Night Elves still start with 5.
  • Workers have more dps.
  • Most units have less health, damage, and movement speed.
  • Most units are cheaper, attack faster and see farther.
  • Dispels do not damage summoned units.
  • Siege units' splash only damages enemies, and they have a lower minimum range.
  • All creeps sleep.

Thanks to​

What's next?​

I'll probably update this at some point, based on feedback, as people discover things that are inaccurate or buggy.

I was thinking of making an edit of the Reign of Chaos campaign using the gameplay of the beta, possibly implementing some of the unused abilities that are in the original beta's data files, but weren't actually implemented in the beta's standard 'melee' mode. For example, the Far Seer's "Call Storm", or the Death Knight's "Unholy Aura" (reduces enemy armor). Another idea I had was to have some of the variant units in the campaign be based off slightly later beta versions, like 1.03, so you can get an idea of how the units evolved during the beta.
I haven't committed to that idea, but let me know if it would interest you.

I could probably throw together a TFT Beta remake if people would like to see it. From what I can tell, it'd be pretty similar to Reign of Chaos 1.06, but with early iterations of TFT stuff.
Previews
Contents

[W3Beta] Gnoll Wood (Map)

[W3Beta] Golems in Mist (Map)

[W3Beta] Lost Temple (Map)

deepstrasz

Map Reviewer
Level 74
Joined
Jun 4, 2009
Messages
19,947
While it might be work put into it and a nice vintage collection thingy, it's pretty much some object data editing of the game's stuff.

Simple.


If you want more reviews, you should participate in the The Grand Review Exchange!

R U L E S

Site Rules
Map Submission Rules

M A P - D E S C R I P T I O N
BB CODES
BB Codes | HIVE

MELEE MAPS
Description Guide - Melee Maps
Describing Your Melee Map
Melee Map Description Generator v1.3


MAPS IN GENERAL
The importance of a Description
Description Guide - Maps
Map Thread Guide
Map Description Making: Good & Bad
Map Description - Templates
Map Description Generator [1.2]

How to Add a Screenshot to your Map Description


ADDITIONAL NECESSARY INFORMATION
  • A credits list in the map thread description is required where the names of the resource (models, skins, icons, spells, sound etc.) authors are mentioned along with the specific resource. It would be a luxury to have links leading to the used resources. Credits in the Quest Log would be appreciated too.
  • A detailed changelog in the first post would be helpful to reviewers and notify fans about the newest implementations to your map.
  • Map thread tags are important. Please use those that fit and not more or none.


M A P - C R E A T I O N - G U I D E S

If you're not satisfied with the review and wish another opinion, contact the other reviewers or use the staff contact:
https://www.hiveworkshop.com/forums/staff-contact.692/
 
Last edited:
Level 11
Joined
May 31, 2019
Messages
150
While it might be work put into it and a nice vintage collection thingy, it's pretty much some object data editing of the game's stuff.

Simple.

There's actually a decent chunk of scripting done for this. Many abilities just couldn't be made to work the way they did in beta with exclusively object editor changes.

For example, the Tree of Life / Entangled Gold Mine mechanic, which has the Night Elves using their Tree of Life to harvest the gold from a mine, instead of wisps.

JASS:
// TREE OF LIFE - UNENTANGLE MINE
//===========================================================================
function PIES_UnentangleMine takes integer treeId returns nothing
    local integer mineCurrentGold
    local effect mineDeathEffect
    if pies_tree_entagledMine[treeId] == null then
        // Tree has no entangled mine.
        return
    endif
    // Preserve its gold amount.
    set mineCurrentGold = GetResourceAmount(pies_tree_entagledMine[treeId])
    // Restore its origin model.
    call BlzSetUnitSkin(pies_tree_entagledMine[treeId], 'ngol')
    // Take off its Entangled Gold Mine ability.
    call UnitRemoveAbility(pies_tree_entagledMine[treeId], w3_ABIL_ENTANGLED_GOLD_MINE)
    // Restore its gold amount.
    call SetResourceAmount(pies_tree_entagledMine[treeId], mineCurrentGold)
    // Stop and destroy the harvest timer
    call FlushChildHashtable(pies_table, GetHandleId(pies_t_tree_gold_interval[treeId]))
    call PauseTimer(pies_t_tree_gold_interval[treeId])
    call DestroyTimer(pies_t_tree_gold_interval[treeId])
    // Show entangled mine death effect.
    set mineDeathEffect = AddSpecialEffect(pies_MDL_ENTANGLED_GOLD_MINE, GetUnitX(pies_tree_entagledMine[treeId]), GetUnitY(pies_tree_entagledMine[treeId]))
    call DestroyEffect(mineDeathEffect)
    // Clear the tree's variables.
    set pies_t_tree_gold_interval[treeId] = null
    set pies_tree_entagledMine[treeId] = null
    set pies_tree_gold_harvest_interval[treeId] = 0
    if pies_t_tree_gold_interval_decr[treeId] != null then
        call FlushChildHashtable(pies_table, GetHandleId(pies_t_tree_gold_interval_decr[treeId]))
        call PauseTimer(pies_t_tree_gold_interval_decr[treeId])
        call DestroyTimer(pies_t_tree_gold_interval_decr[treeId])
        set pies_t_tree_gold_interval_decr[treeId] = null
    endif
    set pies_tree_gold_saturated[treeId] = false
    // Re-enable the tree's entangle ability
    call BlzUnitHideAbility(bribe_UDexUnits[treeId], pies_ABIL_BETA_ENTANGLE_GOLD_MINE, false)
    set mineDeathEffect = null
endfunction

// TREE OF LIFE - ENTANGLE GOLD MINE
//===========================================================================
// Harvest the mine
function PIES_EntangledMine_Harvest takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer treeId = LoadInteger(pies_table, GetHandleId(t), 0)
    local real treeX = GetUnitX(bribe_UDexUnits[treeId])
    local real treeY = GetUnitY(bribe_UDexUnits[treeId])
    local integer playerCurrentUpkeep = 0
    local real playerGoldTax = 0
    local integer goldToTake = 0
    local integer goldToGain = 0
    local player ownerOfTree
    local texttag goldHarvestText
    local timer collapseTimer
    local integer collapseTimerId = 0
    local unit dummyGoldCollapser
    if pies_tree_entagledMine[treeId] == null then
        // Tree has no entangled mine.
        return
    endif
    set ownerOfTree = GetOwningPlayer(bribe_UDexUnits[treeId])
    set playerCurrentUpkeep = GetPlayerState(ownerOfTree, PLAYER_STATE_GOLD_UPKEEP_RATE)
    // Handle gold mine having less than 10 gold.
    set goldToTake = IMinBJ(GetResourceAmount(pies_tree_entagledMine[treeId]), pies_ENTGM_HARVEST_AMOUNT)
    if playerCurrentUpkeep > 0 then
        // Handle Upkeep.
        set playerGoldTax = 1-(0.01*I2R(playerCurrentUpkeep))
        //call PIES_Debug("Your gold tax: " + R2S(0.01*I2R(playerCurrentUpkeep)) + " | gross income: " + R2S(I2R(goldToTake)) + " | net income as % of gross: " + R2S(playerGoldTax))
        //call PIES_Debug("net income: " + I2S(MathRound(I2R(goldToTake)*playerGoldTax)))
        set goldToGain = MathRound(I2R(goldToTake)*playerGoldTax)
    else
        set goldToGain = goldToTake
    endif
    // Set mine animation
    call SetUnitTimeScale(pies_tree_entagledMine[treeId], 1)
    call SetUnitAnimation(pies_tree_entagledMine[treeId], pies_ANIM_WORK_FIFTH)
    // Transfer gold from the mine to the player.
    call AddResourceAmount(pies_tree_entagledMine[treeId], -1*goldToTake)
    call SetPlayerState(ownerOfTree, PLAYER_STATE_RESOURCE_GOLD, GetPlayerState(ownerOfTree, PLAYER_STATE_RESOURCE_GOLD) + goldToGain)
    // Show floating text on the tree for the player.
    if GetLocalPlayer() == ownerOfTree then
        set goldHarvestText = CreateTextTag()
        call SetTextTagPos(goldHarvestText, treeX, treeY, 50)
        call SetTextTagTextBJ(goldHarvestText, pies_CHAR_PLUS + I2S(goldToGain), 10)
        call SetTextTagColor(goldHarvestText, 254, 211, 18, 255)
        call SetTextTagVisibility(goldHarvestText, true)
        call SetTextTagVelocityBJ(goldHarvestText, 64, 90)
        call SetTextTagPermanent(goldHarvestText, false)
        call SetTextTagLifespan(goldHarvestText, 1.5)
        call SetTextTagFadepoint(goldHarvestText, 1)
    endif
    // Decide how to proceed with subsequent harvests
    if pies_t_tree_gold_interval_decr[treeId] == null then
        // Interval Decrease timer is over, so the mine is saturated has reached its maximum harvest rate.
        if pies_tree_gold_saturated[treeId] then
        else
            // Start the timer to be periodic.
            call TimerStart(pies_t_tree_gold_interval[treeId], pies_REAL_ENTGM_FULL_INTERVAL, true, function PIES_EntangledMine_Harvest)
            // Then set the flag so we don't need to check this again.
            set pies_tree_gold_saturated[treeId] = true
            //call PIES_Debug("Tree's mine is fully saturtated.")
        endif
    else
        // Gold Mine harvest rate is still accelerating.
        call TimerStart(pies_t_tree_gold_interval[treeId], pies_tree_gold_harvest_interval[treeId], false, function PIES_EntangledMine_Harvest)
        //call PIES_Debug("Tree's mine will harvest again in " + R2S(pies_tree_gold_harvest_interval[treeId]) + "s")
    endif
    // Cause the gold mine to collapse if needed.
    if GetResourceAmount(pies_tree_entagledMine[treeId]) <= 0 then
        // Set the gold mine's amount to 0 to make sure the player won't harvest a negative amount. (I don't know if it's a problem if they do.)
        call SetResourceAmount(pies_tree_entagledMine[treeId], 0)
        // Store the mine
        set pies_tmpUnit = pies_tree_entagledMine[treeId]
        // Unentangle the mine
        call PIES_UnentangleMine(treeId)
        // Create a dummy unit.
        set dummyGoldCollapser = CreateUnit(ownerOfTree, pies_DUMMY, GetUnitX(pies_tmpUnit), GetUnitY(pies_tmpUnit), bj_UNIT_FACING)
        // Give it the harvest (instant) ability.
        call UnitAddAbility(dummyGoldCollapser, 'ANha')
        // Order the dummy to harvest, causing the collapse.
        call IssueTargetOrderById(dummyGoldCollapser, ORDER_harvest, pies_tmpUnit)
        // Set dummy's expiration
        call UnitApplyTimedLife(dummyGoldCollapser, 'BTLF', 1.125)
    endif
    // Clear leaks
    set goldHarvestText = null
    set ownerOfTree = null
    set t = null
    set collapseTimer = null
endfunction

// Increase the rate of gold collection.
function PIES_EntangledMine_DecreaseHarvestInterval takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer treeId = LoadInteger(pies_table, GetHandleId(t), 0)
    // Lower the delay between harvests.
    set pies_tree_gold_harvest_interval[treeId] = RMaxBJ(pies_REAL_ENTGM_FULL_INTERVAL, (pies_tree_gold_harvest_interval[treeId] - pies_REAL_ENTGM_INTERVAL_DECREASE))
    if pies_tree_gold_harvest_interval[treeId] == pies_REAL_ENTGM_FULL_INTERVAL then
        // Gold Mine fully saturated, fastest allowed harvest rate reached.
        call FlushChildHashtable(pies_table, GetHandleId(pies_t_tree_gold_interval_decr[treeId]))
        call PauseTimer(pies_t_tree_gold_interval_decr[treeId])
        call DestroyTimer(pies_t_tree_gold_interval_decr[treeId])
        set pies_t_tree_gold_interval_decr[treeId] = null
    endif
    set t = null
endfunction

// Valid Gold Mine search.
function PIES_EntangleMine_Start_Search takes nothing returns boolean
    local unit searchUnit = GetFilterUnit()

    if pies_tmpUnit == null then
        if GetUnitAbilityLevel(searchUnit, w3_ABIL_GOLD_MINE) > 0 then
            // Unit has Gold Mine ability
            if GetUnitAbilityLevel(searchUnit, w3_ABIL_ENTANGLED_GOLD_MINE) == 0 then
                // Unit does not have Entangled Gold Mine ability.
                set pies_tmpUnit = searchUnit
            endif
        endif
    endif
    set searchUnit = null
    return false
endfunction

// Tree casts Entangle.
function PIES_EntangleMine_Start takes unit whichTree returns nothing
    local integer treeId = GetUnitUserData(whichTree)
    //local group g
    local integer currentMineGoldAmount = 0
    local group g

    if pies_tree_entagledMine[treeId] != null then
        // Tree already has an entangled mine.
        return
    endif
    set pies_tmpUnit = null
    set g = CreateGroup()
    // Valid Gold Mine search.
    call GroupEnumUnitsInRange(g, GetUnitX(whichTree), GetUnitY(whichTree), pies_REAL_ENTGM_SEARCH_RADIUS, Filter(function PIES_EntangleMine_Start_Search))
    // Store gold mine if one was found.
    if pies_tmpUnit != null then
        set pies_tree_entagledMine[treeId] = pies_tmpUnit
        // Store existing gold amount.
        set currentMineGoldAmount = GetResourceAmount(pies_tmpUnit)
        // Set its model to an entangled gold mine.
        call BlzSetUnitSkin(pies_tmpUnit, 'egol')
        // Give it the Entangled Gold Mine ability so the game flags it as such.
        call UnitAddAbility(pies_tmpUnit, w3_ABIL_ENTANGLED_GOLD_MINE)
        // Restore previously-stored gold amount
        call SetResourceAmount(pies_tmpUnit, currentMineGoldAmount)
        set pies_tree_gold_harvest_interval[treeId] = pies_REAL_ENTGM_START_INTERVAL
        //set pies_tree_gold_harvest_interval[treeId] = 2 // TEST VALUE
        // Play the entangled mine's birth animation.
        call SetUnitAnimation(pies_tmpUnit, pies_ANIM_BIRTH)
        call QueueUnitAnimation(pies_tmpUnit, pies_ANIM_BIRTH)
        // With this animation speed, should get the first harvest when the birth anim completes.
        call SetUnitTimeScale(pies_tmpUnit, 6)
        // Start timer for the harvest interval.
        set pies_t_tree_gold_interval[treeId] = CreateTimer()
        call SaveInteger(pies_table, GetHandleId(pies_t_tree_gold_interval[treeId]), 0, treeId)
        call TimerStart(pies_t_tree_gold_interval[treeId], pies_tree_gold_harvest_interval[treeId], false, function PIES_EntangledMine_Harvest)
        // Start timer for the decrease of the harvest interval.
        set pies_t_tree_gold_interval_decr[treeId] = CreateTimer()
        call SaveInteger(pies_table, GetHandleId(pies_t_tree_gold_interval_decr[treeId]), 0, treeId)
        call TimerStart(pies_t_tree_gold_interval_decr[treeId], 1, true, function PIES_EntangledMine_DecreaseHarvestInterval)
        // Disable the tree's entangle ability.
        call BlzUnitHideAbility(bribe_UDexUnits[treeId], pies_ABIL_BETA_ENTANGLE_GOLD_MINE, true)
    else
        //call PIES_Debug("Could not find a suitable mine.")
    endif
    // Clear leaks
    call DestroyGroup(g)
    set g = null
endfunction
        
// TREE OF LIFE - UPROOT
//===========================================================================
function PIES_TreeOfLife_Uproot takes unit whichTree returns nothing
    local integer treeId = GetUnitUserData(whichTree)

    call PIES_UnentangleMine(treeId)
endfunction

The scripts don't show up in the trigger editor though, because they're actually tucked into a modified blizzard.j file. I took this approach to make it relatively painless to port the functionality across maps.

Didn't bring this up in the OP since I wasn't sure how relevant it would be to the average player.

Although, at the end of the day, it is still "War3 melee but different", so your assessment is fair lol.
 
Level 27
Joined
Dec 3, 2020
Messages
869
While it might be work put into it and a nice vintage collection thingy, it's pretty much some object data editing of the game's stuff.

Simple.


If you want more reviews, you should participate in the The Grand Review Exchange!

R U L E S

Site Rules
Map Submission Rules

M A P - D E S C R I P T I O N
BB CODES
BB Codes | HIVE

MELEE MAPS
Description Guide - Melee Maps
Describing Your Melee Map
Melee Map Description Generator v1.3


MAPS IN GENERAL
The importance of a Description
Description Guide - Maps
Map Thread Guide
Map Description Making: Good & Bad
Map Description - Templates
Map Description Generator [1.2]

How to Add a Screenshot to your Map Description


ADDITIONAL NECESSARY INFORMATION
  • A credits list in the map thread description is required where the names of the resource (models, skins, icons, spells, sound etc.) authors are mentioned along with the specific resource. It would be a luxury to have links leading to the used resources. Credits in the Quest Log would be appreciated too.
  • A detailed changelog in the first post would be helpful to reviewers and notify fans about the newest implementations to your map.
  • Map thread tags are important. Please use those that fit and not more or none.


M A P - C R E A T I O N - G U I D E S

If you're not satisfied with the review and wish another opinion, contact the other reviewers or use the staff contact:
https://www.hiveworkshop.com/forums/staff-contact.692/
"it's pretty much some object data editing of the game's stuff."
Agree to disagree
 
Level 28
Joined
Jun 11, 2017
Messages
901
Hey there, @PiesOfNorth!

I have played it for my humble channel, rolled random - dice rolled me Night Elves. Lost Temple, 2x2: I and ally-AI versus 2 AI-enemies. What I can say...
  • I liked this night elf mining system!
  • Allies are not so bold to do something. Maybe cause they are "computer (normal)", perhaps on hard they would be more aggressive and reckless to act.
  • Orc Burrow hits hard.
  • Anyway - this balance is strange. Archers feel significantly better than in the current balance, a huntress with magic attack and hard armor, lol?
  • I did not played other races, but still cannot grasp that heroes revives only in the Altar, while they are trained by the main hall...
Overall, if the task was to represent the balance of Warcraft 3 Beta - you have done well. Looking forward to seeing WC3 campaigns with such balance!
 
Level 11
Joined
May 31, 2019
Messages
150
Hey there, @PiesOfNorth!

I have played it for my humble channel, rolled random - dice rolled me Night Elves. Lost Temple, 2x2: I and ally-AI versus 2 AI-enemies. What I can say...

Thanks!

The AI scripts are based on those found in _balance\custom_v0.w3mod\scripts so that may be why they aren't very proactive. I've never really worked with 'Melee' ai scripts before so I'm not sure if there's much that can be done about that.

The 'Magic' attack type in these maps is actually 'Beefy'. Yes, they really called it that lol. The real beta doesn't actually show any information about the old attack/armor types, and so there was no icon for it.
I didn't give much thought into what icon to use as a substitute, although I get that the 'Magic' attack type icon doesn't feel right for it.

Also, I laughed when your ally randomly pinged your under-construction expansion, distracting you and getting your hero killed :gg:
 
Last edited:
Level 27
Joined
Dec 3, 2020
Messages
869
What's interesting is that the night elf archer costs 165 gold. It's interesting because if you play as the high elves in the undead RoC campaign (simple edit in the player properties) in any of the Quel'thalas missions, you will see that the high elven archers cost 165 gold (at least on pre-reforged patches, basically anything from 1.00 to 1.31; I tested it on 1.29.2).
So, I think it's safe to assume that the campaign stuff from the beta carried over into patch 1.00. Maybe not all of it but definitely certain things such as gold costs, attack damage etc...
For example the high elven archers deal 9-20 damage, which is really odd if you ask me. Not many units have such a huge difference in minimum and maximum attack damage, percentage mostly I mean. Luckily the AI doesn't upgrade its attacks (at least for the high elven swordsmen and archers... if my memory serves right), because if it did upgrade to 3/3, the archers would be dealing 12-44 damage. Combine that with Sylvanas' trueshot aura and enjoy infinite suffering :xxd:

The other easy example I can think of is the orc warchief. I don't remember specifics but he has like 380 health and 5-13 attack damage (and a surprisingly fast attack speed lol), which is pathetically low.
I assume he's even from the "alpha version of the pre-beta version" so it makes sense that his stats are low, because I once again think it's safe to assume that WC3, during those stages, was meant to have less beefy units (less stats in everything overall), similar to starcraft 1 (although with slightly more stats but not as the big beefy stats we have today).

I wonder what ultimately drove them to make beefy stats, HP specifically. Don't get me wrong, this is one of the main reasons why I prefer wc3 over sc1 and sc2!!! My army doesn't die in 2 seconds :xxd:.
I think one factor is definitely the heroes, but there were many others for sure!
 
I tried briefly playing this. A while ago I considered doing a project similar to this one myself, but ultimately did not pursue it because I thought that the work would be too time consuming or perhaps impossible. That said, when I looked for a few random elements of the experience thinking they might be missing, it was 2/3 for matching my experience when I dug up the Reign of Chaos Beta and played it a few years ago using Hallfiry's backups.

Things that worked:
- Paladin had the "DEATH TO THE INFIDELS" attack voice line
- The "Corpse Explosion" ability obviously would require huge, huge pains on Reforged and would probably be a technical challenge in and of itself, but given how hard that would be to do, I appreciated the approximate created in this map even if it's not the same as the original experience (since getting Reforged to support the original would be maybe impossible)

Things that bugged or were not as expected:
- When I played as human, one of the "We need more whatever" voice lines that played was a Peon
- When I used Steam Tanks to attack my enemy, I'm 95% sure that the original sound file where you can hear the chain wrenching when it attacks was not present and it played the attack sound from Reforged instead
- When I played as Night Elf, it had the Reforged "create more moon wells" sound instead of the RoC Beta "create more moon wells" sound
- When I played as Night Elf, the Priest of the Moon had the Sentinel ability to summon owls over trees, but they were the modern graphic for the owls and not the Reign of Chaos Beta graphic.
- When my wisps harvested Lumber at the trees, it used the newer shimmer art above the trees instead of the RoC Beta tree harvest art above the tree (here's a link of a video where we could see in passing what the RoC Beta one looked like, from what I recall)
- When I cast the Scout ability from the Huntress, it appeared to use the reforged owl graphic run in circles instead of spawning the RoC Beta graphic for the RoC Beta birdlike owl orbiting and patrolling that area
- The Undead race in the game did not have their RoC Beta color theme around the screen borders and instead had the release colors. (link to a video where in the first few seconds we can see RoC Beta undead border smashed onto a Reforged-style widescreen client and you can see the color difference where the Reforged 16:9 extension graphics around the edge of the screen are a different color)
- The "Day Night Cycle" lights that cause fun colors (which were probably deemed bad for gameplay) like pinky/yellow twilight on the border between day and night, and other such things, were not in this map. I think you can probably extract those from the DNC folders (link to video near to end of ingame day)
- The left and right mouse button, when interacting with inventory items, were using the Reign of Chaos release mouse control order. Left click activated the item and right click would drag it to another slot or to the ground. But, on the Reign of Chaos Beta when I played that on my Windows 10 computer in 2019, what I was seeing was that left mouse click was the drag and right mouse click was the one to activate the items
- From what I could tell, and I might be wrong about this, the unit animations on the RoC Beta engine were playing in a buttery smooth way that matched the monitor FPS. So if you had a 60 FPS monitor or maybe a 144 FPS monitor, you would have that rate be also the smoothness of the unit animations. Instead, on the Reforged the animations, I'm told, are actually locked to 30 FPS. It's hard to see until you see. But I don't even know how you could put that back in your map.

All in all, I think it's fun to see an attempt at restoring this.

Edit:
I deleted some notes that were critical of the map reviewer for labeling this "Simple," and chatting about how I once considered a project like what you have here, but scrapped it. I approached the problem from the standpoint of trying to construct a computer program that would translate all RoC Beta models and textures to Frozen Throne format counterparts. Initially I did some mapmaking with hundreds of ported models of this kind loaded as a graphical mod on 1.30 or 1.31, but in some instances there I was making custom games where I tried to restore things even from Alpha that were removed by the time of the Beta. For example, one of the Reforged employees at the time, in the office, looked in the game code and concluded that the Load Pilot ability for dwarves was still present in the Reforged codebase, even though it is not in the game data files so it wont work until you reconstruct the ability by editing the AbilityData.slk that defines the list of standard abilities. But obviously this ability is not the one if we play the RoC Beta from Hallfiry's archive, for example here I tested and it seemed that the cargo ability at that time was similar to the cargo in your custom map although it somehow enabled the units inside the tank to attack creeps in a glitchy way.

So, anyway, when I look at it more it seems like you approached the problem from the standpoint of manual labor trying to re-introduce mechanics instead of investigating in an automated solution, which is probably why you were able to succeed. Thus I was initially critical of the reviewers based on the premise that when I played your thing it seemed to match what I remembered of the Beta, but after I looked at it more and concluded that you did not perform an automated computer port of all RoC Beta assets into your map if/when the asset was computed to be different from its Reforged counterpart, I decided that what we are looking at is a skillfully done bunch of object editor changes like the reviewer said. And, I'm not a reviewer for a reason, so I removed my previous thoughts on that, and don't need to be critical in either direction.

But maybe my thoughts can give you some inspiration! I didn't check if your Steam Tanks had a unit attack when there were riflemen inside like how it was in my 2019 video when I played the actual beta, but that could be a fun one to add if you didn't already.
 
Last edited:
Level 11
Joined
May 31, 2019
Messages
150
I tried briefly playing this.

Thanks for the detailed feedback!

When I used Steam Tanks to attack my enemy, I'm 95% sure that the original sound file where you can hear the chain wrenching when it attacks was not present and it played the attack sound from Reforged instead

In my testing in the 1.03 beta (the earliest one i could get to run), it seemed like it still uses the same sounds.

- When I played as Night Elf, the Priest of the Moon had the Sentinel ability to summon owls over trees, but they were the modern graphic for the owls and not the Reign of Chaos Beta graphic.
- When my wisps harvested Lumber at the trees, it used the newer shimmer art above the trees instead of the RoC Beta tree harvest art above the tree (here's a link of a video where we could see in passing what the RoC Beta one looked like, from what I recall)

I didn't even notice these were different lol. Part of the reason is probably that when i tried to make wisps harvest in the beta, the game would crash.

- When I cast the Scout ability from the Huntress, it appeared to use the reforged owl graphic run in circles instead of spawning the RoC Beta graphic for the RoC Beta birdlike owl orbiting and patrolling that area
This was one of the trickier ones for sure. I have no idea how the beta decides to make that owl move, so I just approximated it from observation.

- The Undead race in the game did not have their RoC Beta color theme
Completely didn't notice this either lol

- The "Day Night Cycle" lights

I actually did try importing the DNC models from the beta. But it seemed they had no noticeable effect. iirc, it made night less obviously night. less blue, but i didn't make it that pink/red hue that it is in the beta. So either those models are formatted slightly differently from retail, or the way the lighting engine interprets them is different (probably both).

- The left and right mouse button, when interacting with inventory items

This I am aware of, but it is not changeable afaik. Even if I could, I don't think I'd want to.

- From what I could tell, and I might be wrong about this, the unit animations on the RoC Beta engine were playing in a buttery smooth way that matched the monitor FPS.

That is a difference for sure that I guess can only be properly realized in something like Warsmash :p

the Load Pilot ability for dwarves was still present in the Reforged codebase, even though it is not in the game data files so it wont work until you reconstruct the ability by editing the AbilityData.slk that defines the list of standard abilities.

I recall using that w3x2Lni tool to add the beta ability codes into the object editor. However they never seemed to actually appear or be usable. So while there is likely some code references to them remaining, I think whatever makes them usable is missing.

I didn't check if your Steam Tanks had a unit attack when there were riflemen inside like how it was in my 2019 video when I played the actual beta, but that could be a fun one to add if you didn't already.

I did!

Been playing it past week, sure can be fun reliving some Beta days, however I did notice an issue:
Gyrocopter using the wrong model. (using TFT instead of ROC)

Woops. Thanks.
 
Part of the reason is probably that when i tried to make wisps harvest in the beta, the game would crash.
Admittedly I had this problem also, and when a YouTube viewer asked me about it, I hacked the game to add free units that could harvest lumber in the style of a peasant or peon, so that I could explore:


I have no idea how the beta decides to make that owl move, so I just approximated it from observation.
In the same video I linked above, there are some casts of it:


My impression is that it might be literally the same or similar to Far Sight, but where the reveal graphic instead of spinning yellow was a spinning owl. If you want to use the spinning owl graphic, it should be in the MPQ from Hallfiry's archive, I believe, but I could help fetch it if it has any issues. (Retera Model Studio, with some slight modifications, can read from RoC Beta models and save them in TFT format.)

But, that might be where you get into trouble. For example, it may be the case that the version you created is more interesting and unique, and works properly (the one in the video I linked above was spawning the owl at the lowest terrain height so it went underground, and I don't know why you would want to reproduce that kind of bug).
I actually did try importing the DNC models from the beta. But it seemed they had no noticeable effect. iirc, it made night less obviously night. less blue, but i didn't make it that pink/red hue that it is in the beta. So either those models are formatted slightly differently from retail, or the way the lighting engine interprets them is different (probably both).
Strange. I'm not at my computer that has the beta-models-ported-to-TFT folder at the moment (maybe I should just recreate it and rerun the script, since my code is improved now anyway and could load ribbons such as the ones in RoC Beta Death & Decay). But, when I had those models, I recall thinking that I put them in TFT and it looked pink at the border between day and night, and maybe bluer at night, etc. So I had assumed it was the same format. But maybe I'm actually misremembering and confusing that for when I loaded those models on Warsmash.

So while there is likely some code references to them remaining, I think whatever makes them usable is missing.
I literally linked a video of using them on 1.31. The missing portion for Load Pilot was the Pilot Tank ability (the other half of the pairing) which a then Blizzard employee gave me the rawcode for on Discord. So, by default you can give a unit Load Pilot and I think when you click it, it will always give the error message, "Must target an armored transport." What I learned on 1.31 is that if we add back the SLK ability that is missing in the data, and actually provide the Pilot Tank ability, it's physically possible to get it working like in that video of 1.31 that I linked, and designate a unit as a valid target for the "Load Pilot" ability that is still in the game. Then we can have a custom game where we see the "Must target an armored transport" error message on the ability until I click a steam tank, which is an error message that no other ability will show onscreen. And after playing with that, I discovered that some of the RoC beta builds or something actually also have an SLK file with the Pilot Tank rawcode, so it would have most likely been able to figure out what I did on 1.31 without the help of a Blizzard employee, by getting the otherwise secret knowledge from an old game version regarding what to add back and how to structure it.

However, I suppose that information is all out-of-scope for your project because it would actually pertain to some pre-Beta version of the game that isn't the one you are seeking to emulate, since as far as I can tell the ability that was present in the Beta is something very similar to Cargo Hold (Orc Burrow) but with differences in what attacks it enables. Actually, thinking of that, I'm curious, did you see if the Cargo Hold (Tank) thing from the Beta can be used on Reforged modern patches, or did you do some trigger editor type of stuff to make it work where the Rifleman attack would operate? I'm assuming you edited the tank model so that the second Attack animation was named Attack Two and the wrecking ball was named Attack One, so that the game would swap them properly using its built in system that the Beta model appeared to have forgotten to use?
 
Level 11
Joined
May 31, 2019
Messages
150
My impression is that it might be literally the same or similar to Far Sight, but where the reveal graphic instead of spinning yellow was a spinning owl. If you want to use the spinning owl graphic, it should be in the MPQ from Hallfiry's archive, I believe, but I could help fetch it if it has any issues. (Retera Model Studio, with some slight modifications, can read from RoC Beta models and save them in TFT format.)

Ah, yeah that would actually make sense if that's how it works in the beta. Sort of like how the beta Starfall is literally just Blizzard but with different art. (doesn't even go through Spell Immunity, whereas Bladestorm for example does.) It did not occur to me to actually look at that model lol.

I literally linked a video of using them on 1.31. The missing portion for Load Pilot was the Pilot Tank ability (the other half of the pairing) which a then Blizzard employee gave me the rawcode for on Discord. So, by default you can give a unit Load Pilot and I think when you click it, it will always give the error message, "Must target an armored transport."

Ah ok. I must be thinking of other beta abilities that I tried to add in via custom slks with no success (The Black Arrow comes to mind)

Actually, thinking of that, I'm curious, did you see if the Cargo Hold (Tank) thing from the Beta can be used on Reforged modern patches, or did you do some trigger editor type of stuff to make it work where the Rifleman attack would operate? I'm assuming you edited the tank model so that the second Attack animation was named Attack Two and the wrecking ball was named Attack One, so that the game would swap them properly using its built in system that the Beta model appeared to have forgotten to use?

I remember making some slight change to the beta tank model that Ujimasa Hojo uploaded (which corrects the existing animation issues of that original beta model) to get the attacks named the way i needed and for the sound events to match what i observed in the beta.

My finding was that the Burrow's cargo hold disabled all attacking if there was no units in it, which made it unfit for this purpose. So instead the tanks have a 'normal' cargo hold that lets them load anyone (and this is consistent with what i observed in the beta), then just wrote good ol' JASS to toggle the Tank's 'Rifleman' weapon as needed. Each extra Rifleman also increases attack speed, so they are giving a custom 'Gloves of Haste' ability and its level is adjusted as the Riflemen are loaded/unloaded. This was all done in the maps' blizzard.j file.
 
Last edited:
Top