This isn’t going to go live until tomorrow probably. This week was a short week for Stardock as we took last Friday and Monday off for the 4th of July Weekend.
Beta 3-A is mainly just a stability pass at Beta 3 which we felt was too buggy, even for a beta. We put off making the tactical battles public because we still are adding AI and more tactical maps to it so that’ll come in next week in a Beta 3-B.
Beta 3-B will be the last “game” beta. After that, we’ll close up and start focusing on polishing and focusing on bug testing for the retail CD version of the game as well as making available Beta 4 which will be an off-shoot build to let early modders see what we have in store so that they can get started early.
So what you see below is what we did on Tuesday and Wednesday of this week:
* Gameplay *
+ Implemented new City Level Upgrade dialog
- Pops up when one of the local player's cities grows a level, and offers them to pick an ability bonus to grant their city
- These bonuses are whatever AbilityBonusOptions of type "City_Level" found in the xml files, I added a file CityLevelUpBonuses.xml with 5 ability bonuses that Brad said he wanted as options
+ Implemented new spell learned dialog
- This includes having spell costs set by a <SpellLevel> tag in their def xml now, having the spell point cap for a player no longer affected by bonuses from techs or buildings or by the sovereign's wisdom (just uses the spell knowledge level now), and adding the ability to research more spell knowledge levels
- I also added an entry for reaching the next spell knowledge level to the spellbook wnd, which double-clicking will either put in the learning queue or remove from the learning queue, depending on if the player is trying to reach it or not
- Added some UI refreshes for learning new spells and moving spells around in the queue, so that it doesn't take a turn for spell research changes to show up in the tray
- Fixed a bug where starting spells given by the faction weren't getting removed from the researchable spells list when the players were initialized, causing them to have all their starting spells listed twice in the spellbook, once under Known and once under Available or Unavailable
+ Monsters respawn over time.
+ Monsters will attack one another if they are of a different species and in their "territory"
+ Monster aggression based on intelligence of monster
+ Monsters of same type will gradually band together into packs
+ Monsters are spawned with a randomized amount of territory that they consider "theirs"
+ Minor Factions are now in
+ Number of Minor factions generated dependent on map size
+ Minor factions get a NON channeling sovereign
+ Minor factions get a guardian unit
+ Minor factions get a recruitment resource nearby
+ Fixed berserk effect to not be infinite
+ Janusk conversations increased
+ Increased number of Imperial conversation types
+ Additional minor faction types implemented
+ New hubs created for certain minor factions
+ Tech tree cleaned up
+ Fixed possible crash in EffectManager.cpp
+ Re-designed the minimum distance calculation such that the game looks at Number of empty landtiles to determine the minimum distance. The more land tiles, the more distance between players.
+ Added a note to the info cards on resources if a given resource just can't be used by that faction.
+ Some clean up to the various improvements
+ Additional NPC units added
+ Lots of new goodie hut, quest, and hubs added
+ Reveal spell effect no longer infite
+ Re-did design of how minor races are spawned. Mostly moved to AI code
+ Re-did how goodie huts are spawned to ensure there is a good amount of them based on number of land tiles
+ Players, by default, spawn with a fertile land tile nearby along with goodie huts nearby
+ Re-designed how resources are spawned so that the number is based on the number of land tiles on the map
+ New world function: GetDistanceInTiles()
+ New world function: FindNearestCityDistance()
+ Used FindNearestCityDistance to determine better spawning locations for things (i.e. away from towns)
+ New world function: GetNumLandTiles() [That's right, we didn't actually have a function that told us how many land tiles we had. We had ones for water, forest, mountains but not land].
+ Fixed it so that goodie huts respect their spawn level when being ...spawend
+ Renamed GetSpawnRatingQuest (and similar functions) to GetWorldSpawnRatingQuest to conform to established naming conventions
+ New CMapdDAta function added FindLandTiles (just counts up number of land tiles and stores it)
+ Eliminated use of ForceTileMargins(which we may regret) as it was resulting in players and AI to spawn in the water.
+ Made necessary changes to unit.cpp to allow monstes to attack one another without wanting to attack all monsters in general
+ New CUnitType function ::GetAllMonsterUniteTypes. Fills a vector with monsters. If a unit does not have a NPCSawnLikelihood that's greater than 0 then it's a monster.
+ Undid the civilized change I had requested (if you choose civilized you get your city again).
+ AI now using relations weights from coreAIDefs.xml to determine how they feel about you. Still have a few of them to hook up, but most are in.
+ Updating of existing map seeds (removing "Brad" maps)
+ Commented out "IsMobileObject" in BasicGameObject.cpp. I don't think this works as designed.
+ Level 2 Goodie Huts added
+ Level 3 Goodie Huts added
+ Level 4 Goodie Huts added
+ Several new potions added
+ Clean up of monster goodie huts which were being used often as regular goodie huts.
+ Major cleanup and balancing of monsters
+ New secret spell books added
+ Secret spells to go with secret spell books added (quest items)
+ Starting funds increased to 1000
+ Re-balancing of city levels
+ Several new maps added
+ Several new quests
+ Eliminated randomization of spawn ratings of quests as one goes up. I.e. if a player reaches level 4 quests, level 4 quests are going to be spawned, not rand()%4.
+ Warning system to players added to the Trigger manager
+ Fixed the trigger system to work with our finalized design
+ Added Cloth Armor Helmet, Breastpiece, Armlets, and Greaves
+ Replaced/Removed Stone Walls, Platoon, Batallion, Regiment, Melee Weaponry, Longswords, Battle Hammers, War Hammers, Katanas, Claymores, Master Cutting Weapons, Greatswords, Refined Melee Weaponry, Missile Weaponry, Longbows, Archiving, Higher Education, Caravans, Administration, Taxation, Orchards, Beekeeping, Crystal Mining, Forges, Construction, Quarries, Earth Shard Understanding, Fire Shard Understanding, Air Shard Understanding, Water Shard Understanding, Metal Trading, Crystal Trading, Economic Treaties, Research Treaties, Non-Aggression Pacts, Technology Trading, Military Trading, Dynasty Building, Master Cutting Weapons, Archers, Guardians, Monuments, Greater Lore Technologies for the Kingdom and Empire
+ Created Barracks, Cutting Weapons, Superior Cutting Weapons, Blunt Weapons, Superior Blunt Weapons, Ranged Weapons, Literacy, Shard Domination, Refined Enchantment, Summoning, Book of Restoration, Resource Trading, Treaties, Kingdom Swords, Empire Swords, Ranged Weapons, Archery, Specialists, Refined Majesty, Sorcerers, Lore Masters, Refined Enchantment, Summoning Technologies for the Kingdom and Empire
+ Frigate now unlocked with Navies technology
+ Caravans now unlocked through Civics and Bartering technologies
+ added code to hook up AI relations weights for YouKilledMySpouse, MyChildDiedInYourCare, MutualFamily, and MutualGrandChildren
+ You can now use the bow attack on main map to fire at NPCs (before NPCs were not allowed to be targets)
+ Raze city action now unlocked by the fortification technologies in the kingdom/empire trees
+ Refreshed some of the quest destinations to make them stand out more
+ Fixed issue where Peons were showing up for Kingdom, and Peasants showing up for Fallen
+ Embassy now unlocked through Influencing Technology
+ New Tactical Icons hooked up to Claimed Ogre Camp
* AI Improvements *
+ AI smarter about where to build new cities
+ AI economic handling improved
+ AI handling of pioneers improved
+ AI much better at expanding
+ Advisors will inform you when better notable locations have become available
+ Monster AI now able to handle spawning of groups of monsters (like a TON of Darklings) rather than individuals only.
+ Fixed idiotic AI bugs.
+ If you have champions, they will begin warning you of world events they know of
+ implemented AI Relations Weight, Treaties Together.
* Bug Fixes *
+ Fixed bug where factions created during the game (like when creating a new faction) wouldn't have the default player abilities values, causing specifically new factions to not have a 0 mana regen ability.
Starting a new game using one of these custom factions would still work, just the first game they were played with would not set the defaults.
+ SetCityConstructionImprovement: does not create decal for improvement being placed
+ Fixed a crash caused by dereferencing null in CWorld::SavePlayer( ) in World_SavingLoading.cpp. It saves all 32 players (whether they are initialized or not), and on uninitialized players, the faction config is NULL, and the function was accessing members without checking to see if it was valid.
+ Fixed a bug in CTerrainGraphic that was causing the fog of war to break on the terrain (it was setting a null texture, rather than the current active fog of war map texture).
+ Fixed problem that was preventing the rotations of world props placed in the map editor from properly being applied to the tile designs when the map is loaded.
+ Fixed bug where new empire factions got no techs, they were setting an invalid tech tree as their tech tree
+ Regarding the bug that causes units to not regenerate their mana, the only time I saw this happen was when creating a new custom faction and immediately continuing on to a game playing as that faction, caused by their mana regen ability not getting set to the default in the player ability xml. I fixed this on Thursday night right after the build, and haven't seen it happen since, so I'm pretty sure that was the cause of any inability to regen mana the forum users are talking about. However, if anyone sees this happen again, let me (us) know.
+ From https://forums.elementalgame.com/386332, straightened out the behavior of showing and performing unit actions in an army more to prevent the weird behavior people were seeing when building towns with pioneers in an army
- Now, when you select an army, it shows all of the actions that are available to any subunit in that army, and when you choose to perform one of those actions, it finds the first unit in the army capable of individually doing so and has them perform the action. If any single subunit is selected, only the actions they can individually perform are shown and they are the unit that performs the action when asked to.
+ If a pioneer builds a city from within an army, the surviving units move off of the new city tile like sovereigns used to do when founding a city
+ When an army has SetPositionTile called on it, it now calls SetPositionTile on all its subunits, too. This fixes several bugs, such as being able to build a city with an army with a pioneer in it selected but not being able to when selecting the pioneer subunit individually (because it thought it was at an old tile), and having spells like Mass Heal that affect all units at a tile actually affect all the subunits of an army that has moved since it was formed
+ Fixed bug where moveable units list was being used outside of a critical section and caused a crash
+ Fixed bug when casting spells where it would try to attach particles even if spell did not have a projectile particle effect
+ Fixed bug when casting spells where it would try to detach particles even if spell did not have a projectile particle effect
+ Fixed bug where attach effect annotation would sometimes be executed after processing an "OnHit" annotation
+ Fixed MEMORY LEAK: There was a case where animation controllers were not getting cleaned up in some animation queue entries
+ Fixed bug where death flyback would cause the unit to fly back in the wrong direction if it was part of a grou
+ Buildable tiles were not getting properly regenerated after save/load, leading to tiles not being buildable when they should be.
+ Fixed crash on exit from not checking for g_pSectorMapper being NULL
+ CRASH FIX: fixed a NULL pointer crash
+ Fixed blending issues with various animations
+ Fixed ranged attack and cast spell animations so they animate the correct character in a group
+ Fixed bug where switching a unit from one mount to another in a unit scene view window wouldn't refresh the graphics to show the new mount until something else was refreshed
+ Fixed bug in create sovereign screen where switching the gender of the unit type wouldn't set the eyes back to their default, causing men to have female eyes and vice versa until new eyes were picked
+ Fixed a bug that was causing CQuestManager::SpawnQuestLocations( ) to spawn locations at a level higher than the current world quest spawn rating.
* UI *
+ Cleaned up the info cards to display the same stats as the details sub-window
+ Made the "cannot cast tactical spells" message only show up in the popup spellbook
+ changed relations sub wnd to display how other races feel about you, not how you feel towards them.
+ The "Improvement" page of the Hiergamenon now shows what tech's are required
+ Allows for clicking on entries in the hiergamenon to launch a new hiergamenon page
+ Event List: Animated effect to draw the eye when a new entry is added
+ Pruned Tech and City spam in the event list
+ Fixed Events in the Event list to fade away quicker (2 turns, not the old default of 6)
+ Got rid of the details action in both the city and unit actions lists
+ In unit item context, single-clicking now equips/unequips and item, instead of double-clicking
+ Fixed Arcane Weaponry and Drain Life spells not using enchantment slots
+ Clicking on "Go to Spellbook" in the new spell level up popup now brings up the spellbook popup instead of the kingdom wnd in spellbook mode
+ When the city level up dialog pops up, the camera moves to the city that is leveling up
+ Fixed typo in arcane lab xml that gave it an invalid tech prereq, so that it was never unlocked
+ Made it so the "Treaties" subject on the diplomacy wnd is available right from the start, by setting the non-agression (safe passage) treaty to have no tech prereqs. this also inadvertently led me to discover that the treaty was actually requiring techs that no longer existed, so you'd never be able to access it.
* Engine *
+ Faction XML now supports <DefaultCityWallSet> field
+ Added <DefaultCityWallSet> entries for every race (all default to CityWalls_Fence)
+ Changed "Throttle Frame Rate" option to "Limit Frame Rate"
- This option allows you to set a frame rate limit and the desired number of frames are spread across the 1 sec time frame
- This allows us to scale down how many frames we render to keep graphic cards from overheating
- The default limit is 150 fps
- The option will still sleep during the frame to throttle the frame rate like before
+ Added support for city modifier "SummonRandomGuardian", creates a random creature unit of spawn rating equal to the value of the modifier and stations them in the city, saves the selected unit type as the <StrVal> (which can be used as an override if desired) so that in multiplayer, only the server chooses the unit type and the clients just use the override unit type
+ Added support for "TargetCity" value calculator owner when applying city modifiers
- Because I didn't want to have to make cities inherit from non ref counted IPropertyBucket in order to be used in the value calculator owners, I added support to CElementalGameModifierInstance to just have individual variables for a given value owner set, by keeping a list of custom property buckets that the code can fill with whatever variable value replacements it wants
+ If a player tries to access a quest location with a spawn rating higher than their current quest spawn rating ability, then a message will pop-up saying they are not ready to undertake that quest. The default message can be overridden on a per-quest basis by adding a string with the desired text to the QuestDef XML with the “ReqsNotMetText” tag. As an example, this string has been defined in the Quest_EscoreNobleman1 XML (although, as the spawn rating for the quest is 1, it the player will always be able to accept it).
+ Quests now use the player’s personal quest spawn rating ability, rather than the global spawn rating, to see if they’re able to accept a quest.
+ Set the default values for the NPC, goodie hut and quest ability ratings to 1, so the player can access the lowest-level quests from the start of the game.
+ Fixed an issue that was causing the wrong quests to be placed on the map (it was always choosing a random quest, rather than only when a random quest was specified).
+ If a quest has a preferred quest location defined, but it cannot be found, the game will now randomly select a different quest location.
+ Units no longer need to keep track of what character is ranged unit using an index because this is done in the characer gfx data table now
+ When units are added to an army, the army is set to idle animation status
- This fixes bug where units would play an attack animation again if they hadn't reset their animation status when the unit was added
+ New Animation handling system
- Mounted units now play a better death animation and actually fall off of their mount
- Mounted units can now animate ranged attacks
- Mounted units can now play cast spell animations
- Mixed unit armies now display at least one ranged attack unit if one is present in the army
- When using a ranged attack, only the ranged unit characters will animate firing
- This allows groups of ranged units to attack all at once, or if there are more than one in a group, to fire together
- Mounted units and on foot units animate properly when mixed together in a group
- Mounted units now use a constant for their attachment point rather than a hard-coded string
- Added new bow attack animation file from Auri
- Death Flyback Animation is now hooked up so that all characters will animate flying backward if needed
- Fixed bug where flyback animation would be herky-jerky sometimes
- Fixed bug where mountee units would not detach from the mounted unit unless the combat ranking difference was high enough
- Mounted units always do death flyback animation now
- New CUnit::GetCharacterFromMultiCharacterGraphic function returns the specified character graphic or its mountee (if its a mounted unit)
+ Tile Design Pedestrians now support custom textures
+ When you recruit an NPC unit, it plays the greeting animation so he/she bows and waves
+ City HUD hovers higher now
+ Fixed bug where if city HUD was disabled, and new city was built, the city HUD would appear