BUILD 80721
21st July, 2008 (ca. 6000 lines of code revised, tons added)
- Revised Items2.cpp, added ItemCore.cpp with many vanilla core functions replaced and revised all other remaining item code.
19th July, 2008 (ca. 1000 lines of code revised, some added)
- Finished revising items.cpp (total ca. 4300 lines, done over last few weeks, finished today)
- Expanded dual wield code, any class can now dual wield if we so chose.
17th July, 2008 (ca. 1500 lines of code added)
- Replaced all of D2s item property desc code (ie the desc stuff from isc.txt).
16th July, 2008 (ca. 400 lines of code revised, more added)
- Revised code for elixirs, they are now fully data driven
15th July, 2008 (ca. 1000 lines of code added, 1500 lines revised)
- Replaced all the client/server communication regarding item stat updates, the original code was, to say it nicely, utter crap, this will later be merged with the custom oil packets made earlier to clean the code some more.
- Replaced autostack code
- Finished revising all old ai code, with text parsing and everything
11th July, 2008 (ca. 3000 lines of code revised)
- Revised the majority of the formerly written ai code, adding a myriad of further improvements. Theres still about 1K lines left here, so you know what the next updates probably will be
7th July, 2008 (ca 200 lines of code added)
- Replaced self-resurrect code with new code, works properly and bug free for all monsters now.
6th July, 2008 (ca 1000 lines of code added, additions from today and yesterday, didn't bother to add most of it here)
- vanilla D2 item name code has changed, now item names are more descriptive in general.
- More improvements to D1 spell scrolls
- Starting weapon is automatically personalized, displayed in gold.
5th July, 2008 (some 1500+ lines of code revised + changes)
- Spell scrolls now work like they did in D1, that is, you get a targeting cursor, and it casts the spell on whatever thing you click on.
- Improved targeting code for spell scrolls
- Revised all the code handling item colors, the current state of the code (v3) is final. Changes to how colors are taken from socket fillers, it uses the first socket filler that has a color, not the first overall, so having a rune first, then a gem, would get the color of the gem, not the color of the rune.
- More misc item code has been revised.
- Changes to requirement handling: beginner items (the ones you start the game with), will have no level or stat requirements (flag 0x20000 is read by the new req handlers).
4th July, 2008 (around 1200 lines of code added)
- More new stats code has been implemented
- Replaced the vanilla D2 price evaluation, one of the last major gameplay related pieces of code left, and also one of the most inefficient.
30th June, 2008 (around 1500 lines of code added, more revised)
- Implemented defense, damage, durability and quantity override stats that allow setting the base values of an item, totally overriding the contents of items.txt (this requires more work to do properly then it may sound like, especially for stats like base damage that isn't saved)
- Replaced the vanilla property assignment functions for min and max dmg, as well as dmg%, they suffered from bugs and useless calls (cmon bluzzard, you don't call something 5 times in a row just to discard the return 5 times...) *see note
- Expanded the properties function table, making room for as many property functions as we will ever need
- Implemented Charisma and Reputation into the code (though they both don't have an effect yet).
* heres a run down on what the brilliant people have done:
Code: Select all
record = getRecord(item.id)
code = record.code
id = getIdFromCode(code)
record = GetRecord(id)
29th June, 2008 (round 200-300 lines added, around 500 lines of code revised)
- Added several new stats, again due to unique revision
- Speaking of which, today me and Vendanna tackled the one handed swords
- Cleaned up the remaining code of TreasureClass.cpp, now every single line of TC code used by the game is entirely new , among others this re-enables borked organ drops and grade upgrading (from normal -> except -> elite, even though this system isn't used, I coded it anyway ).
28th June, 2008 (around 1000 lines of code added)
- Revised bleeding functions (ca. 100-200 lines)
- Vendanna and myself redesigned the classic D2 unique axes.
- Several new stats, among others 'Resistance vs. MonClass' added (resistance vs. all attacks by undead/demon etc) and a bunch of other stuff.
- Replaced the entire TC evalution used by vanilla, the resulting code is both faster and more compact. Re-implementation of broken 'extras' will follow soon (cg, ce, cr, cm, cu, cs modifiers and two missing TCEX columns).
24th June, 2008 (around 100 lines of code added)
- Had some issues with borked up installs for VC6 that needes system restore to fix (reinstalls didn't help), thankfully nothing was lost (we keep incremental backups of stuff + emergency backup )
- Replaced the inefficient nodrop evaluation with something running about 5 times as fast.
22nd June, 2008 (revised around 1200 lines of code)
- Replaced all the archaic code in chat.cpp with new, much improved and flexible code (ie the CLUAConsole stuff).
20th June, 2008 (revised around 1500 lines of code, least a few 100rds added)
- Revised entire Speed.cpp, with greatly improved special getstat variants for getting speed stats and other boosted stuff.
19th June, 2008 (a lot of code, added, likely >1500 lines, revised about 1000 lines of code)
- Finished revision of stats.cpp (update #2)
- Replaced a large variety of D2 functions, ranging from alignment validation to minion list iterators. All in all, the majority of calls to all of these funcs were from inside MetalStorm, so replacing them should be seen as a performance improvement (less intermodular calls).
- Revised the code for more event stats (hit blinds target etc)
17th June, 2008 (bit of revision, more later today when im back)
- Revised code for Open Wounds and Crushing Blow.
- Revised code for Freeze Target, Petrify Target, Clone Target, Instant Kill (changed to Disintegrate Lower Undead), and more item modifiers, adding many special overlays and effects to them.
- Added smoke to the burn damage overlay (now monsters and players under the effect of burn damage have billowing smoke ascending from them to the sky --- z-axis movement)
16th June, 2008 (nearly 2500 lines of code added)
- BloodBoil code implemented
- Apocalypse mechanics finalized
- Thorns code has been revised
- Expanded the 'shatter' states, which before this were hardcoded to only state_shatter and state_uberminion (well not hardcoded, but it just always caused the shatter effect ).
- The _ENTIRE_ item evalution and modifier selection code has been replaced (roughly 2K lines of code), this means every last bit of code governing the generation of all item qualities (inc. magic, rare, set, unique, crafted, tampered, superior, normal and lowquality) is now customizeable.
- Item level requirements code has been replaced, disarming a potential stack overflow bomb that it contains in vanilla.
- As a result of the item generation change, things like what quality can have staffmods and automagic are now softcoded.
14th June, 2008 (more then 1000 lines of code added)
- Replaced item generation routines for normal, superior and low quality items (the later aren't used, but I did it anyway for the sake of completeness )
- Written a new affix evaluation routine that is way more efficient then the vanilla one.
12th June, 2008 (revision of damage.cpp, around 1500 lines of code added)
- Added new item event (EVENT_BLOCK).
- Added new skill function for ChillTouch spell.
- Expanded the SrvDo, SrvSt, CltDo, CltSt and StateActive func tables to have room for 32K functions each.
- Revised the remaning parts of Damage.cpp
- Fixed pseudo-bugs (that also exist in vanilla), regarding poison states. In vanilla if you re-apply poison to a monster that is already poisoned the state ownership isn't changed, if the previous poison was set by another player, that player will score the kill, even if its your poison that did the final damage. This issue is now resolved.
11th June, 2008 (mostly revision and txt changes)
- Fixed a vanilla ?bug? with mercs doing more damage then intended. The code automatically assigns MONUMOD_HIREABLE to mercs, this is legacy stuff and shouldn't exist in LoD from what I can say, as it causes them to deal more damage then what is shown on the screen. (Detected this simply by overserving my damage log closely when the merc attacked), the onscreen display was 800-1500, but the actual hits dealt around 3K damage. Editing BossMods.txt to disable MONUMOD_HIREABLE vanilla server calls fixed this.
- Improvements to how critical hits are handled, in vanilla mercs were governed like other units when it comes to critical hits (as far as I remember), my code now treats them like players (taking into account mastery critical hit, deadly and critical strike), this also means their critical hits no longer boost non physical damage.
- Some more of damage.cpp revised
10th June, 2008 (around 2000 lines of code revised, some code added, not much)
- Revised 75% of damage.cpp, the remaining 25% will follow soon.
- Most of the changes are entirely performance based, for example I added a special GetStat variation taking SrcDmg into account automatically and more things like this.
8th June, 2008 (at least another 500 lines of code added, tons of code revised again)
- Revised various functions (not source file specific)
- Custom functions replacing GetStat and GetBaseStat have been implemented, they are a lot more efficient then the vanilla ones.
- Added new functions for Dragon Flight and Dragon Tail, both suffering from a myriad of bugs and useless checks. With this, all assassin kick skills are replaced with new code.
- More things I didn't bother to record.
7th June, 2008 (around 500 lines of code added, more revised)
- Spell generated items now show up with a name color specified via skills.txt par8 for items made via SrvDoFunc 166.
- Performance improvements for kick skill damage routine.
- Replaced all (bluzzard) skill functions of Psychic Hammer which contained bugs and useless checks.
- The ONLY two blizzard functions left in the damage routines contained, *gasp* a bug making kick skills recieve elemental damage from the active weapon. This code has been revoked (thus nothing called during the entire damage creation process [which is related to the process itself] is left using old code).
6th June, 2008 (around 1000 lines of code added, some more revised)
- Revised several misc functions to make them more efficient
- ObjOperate and ObjInit function tables can now be expanded infinitly
- Added SrvDoFunc, CltDoFunc and CltStFunc for dragon talon (formerly only the SrvStFunc was done), to fix >3< bugs blizzard left in it.
- Fixed bugged level theme code
- Added several new level theme functions
- Level theme picking chance is softcoded
- Object pre-operate chance is softcoded (bool in objects.txt now chance)
- Added EthSuffix (special affixes assigned to ethereal equipment onto of whatever else they have)
- Probably some more things I didn't bother to record
- Fixed memory leak caused by blizzard incorrectly freeing a node from a linked list with pObjRegion->pWayPointRoom
BUILD 80604
4th June, 2008 (added anywhere between 3000-4000 lines of code, revised a major amount of the existing code).
- Finished revision of Combat.cpp
- Replaced D2's ObjectRegion code, making it more secure and efficient
- Replaced the missile server collision (everything about it, so now its possible to have infinite SrvHit and SrvDmg funcs).
- Major utility functions such as sending packets, handling item events and many many other things are entirely new code now, which means no intermodular calls = faster.
- Improved tons of code with the goal of maximum efficiency and speed.
- Re-written the entire internal waypoint code.
- Much more I can't remember ATM...
23rd May, 2008 (added about 900 lines of code, revised a load of additional stuff)
- ptUnit structure has been expanded, allowing storage of (infinite) amounts of custom data on units. Each unit now is created with a pointer to ptMetalData which is a custom redefinable structure.
- Monsters.cpp is now completely revised
- Finished reprogramming all monster death related things
- Emptied some source files of rubbish
- Added custom code to handle D2s event queue, their original funcs are were a bit too slow to my taste (WAY too much memory access there...), especially for AI purposes which may set/delete events about a thousand times every few frames. The vanilla code still uses the old funcs, my own code uses the new ones.
21st May, 2008 (about 500 lines of code, added, another 1K revised)
- Replaced all of D2s server side player mode handling code, greatly improved functions for performance
- More utility code revised today
20th May, 2008 (about 1000 lines of code revised and improved)
- Another 20% of Monsters.cpp is done, the whole damage routine in there was re-written (among others).
- Improved stability and performance of several utility functions
- Player life regeneration function re-written
- Forgot to state this yesterday, there is a considerable redesign of how spells are assigned to monsters, setting a aura via MonStats.txt now automatically activates it when the monster spawns (no need for special AI code like in Duriels case on vanilla, why Bluzzard didn't do this from the start I have no idea, all it involves is a single additional function call )
19th May, 2008 (lots of revisions, ca. 3000 lines of code revised, partially improved, minor stuff added)
- Bosses.cpp completely revised
- Monsters.cpp 70% revised
- PlayerCount.cpp completely revised
- Other stuff in other cpp files
- Reduced number of intermodular calls further
- Improved security of some code segments
16th May, 2008 (yet more minor things, ca. 500 lines revised)
- Improved error and log handling code.
- Started porting code to new, cleaner convention, revising some functionality along the way too.
15th May, 2008 (more minor things, got some time off this morning , ca. 200 lines of code added/changed)
- Added a new UMod filter to prevent certain umods to spawn combined with the Multishot ability.
- Minor improvements to Bosses.cpp and some other source files, speeding up or simplifying code in there (such as group size evaluation).
- Further improvements to existing code (MonDesc.cpp mainly)
- Improved commenting on several source files (for other devs)
14th May, 2008 (something really minor, bout 50 lines of code)
- No, ain't back in buisness yet, wait until the end of this month, but I had a few spare minutes and a interesting idea to implement today, and so it has been done . Added 5 more columns to LevelsEx.txt for 'forced spawn' enemies (enemies that are spawned always in an area, without messing up the random 25 units from levels.txt). So in vanilla sense this would mean an area called "Spider Forest" would spawn always spawn spiders + 25 random unit types.
- MetalStorm.dll now compiled with SP6 of VC6 (was never updated after swapping to new PC).
24th Mar 2008 (notice)
- Just a heads up here, development will continue as normal at the end of the this month or mid june (both me and Vendanna are very busy at present). I appologize for having written this/next week here before, can't predict how long stuff ends up taking at the moment, unfortunately.
14th Mar 2008 (testing session)
- All previous code implementations are currently being tested by the team, while I'm busy elsewhere, so new code and advances when these tests are completed and I'm back
29th Feb 2008 (ca. 1000 lines of code added and at least 1000 lines of code redesigned)
- Drove some more hooks directly into the games main loop, pGame constructor and destructor, for more optimal loading and freeing of custom structures
- Redesigned the entire side quest engine to be more efficient
- Added a third side quest for testing purposes, giving the Skeleton King parallax crypt a purpose other then being test data
- Redesigned the way player spells are saved and loaded, now any spell (irregardless of whenever it is on a tree or not) can be saved on a player and re-used the next game if it wasen't obtained via items (aka from reading books and quest rewards)
- Skill tree and mini menu GUI changes will follow soon, once I decypher all their code.
- Added options to Config.ini that control game joining delay and autosave delays (vanilla value for autosave is 5 minutes, can be set to any value whatsoever now).
BUILD 80227
27th Feb 2008 (ca. 800 lines of code redesigned)
- Re-written all the former quest API that was used for the *.xxx extended file format, now the quest section is stored in the D2S.
26th Feb 2008 (ca. 1000 lines of code added)
- Re-written all save/load and networking code related to D2S format (in two days!) to support D2S files up to 20 KB in size, with new sections for custom data (etc), making secondary external save files superflous.
24th Feb 2008 (ca. 600 lines of code added)
- Using this I added a small config GUI allowing the player to change some of the MetalStorm INI settings in realtime (changes are saved). --- See screen topic
- Added a way to implement infinite (well 4 billion) new GUI panels (ofc the individual panels have to be coded).
- Replaced the MouseDown and MouseUp events for the char screen, now buttons (etc) can be moved/removed/added to it easily. Also implemented a similar multi-stat point assignment to what is in plugy, so people don't miss that feature.
23rd Feb 2008 (ca. 500 lines of code added)
- Re written all the code associated with displaying the char screen (next will follow the 'click detection' for this screen).
22nd Feb 2008 (ca. 500 lines of code added)
- More display code for stats (etc) has been re-written
- Several missile functions for z-axis aware trails and mid-air-collisions have been added (see screenshot topic)
19th Feb 2008 (ca. 500 lines of code added)
- Rewritten a ton of utility functions to reduce the number of cross module calls further
- Expanded the amount of item palette shifts from 21 to 50 allowing for a much higher item color variety then vanilla (screenfeed comming soon).
18th Feb 2008 (ca. 1000 lines of code added)
- Rewritten the handler for descdmg and descatt, stuff like shield attack damage will now be displayed accurately in the char window
- Many other display parts, mainly for items were changed, much much more to follow here
16th Feb 2008 (ca. 500 lines of code added)
- Totally re-written the functions displaying weapon damage to make them more efficient, accurate and show average damage alongside the other values. It will also show the damage of missiles if it is a missile weapon other then bow/crossbow (where the ammo type defines how much damage it does).
15th Feb 2008 (ca. 1000 lines of code added)
- New and much improved pspell functions for powerup items (without the vanilla bugs and a lot of extras)
- Entirely re-written the way the game handles pspells in general
- The code handling spell charges has been re-written from scratch
-All code associated with missile weapons (inc. hardcoded display and autoequip settings for bow and crossbow + ammo depletion code for bows and crossbows) was rewritten and everything is now data driven.
14th Feb 2008 (ca. 1500 lines of code added)
- Rewritten merc drag/drop icon to properly handle stacked potions (potions with quantity)
- Rewritten many bodyloc (etc) handlers and a lot of other item interfacing code to implement the sticky items properly (such as that after death, their stats are indeed present and active)
- Fully implemented and completed Spell Generated item code (the basis was present for a more then a year)
- A load of of smaller code changes that further contribute to the stability and efficiency at which the game runs
11th Feb 2008
- Internal test session, new development at end of test session
6th Feb 2008 (no code added, old code + text changes)
- Rewritten the way NPC inventory spawner func works (performance related changes only)
- 'MetalStorm' final Weapons.txt in progress, new weapons being added now, everything else recalculated and done from scratch
BUILD 80201
1st Feb 2008 (ca. 1000 lines of code added)
- The rest of NpcDialogs.cpp (inc. all non-quest Npc speech) is now entirely softcoded.
- Revised and expanded some other earlier Npc code for item enchantment (screenfeed to come)
- Corrected borkage in vanilla Npc speech scripts tables, most of the code for act3 and act5 NPCs was just plastered there, several Act3 gossips are unused in vanilla, some quest specific gossips were listed without this taken into account (esp. those concerning Natalya, Anya and Nihlathak [and the Ancients]).
31st Jan 2008 (ca. 200-300 lines of code added, but nearly 4000 lines revised, skill revision paused until NpcDialogs.cpp is softcoded)
- Revised Npc system and softcoded half of NpcDialogs.cpp (menu options etc, speech to follow)
- Replaced core vanilla quest code
- Stores.cpp entirely softcoded
- Improved older TC routines
- A lot of tweaks to existing code
28th Jan 2008 (ca. 1000 lines of code added)
- Started redesigning the code for Leap (which has interesting bugs in vanilla, such as that Sand Leapers deal their leap damage before they leap...)
- Parts of the stats screen code have been re-written from scratch, the rest will follow at a future point
25th Jan 2008 (ca. 1500 lines of code added)
- Rewritten skill functions for Find Item from scratch
- Rewritten bash skill functions again (they were from early 2007 and needed to adapt the new code layout)
- Rewritten hellfire oil mechanism from scratch with new packets and everything, ISC bound checking et al. (approx 1000 lines of code on this)
- Improved performance of several other functions
- More things I can't remember ATM
24th Jan 2008 (ca. 1000 lines of code added)
- rewritten a lot of D2 utility functions
- rewritten a lot of core AI functions (walk, attack etc), so now even the last bits of AI code are replaced
22nd Jan 2008 (ca. 1500 lines of code added)
- further improvements to some earlier skill code
- Completely rewriten the two remaining Paladin skill funcs (Redemption + FoH) and all associated code (inc. missile and state funcs)
- Additional D2 combat code has been replaced (now most everything of this is entirely new code, I take a guess and say 95% of the combat code is my code now)
21st Jan 2008 (ca. 500 lines of code added)
- Further improvements to conversion (see second note)
- Completely replaced functions for Conversion and Holy Freeze (see note)
* oh the sheer brilliance, Holy Freeze func (#81) was supposed to add the shatter state to the unit while it is effected by the aura, however this never had any effect because the statlist is deleted when a unit dies, which triggers the end-state callback, as a result the shatter state is removed again before it takes effect (GREAT WORK), the only reason holy-freezed units shatter is because of the melee cold damage it grants . The well known conversion bug (besides the fact conversion adds the chance-to-convert as ed% ) is the dumbest thing I've ever seen in form of code. The end-state func will _EXIT_ if the conversion_save state exists (and it will _ASSIGN_ it when it doesn't exist), the result is that the stats are never reset.
** conversion (ofc entirely ridden of the stupid vanilla bugs) has been changed slightly, in vanilla the units stay planted where you converted them, now they'll actually follow you around if you get off screen. This is both good and bad (good because you won't lose on exp and have to walk back there waiting until they get normal again), bad because the bug is gone and when they leave the converted state they're back to full strength (which means if you convert too many, they may all return to normal around the same time, and you'll end up facing half the level).
BUILD 80120
19th Jan, 2008 (ca. 1200 lines of code added)
- Entirely replaced the code responsible for special skill related unit drawing (WW rotation, charge trail etc)
- Completely re-written skill functions for charge, fixing what appears to be the most bugged skill of all times. (see notes)
1.) - incorrect path values set on server-side, different from those on the client, which can lead to stuckage (for monsters)
2.) - When the skill fails it did different things on the client / server (for monsters)
3.) - the range used was inconsistently set to 0 or 3 which produces different results on client/server (again for monsters)
4.) - some path related calls were entirely forgotten on the client (once again for monsters)
5.) - wrong mode used for monsters (server side at least)
6.) - invalid frame count used on client and server due to badly written loop that failed to iterate the sequence properly (always returned 7, no matter what)
7.) - knockback flag set even if no hit occurred
8.) - ignored tohit calc when used by monsters (this may NOT have been a bug, but they could just as well intended to just skip the AR bonus, we will never know)
9.) - hardcodes for reanimated horde are different client/server side (on the server the function finishes charging, on the client (properly) they keep charging until they reach you, due to this they get stuck running in place)
10.) the trail effect was not softcoded, despite the fact it only required one line of code to do this (...)
11.) presumably more things I forgot about
16th Jan, 2008 (ca. 1300 lines of code added)
- Some improvements to older bash func replacement
- Replaced skill functions related to damage aurae (and yes, sanctuary works like it should now )
- Great improvements to Paladin stat auras
- Rewritten skill functions and associated code for Poison Explosion, Attract and Revive (see notes)
- Further replacement of utility functions
- Some D2 functions called often were replaced with local copies to speed up execution (global calls need more clocks then local calls because it calls a memory location viz. a static address)
- Source revision, some cleanup done to all the source files adding enums for things such as unit flags and other former constant values
* Revive was changed around a bit, it used to use overlayheight from monstats2.txt to determine the monster size, but this can produce weird results on some enemies, so it uses a custom function for this now. Poison Explosion code was beefed up, the range and amount of clouds will now depend on slvl.
** And with this update, the original skill code of the necro, is entirely and completely rewritten. Leaving the Paladin, Barb, Assassin and Druid skill code.
14th Jan. 2008 (ca. 500 lines of code added)
- Rewritten skill functions for confuse (see note)
- Additional improvements to the games targeting routine
* In vanilla confuse is coded in a rather bad way. The function responsible for picking targets with confuse will reset the internal ai state of the unit back to default (aka not confused) if it fails picking a target, as a result the confused monsters are only sometimes confused but generally will only have the confuse state on them (this means they will be attacked by other monsters, but they will not attack other monsters).
13th Jan. 2008 (ca. 400 lines of code added)
- More misc code improvements and d2 utility replacements
- Re-written skill functions for corpse explosion
12th Jan. 2008 (ca. 700 lines of code added)
- Misc code improvements, replaced some more D2 utility functions
- Re-written functions for raise skeleton and revoked former hardcodes therein
- Re-written functions for curses and bone skills
- Changed previous durability routine to final version
- Changed merc experience share stuff
11th Jan. 2008 (ca. 1000 lines of code added)
- Re-written old exp code, replaced with final variant, added party exp handling
- Re-written and expanded Hydra skill funcs
- Re-written skill functions for Teleport, Chain Lightning and Thunder Storm (<- fully softcoded now)
* With this update all sorc skill funcs are fully rewritten
10th Jan. 2008 (ca. 900 lines of code added)
- New code for handling server controlled event sounds (expanding existing stuff used for example for quest specific character speech)
- Skills functions for fire wall and enchant re-written from scratch
- Re-written skill funcs for Inferno, Static Field, Blaze (+Spider Lay) (see note)
- Improvements to state handling code (in general)
- Improvements to freeze, stone curse and chill states
* Lotsa bugs, more bugs and yet more bugs after that (and a little bit of hardcoded crap too)! - Inferno has hardcoded framecounts, they are different on the client/server (leading to stuckage bugs), the default seq_input of 10 is bad, it should be 9 (this causes several of the missiles to do no damage in vanilla), incompletely coded in some places, Static Field precalculates the damage but then passes the wrong arguments to the damage evaluation, where it gets recalculated (effect: unit with 50% lightning resist would be treated as having 75%), Blaze/Spider Goo - this was definetly one of the most hardcoded things yet, spider goo even had hardcoded sounds. All softcoded now. (Side note: in vanilla, Spider Goo only works on the client when used by a player, the missiles have no effect server-side unless the skill is used by a monster).
9th Jan. 2008 (ca. 800 lines of code added)
- Re-written from scratch functions for (Player) Inferno, Charged Bolt and standard buffs (SrvDoFunc #18)
- Improvements to stat aura code
- Split Skills.cpp (ca. 6000 lines) into individual files for each vanilla class / util
- Further adjustments to combat code
BUILD 80108
8th Jan. 2008 (ca. 1500 lines of code added)
- Major improvements to combat events (see below, note 3)
- Re-written skill functions for Vengeance, Strafe and GuidedArrow/BoneSpirit
- Re-written skill functions for Lightning Strike (see note)
* These functions are completely fubar in vanilla. They add the radius as ED% to the melee attack, have hardcoded lightning damage added to the melee attack and a strange target picking routine.
** With this update, all of the Amazon skill functions have been fully re-written, without the bugs
*** Fixed the long time bug that allowed the player to move/attack/cast while dodging an attack, which resulted in a "walking in place" anim, other improvements done to uninterruptable skills, last-block-frame now also applies to DEA
7th Jan. 2008 (ca. 1000 lines of code added)
- Re-written Blessed Hammer, Nova (all) skill functions from scratch (inc. removing hardcodes)
- Improved math in damage routines for additional accuracy
- Re-written Multishot (and also Teeth) skill functions from scratch (see note)
- Improvements to the missile attack rating fix (applies to everything now inc. Multishot)
- Improvements to the attack-rating based on distance for missiles
* Multishot arc-function decyphered, changed calc3 from that stupid nerf to a enhanced damage bonus, code for arc given below in case someone wants to see it (after this add space_x and space_y to target_x and target_y recursively). EDIT: The function was expanded to allow shooting a random missile (synchronized between client and server) picked from SMissileA/B/C and CMissileA/B/C. See here for an example