It has been one week since the last public build.
Here’s what’s new:
---------------------------------------------------
----------------- Beta 3B Change Log -------------
---------------------------------------------------
********************
* Tactical Battles *
Overview: Can now enter tactical battles if the unit threshold is within a certain number (defaults to 4). Battles are turn based, you can cast spells, traverse the battlefield, or even run away if you just don’t feel like fighting that turn.
+ Halved the texture tile rate in tactical battles to make the texture repeating less obvious.
+ Implemented the final bit of functionality for the tactical combat system: terrain prop-based bonuses and penalties.
+ Cleaned up some more malformed XML in CoreSpells.xml
+ All damage combat text in tactical battles rounds up to the nearest integer.
+ Turns don’t automatically progress in tactical battles if an animation is still playing on one of the participants.
+ Fixed an issue where selecting units on the tactical map via the unit cards would cause the highlight graphic to malfunction.
+ Fixed an issue with spell targeting in tactical battles that was disallowing spells with a radius from hitting targets that weren’t at the center of the burst.
+ Tactical battles no longer end until all units are done animating.
+ When detaching cast spell effects from tactical units, it looks for tactical units to target rather than regular units
+ The next allied unit with moves left is selected when the selected unit runs out of moves in tactical battles.
+ Units play their battle idle instead of their regular idle in tactical battles.
+ Attack animations now scale by combat speed in quick and tactical battles.
+ The Battle Resolution window now appears if after battles in cloth map mode.
+ Added a new tag to SpellDefEffect called PlayOnAllTargets. This will play the spell effect on all targets hit by the spell (for spells with a radius).
+ Fixed the unit cards in tactical battles so they now grow vertically instead of horizontally.
+ Removed a duplicate effect from the chain lightning spell, flagged the spell to cast on all targets.
+ Made sure spell defs could read in the flag for casting on all targets.
+ Added a process to handle applying tactical spell modifiers, as well as firing off spell effects and sound effects for spells.
+ Slight fixes to the ApplyModifiersAtTile logic to return a more accurate list of affected tiles.
+ Changed several constructors for CSpellTarget to be sure to initialize all values.
+ Morale is now initialized to BASE_MORALE instead of 0 to stop the first turn of tactical battles from showing all units as panicking.
+ Tactical spell modifiers will now be applied at the attach annotation for non-projectiles, and at the detach notation (and after the projectile process has ended) for projectile spells.
+ Fixed a validation error which allowed units to move outside of their range in tactical battles.
+ Added color defines (at the top of TacticalUnit.h) for all combat text colors.
+ Added differentiation to combat text for spell damage, spell healing, ranged damage, and spell effects (positive and negative).
+ Tile highlight should now update properly once a spell is done casting.
+ Units will now play an OnHit animation when hit with spells in tactical battles.
+ Added an IsCastingSpell bit of logic to tactical units to help see if any unit is currently casting a spell in a tactical battle.
+ Fixed some odd cases when a highlight would be drawn while a unit was casting a spell in tactical battles.
+ Fixed some odd cases when a highlight would not redraw after casting a spell in tactical battles.
+ Fixed a bug where old units were still "selected" at the start of tactical battles.
+ Fixed a bug where not all units were properly added to the battle results window after a tactical battle.
+ Disabled LOD levels in the tactical screen
+ The grid is now always on in tactical battles.
+ Stopped tactical units from calling their idle animation if their currently being hit.
+ Cleaned up logic in OnModifierBegin and OnModifierEnd to make things more deterministic.
+ Fixed an issue where the unit cards in tactical battles could resize beyond the current display height.
+ Fixed the camera bounds during tactical battles to be more accurate to the sector width/height.
+ Added support for TacticalUnit modifiers, for spells that need to effect the tactical unit and not its parent unit. Stuff like knockbacks, stuns, morale stuff, etc.
+ Refactored the logic to add to the tactical battle report, now requires a call by the tactical unit (or someone who "knows" the tactical unit) when something changes in that units local report.
+ Added a timeout test process to use with spells casting application for instances when it appears modifiers are never being applied. Not currently used, as it might cause weird behavior when not used for testing.
+ Added code to apply spells modifiers when a spell annotation never gets properly attached.
+ Units in a tactical battle should no longer be able to move onto invalid tiles (mountains, water, blocked tiles, etc).
+ Added a function to world to check if a tile was invalid, currently only has logic for tactical battles.
+ When tactical units are destroyed they now set their sector mappers to be NULL.
+ The check to see if units are animating or moving in tactical battles now takes spell effects into account.
************
* Gameplay *
+ Arcane Lab should now be buildable from start of game (ie. don't need a tech for it)
+ Changed cities to allow building diagonally to existing improvements.
+ Resourceful talent changed to provide 10 metal, 10 materials
+ More monsters will be present in the wild
+ Settlements no longer require a special building to train units
+ Pioneer Kits add 5 turns to the training of units that have them.
+ Replaced "Spell Points" with "Arcane Knowledge" in game
+ Removed a number of improvements, added to "Extra Improvements" for future use.
+ Major overhaul of the improvements both in terms of balance and what they do
+ Resources now only provide bonuses to the entire faction (i.e. Quarries improve overall production)
+ Resources no longer have to be connected to a settlement
+ Pioneer improvements (improvements outside of a city) now update which player they belong to at the end of each turn, as well as link to a city if one is close enough
+ If a pioneer improvement moves from being in the ZOC of one player to another's, they move to that player's list of pioneer improvements instead
+ If a pioneer improvement isn't in anyone's ZOC, it gets destroyed
+ Also finds the closest city belonging to the player whose ZOC they are in, and links to them (gets affected by their multipliers) if it is within the min distance that must be between cities
+ Starting essence for a new sovereign = wisdom
+ Can associate a city with a pioneer improvement (improvement built outside of a city), and when querying that pioneer improvement's resource production, it will take the harvest multiplier from the associated city and apply it to its regular harvest
+ Nothing is associating cities with pioneer improvements yet, though, this is just an intermediate check-in
+ Added the ability to build improvements by clicking on a resource hoard within your territory.
+ Minor races get their special monster friends again
+ Added Ancient Temple to Core Resources
+ General overhaul of improvements and resources. Resources provide (duh) resources. Improvements provide (duh) improvements to those resource rather than vice versa.
+ Created tiles for lost library and ancient temple
+ General tweaking of seeding of the world with resources.
+ Now only champions and sovereigns can access quest locations and goodie huts; if a non-champion unit attempts to access one, a message box will pop-up explaining this.
+ Dragons added to quests
+ Tactical battle maps smaller
+ Cleaned up quest locations
+ Cleaned up starting resources
+ Level 4 Quest added
+ intelligent creatures now have names
+ Made sure that all players start out with a quest location relatively near their starting position
+ World size defaults to small, not tiny
+ Decreased the chance of having a kid each turn to 1 in 250
+ Caravans can now set up trade routes with foreign cities that they aren't at war with
+ Removed food bonus from city bonus xml, so that it isn't offered as a level bonus anymore
+ Sovereign more aggressive at goodie hut finding
+ AI now makes use of external resources
+ Bandits: Brigands and other thugs are now spawned into the world (this will eventually be event driven so that different games have different environmental bad guys)
+ Bandits: Interacts with player
+ Bandits: Will target for destruction undefended cities eventually.
+ The technology breakthru window doesn't default to continuing down the same path anymore
+ First attempt to get the events to play tones in
+ Made changs to CanOwnCity() such that Monsters can destroy cities
+ Treasures can now have their own distinct sounds when found
+ Rewrote ::FindRandomGoodieHutTypeByTerrain() to have it take into account how rare the goodie hut is and make sure it is following the world spawn rating rules.
+ Hooked up Influence Ability. Every 100 points of Influence will increase the max radius of a player's zone of control by a full tile. By very careful with this.
+ MessageBoxWnd no longer hard coded to that treasure found sound.
+ Message Window can now play sounds when brought up.
+ Lots of changews to MobileObject.cpp to allow monsters to be monsters. BETA TESTERS: Be on the look out for stuck turns.
+ CPlayer::SetABility() added (seriously, we didn't have this)!
+ Beginnings of the AI designing units for the human player put in.
- AI will try to design a unit every time they go up a level on the warfare/combat tree. If it is better than any existing unit the player can build, it will add it to their list. In theory.
+ By default, spawn ratings on quests are now -1
+ Fixed bug where quests were hard coded to 1.
+ Events should be playing sounds
+ If a monster manages to "conquer" a city it will destroy it (they're monsters afterall)
+ Changed the way Goodie Hut spawns work such that the higher level goodie huts will mainly spawn around the player who triggered the spawn rather than spamming it randomly around the map. In addition, players who do go up a goodie hut level will still be able to get some goodie huts placed near them.
+ First balance attempt to try to make the monster upgrading not go up so fast
+ Updated CWorld:laceRandomGoodieHuts() so that we can now optionally specify a player we want them to be spawned near
+ Tactical Maps for all terrain types created (13 new maps)
+ Fixed Core Accessories to work with new tech trees
+ Sound effects added to many treasures found in goodie huts
+ Lots of new items added (sick of healing nectar)
+ Sand Golem nerfed
+ Wild Game now extremely rare (will have to have it spawn only near hunters in the future)
+ Gave bandidts and other humanoid monsters intelligence of 10.
+ Started crated "gang" monster groups
+ Players now start out knowing certain spells. In addition, each spell book now has some spells that a caster knows by having that spell book.
+ Veteran troops can now be trained by Amarians
+ The default Pioneer is now unarmed (and cheaper)
+ Brought some of the Imperial improvement costs in line with the Kingdom equivalents
+ TONS of new Quest items to get
+ Started adding template quests that are easily modded to create other quests
+ Lots of new quest destinations
+ THE MASTER QUEST IS IN!
+ Dave Stern's writing in the Master Quest
+ NEW TECHNOLOGY TREE: TechTree_Amarian
+ All Kingdom factions temporarily are using the Amarian Tech Tree
+ Tech Trees for Kraxis and Trogs started (but not used)
+ Settlement tile limits removed. No more artificial limits.
+ Fixed Ancient Temple (for Kingdom and Empire)
+ Fixed Old Growth Forest (for Kingdom)
+ Various tweaks to monster goodie huts
*******************
* AI Improvements *
+ AI designs better weapons and armor based units
+ AI now differentiates equipment based on what part of the body it is worn
+ AI smarter about starting new cities
+ Intelligent creatures, monsters, thugs, etc. will occasionally interact with the player
+ AI's now explicitly can support turn 0 so that they can get their strategy started
+ Fixed some memory leaks in the AI MoveUnit area
+ AI designs better units
+ AI Difficulty levels hooked up
******
* UI *
+ Buttons for popping units out of cities that now work much better.
+ Fixed bug where city HUD graphics were not rendering properly after loading a saved game
+ Players always will be brought back to main research screen after a breakthru
+ Fixed bug where razing a city wouldn't remove it from the local player's empire tree
+ Fixed bug where razing a capital city wouldn't recalculate a new capital for the player
+ Adapted CAIMessageWnd to be able to display generic messages like CMessageBoxWnd. This can be called using the UnhideAIMessageGenericWnd( ) function, which takes only the title, text and image to be displayed in the message.
+ When you get a pop-up message saying that you cannot yet access a quest or goodie hut due to your quest/goodie hut level being too low, it now tells you what your current level is, the required level, and what branch of research you need to focus on to increase your level (Adventure for Kingdom factions, Domination for Empire factions). It also uses the generic version of CAIMessageWnd to display the message, as it was getting a bit lengthy for CMessageBoxWnd.
+ Updated the Notable Location and Quest Location info cards to display their level and yours
+ Added the ability to launch the hiergamenon page for an object by holding shift and left clicking on the item
+ Updated/created some hiergamenon entry pages
+ Fixed a crash in the empire tree when an AI player got one of the local player's city (though conquest or a cheat)
+ Fixed typo in the map list that caused a chance of a map to be generated completely randomly without a seed
+ Removed likelihood data on tech screens if it was 100%
+ Added new data to the Unit page in the hiergamenon
+ Changed "Quest Inaccessible" to "Quest Unavailable"
+ Changed "Notable Location Inaccessible" to "Notable Location Unavailable"
+ TWEAK: when a unit is selected, now displaying moves tooltip as cur/max instead of just cur.
+ Tooltips on resource hoards now tell you why you can or cannot build on them and how many resources it costs if you do.
+ No "Station unit" dialog comes up when hitting a foreign city you aren't at war with, just blocks your units now
+ Found kingdom dialog includes info about using pioneers to build more cities, don't have a bigger dialog with yes/no hooked up, yet
+ Eliminated the spell tab from the unit context wnd, trigger to hide/unhide this tab now just hides/unhides the spellbook shortcut in the unit actions list
+ New buttons on the Main Game Window to help launch the hiergamenon and equipment pages
+ Revamped the equipment page to eliminate tabs and unnecessary text (hiergamenon is better for that info)
+ Some hiergamenon changes for the unit page
+ Notable locations and Quest locations now display their battle rank in their context area
+ New improvement text in the hiergamenon
+ Minor cleanup to some list entry types
*************
* Bug Fixes *
+ Fixed an issue with flavor text saving that would occur if you saved the game before any flavor text was used (there would be unsorted conversation flavor text, which wouldn’t get saved). Now all unsorted flavor text is sorted before saving.
+ Fixed a problem with loading tile trigger data from a saved game in CTriggerManager, which was causing each subsequent tile to receive the trigger data from all previous tiles.
+ Fixed bug where if unit casts spell or attacks a unit, and you zoom out to cloth map, then back in, unit would get stuck playing an animation
+ Fixed UpdateMWinNode crash
+ Fixed the function used by caravans to set up their trade route to use the same astar stuff as mobile game objects use; they were using slightly different flags, and as a result failing their pathfinding more often than they should have been
+ Added new animation for casting spells (new export fixes missing annotations)
+ Fixed a problem with CQuestLocation not saving the name of the quest assigned to it when the game is saved. After loading a saved game and attempting to access a quest location, this was causing CQuestManager to go through every available quest location quest in an attempt to find one the player could accept. If it randomly hit on one with a spawn rating above the player’s quest level, it would pop up the “Quest Unavailable” message. If it happened to hit more than one of these quests, it would pop up the message once for each one.
+ Added some sanity checks to the UpdateFOWTexture( ) method in CFogOfWarMap in an attempt to alleviate possible crashes.
+ Fixed "Ruined House" tile design not showing up on map
+ BUG FIX: after building a city, it was giving you 1 back to moves, instead of 1*MOVE_SCALE, to convert it to movement points. This fixes the issue where you'd see your moves as 1.1 instead of 2, for example, when starting the game as procipinee, who builds a city upon game start as her ability.
+ Fixed a bug where city improvements could be built over global improvements of the same type.
+ Fixed bug where one of the ambient tracts wasn't playing (BarrenForest)
+ running sfx fixed (UnitAnimationhelper now has a play3dsound wrapper)
+ Fixed hang when a summoned unit died, and its caster already had some other spell effects on them
+ fixed upgraded units not clearing their starting unit status, causing them to not be available for designing or training after being saved
+ fixed being unable to build any different unit grouping types than individual in the train unit screen as an empire faction
+ Fixed a crash when equipping any new forearm equipment on either Kul-Al-Kulan or Warlord Verga
+ Fixed unit grouping types and unit quality types that didn't have updated prerequisites to point to the new Amarian tech tree instead of the kingdom tech tree, caused all of the kingdom factions to not be able to train different grouping or quality types
+ Fixed bug where armies couldn't get on a ship all a once
+ added some missing animations for mounted units, so that horses don't T-pose in the level up wnd and conversation wnds, and wargs don't T-pose in the conversation wnds
+ Cleaned up some found kingdom/build town stuff
+ Fixed bug where using a pioneer leading an army to found a city would cause the left over units to not all move off the city, not form an army, and be invisible
- This should also fix any other cases where the leader of an army is destroyed on the main map with surviving subunits left behind
+ If the unit moves off of the tile they are building a town on before it is completed, the town is still built where they first asked it to be, and they won't have to move off the tile
+ Fixed potential problems I saw with the pioneer build town stuff working in multiplayer
+ Removed building prereqs from Granary, so that one can be built in a city just linking to a pioneer improvement producing food and it can still provide a bonus
+ Fixed bug where diplomacy didn't work at all with minor factions, since they had no diplomacy logic and so just said no to everything
+ Fixed bug where pioneer improvements not linked to a city weren't getting faction-wide resource production bonuses
+ ModifyGfx isn't called on each subunit of an army when the army moves anymore, fixes some bugs when trying to remove them from an army later caused by them already having tried to fade in, and doesn't waste time on it anymore
**********
* Engine *
+ added some code to easily get at the coreAIDefs.xml information for designing units
+ Increased the number of generated starting points from 10 to 32, which should help with starting location issues when a large number of players (including minor factions) are on the map at once.
+ Made some changes to the creature spawning code in CMapData and CTriggerManager that may have caused creatures with undefined spawn ratings (such as dragons) to show up on the map.
+ Changed to use a task so that the mwin data does not change between the time it is set and the time it is rendered
+ When recruiting NPCs they return to Idle animation rather than battle idle
+ Added list of additional unit IDs to CEventData_LeaveArmySetDestination, used when removing multiple units at once from an army to remove them all at once, put them in an army, and send them on their way instead of using separate events for each, and not putting them in the same army unless they were moving to an adjacent tile
+ Disallowed going into attack mode with a selected subunit of an army, can only tell an entire army to go into attack mode now. This is per skype conversations about weird behavior of subunits leaving armies when being told to attack separately from their army
+ Fixed a bug where every tile design created and loaded in the tile design editor would get its particle effects duplicated on each load (which would then be reflected in the next save of that tile design), caused by two xml loading threads loading the same tile design directories
+ Added "H" as a hot key in the tile editor to toggle the selected object between fitting to the terrain or not
+ Made the particle entries in the tile editor use entries with text in them, so that they don't require reading the tooltip to see what they are
+ Fixed bug where particle effects wouldn't get cleared from the tile design when it was asked to clear itself
+ Fixed graphical artifacts showing up in non-advanced lighting mode
+ Changed the “City” terrain type’s min and max height to 50, so there will be no height variation between city tiles.
+ When a new city hub or improvement is placed on the map, and the terrain type of the tile it’s in is changed to “City”, the tile vertex heights are now recalculated. With the min and max height for City terrain set to the same value, this causes cities to flatten the terrain under them. Whenever a new tile is set to “City” by placing an improvement, it causes the improvement graphics for the entire city to update, to ensure that the tile designs and decals are using the correct heights.
+ When a tile with a world prop is updated (as happens when the tile vertex heights change), the world prop’s graphics are now recreated, so that the tile design heights stay lined up with the terrain.
+ Added support for map modifiers with a finite duration, to support the Wall of Fire spell (and possibly other spells)
- To make a map modifier have a set duration, give it a non-zero duration tag, and it will expire after that many turns
+ Can now specify the display name for goodie huts created using the CreateGoodieHut game modifier; simply set the desired display name inside the “StrVal” tags, and it will replace the default display name for the goodie hut.
+ Units only set their animation to idle when cancelling destination only if they were previously walking or running
+ Cleaned up more code in UnitAnimationHelper library
+ Modified CEncounterDef so that it can be flagged to force a tactical battle to start when the encounter is activated as part
of a quest. This flag can be set in XML using the “ForceTacticalBattle” tag, and setting it to 1 (the value defaults to 0, which does not force a tactical battle). When true and the encounter is activated, it immediately enters into a tactical battle. Additionally, the tactical battle map that gets used may be specified using the “TacticalBattleMap” tag. If no map is specified, it will select one based on the world location of the attacking and defending units. If one is specified, it will use that map instead.
+ Added an overloaded version of UITacticalBattle( ) that takes in the name of a map in addition to the attacking and defending units, which will be loaded instead of randomly selecting one based on the tile positions of the attacker and defender.
+ Added a new method to CWorld, GenerateTacticalMap( ), which takes in the name of the map you want to load, and generates a tactical battle from it.
+ Disabled move within tile on main map and tactical map
+ New music and sfx (evil music, item shop music, etc)
+ Cutscene window now supports Music Cues: plays on for marrage and 'slain hero' events
+ The Conversation Popup wnd will play the speaking factions theme if they are a Major faction
+ <NotInSetupLists> now supported by unittypes and factionconfigs for ones we want to keep hidden in the setup windows
+ Changed the default value for ForceTacticalBattle in CEncounterDef to 1, so that forcing tactical battles is the default, and must be explicitly disabled.
+ UNIT SCALING TWEAKS
- Disabled Scale on Zoom in Tactical Battles
- Commented out the "scale bound box to tile" code
- Added <MaxScaleMainMap> and <MaxScaleTacticalMap> fields to <UnitType> XML data
- This clips the scale of the unit to the specified max scale
- Allows artists to choose the max scale of certain units
Screenshots:
-----------------------------
Tomorrow we’ll be putting up a list of what we’re looking for from the beta group. There’s still quite a bit to do here, I noticed, for instance, that Imperials can’t train their teams and raids and such (typo in XML) but hopefully beta testers will see a significant improvement from Beta 3A in terms of stability and game play.
The Beta should be up within the next hour.