Thread: ABuff System
View Single Post
Old 07-19-2007, 05:09 PM   #1
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,186

Submissions (19)

Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)Anitarf has a brilliant future (903)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default ABuff System

Click image for larger version

Name:	ABuffSystem_Thumbnail_New.jpg
Views:	1172
Size:	7.2 KB
ID:	46623

Update log:
12. 8. 2007: v1.2
20. 3. 2008: v1.3
24. 9. 2008: v1.4
19. 11. 2009: v1.5
26. 7. 2010: v1.6
21. 8. 2010: v1.7
18. 6. 2011: v1.8
15. 1. 2012: v1.9
17. 7. 2012: v1.9b
ABuff system

The ABuff system was designed to provide a framework within which all kinds of triggered buffs can be created. Buffs can be made to respond to all sorts of events, including custom user-defined ones, thus allowing for interactions with map-specific gameplay mechanics. Custom user data can be attached to both buff types and specific buffs to make sure that the ABuff engine does not represent a limiting factor in buff design.

The system was developed to support and promote the creation of interesting new buff spells, in hope that this will lead to new, more exciting gameplay in established map genres. Use your creativity.

Version 1.8 was developed using the NewGen editor v5d with JassHelper 0.A.2.B.

Required libraries:|
|
|
|
|
|
System components:
  • ABuff
  • ABuffDisplay
  • ABuffDispel
  • ABuffStruct
  • ABuffHeroSkill
  • ABuffSpell
  • ABuffItem
  • ABuffAura
|
|
|
|
|
|
Acknowledgements:
  • Thanks to Vexorian for creating vJass and to all the people
    who have contributed to the NewGen editor.
  • Thanks to Vexorian and PipeDream for helpful suggestions
    provided during the system's design phase.
  • Thanks to other users of wc3campaigns.net for their input.
Changelog

Version 1.9b
- Fixed a bug in ABuffDisplay that could result in the display ability not being preloaded correctly.

Version 1.9
- Fixed a bug in ABuffDispel that would cause it not to work.
- Fixed a bug where an aBuff could get destroyed twice when a unit died.
- Fixed a bug where new buffs could be added on dying units and would then never get removed.
- ABuff can now use .evaluate instead of .execute to run its event callbacks.
- Made minor optimizations to the ABuffAura library.


Version 1.8
- Fixed a bug in ABuffAura where updating the level of the aura did not update the aura buffs.
- Fixed ABuffHeroSkill and ABuffItem to optionally use AutoEvents instead of the old StatusEvents.
- The AutoIndex version of ABuff will no longer attempt to create buffs on units that are not indexed.

Version 1.7
- Moved ABuff from Table to AutoIndex, the old Table version is still supported.
- Fixed a bunch of bugs in ABuffStruct, code that uses it should actually compile now.
- ABuffDisplay now properly preloads abilities when created in struct/module onInit methods.
- ABuffItem now removes buffs before recreating them on unit reincarnation, avoiding bugs.
- Added the ABuffDispel helper library.

Version 1.6
- Added the ABuffSpell library that simplifies making abuffs applied by spells.
- Added the ABuffStruct module that allows simple encapsulation of abuffs in structs.
- Minor updates to ABuffHeroSkill and ABuffItem to help detect common user errors.
- Updated some of the samples to make use of the new libraries.

Version 1.5
- Added support for three different buff categories: STANDARD, STACKING, REFCOUNT.
- Added the ABuffDisplay library that simplifies displaying buffs with tornado-based auras.
- Added the ABuffHeroSkill library that simplifies making passive hero skills.
- Added the ABuffItem library that simplifies making abuffs applied by items.
- ABuff now uses DamageEvent instead of ADamage. It now also uses SpellEvent.
- ABuff still works without these two libraries, it just does not use these events without them.
- Completely recoded the ABuffAura library, it should be much more efficient now.
- Renamed ABuffDestroy to ABuffRemove, the old function name is still supported.
- Changed how custom events work, the new code is not backwards compatible.
- Recoded the samples to utilize other useful libraries besides ABuff.


Version 1.4b
- Updated the test map to use 1.24-compatible Table and TimerUtils, ABuff remains unchanged.

Version 1.4
- The system now uses standard libraries, Table for gamecache use and TimerUtils for timers.
- Damage detection has been moved to an independant library, which also supports damage prevention.
- The dummy units section has been replaced with the UnitRunsEvents function.
- The aBuff core engine has been reworked and optimised.
- The Aura subsystem has been reworked, removing dynamic trigger use and some bugs.
- Fixed a bug in the SetABuffTimeRemaining function that prevented the duration from being decreased.

Version 1.3
- Added effect delay safety checks to the stun system and to examples with dummy casters.
- Added the functions GetABuffFromBuffedUnitByType and BuffedUnitHasABuff.
- Did minor changes to the code to make use of new vJass syntax.

Version 1.2
- Added an aura subsystem.
- Fixed some non critical coding errors.
- Made the system more robust by using .execute instead of .evaluate for user event response functions.
- Added a safety check so buffs that are reapplied while being destroyed are not immediately cleaned up.
- Added a safety check so buffs can no longer be applied to dying units on the unit dies event.

Version 1.1
- Fixed an error which caused damage events not to be ingored even if the user specified that.
- Added the RefreshNeverReduceDuration function.

Attached Files
File Type: w3x ABuffSystem1.9b.w3x (233.6 KB, 372 views)
Anitarf is offline   Reply With Quote
Sponsored Links - Login to hide this ad!