/BigWigs

BigWigs is a World of Warcraft AddOn to predict certain AI behaviour to improve the players performance. This Modification is build for Patch 1.12.1 and its content for use on the Classic-WoW private Server.

Primary LanguageLuaOtherNOASSERTION

BigWigs

Diese Beschreibung auf Deutsch lesen.

BigWigs is a World of Warcraft AddOn to predict certain AI behaviour to improve the players performance.<br > This Modification is build for Patch 1.12.1 and its content for use on the Classic-WoW/Nefarian private Server.

License

Creative Commons License
BigWigs Classic-WoW by Dorann is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

The adjustments were originally made by LYQ.<br > Adjustments for Classic-WoW made by Dorann.<br > Please refer to this repository for more information.

Download

PLEASE NOTE THIS IS STILL A WORK IN PROGRESS
Download the latest Release here

How to install

a) If you choose to download the .zip file from the latest Release all you have to do is extract the archive in your /World of Warcraft/Interface/AddOns/ directory. (Recommended)
b) If you download the raw code from GitHub (Download ZIP) you'll have to unzip the downloaded archive and rename the folder from 'BigWigs-master' to 'BigWigs' and place it in your /World of Warcraft/Interface/AddOns/ directory. (Not recommended)

Included AddOns/Plugins

The following Plugins are used for the boss modules.

  • Bars modified by Dorann
    Shows Bars for important events during a Boss Fight. Added a backport of emphasized bars. Bars that begin at 15s or less or Bars that have less than 10s left move to the emphasized group which can be placed separatly and increases the size of the Bar.
  • BossBlock
    Blocks messages from boss mods in the raid chat and raid warning frame.
  • Messages
    Shows messages for important events.
  • Proximity made by Dorann
    Backport of the Proximity plugin. Shows you which raid members are in close proximity to yourself (C'Thun phase 1). Since there are only range checks for 9.9y, 11.11y and 26y the list should be taken with a grain of salt and should not be absolutly relied upon.
  • RaidIcon
    Puts a Raid Icon (Skull by default) over the head of a raid member
  • Range
    Allows you to set the range of the combat log to increase the precision of BigWigs. Using the highest possible setting by Default.
  • Sound modified by Dorann
    Plays a sound on important events.
  • Test
    Allows you to Test BigWigs and move the Plugins (Bars, Messages) around.
  • Tranq
    Support for Tranquilizing Shot to see which Hunter used it.
  • WarningSign made by LYQ, modified by Dorann
    Displays important SpellIcons in the center of your screen. Eg. if you're standing in Rain of Fire at Gehennas or if you're a Hunter and Magmadar/Flamegor/Chromaggus is Frenzied and you need to Tranq.

Several other BigWigs Plugins are included in this repository, so you only need to download and use the 'BigWigs' folder from this repository. If you happen to have any of the listed AddOns seperately I suggest removing or disabling them - in case I adjusted some of those in this repository as well.

  • CustomBar
    Allows you to create a custom bar with the following command: /bwcb
  • Version modified by Dorann
    Checks your BigWigs version and warns you if there is a newer version available.
  • BigWigs_CommonAuras
    Keeps track of certain Buffs and Cooldowns eg. Shield Wall and Challenging Shout
  • BigWigs_ZombieFood modified by LYQ
    announces if a player is getting dazed
  • BigWigs_LoathebTactical modified by Dorann
    Spore and Consumable warnings for Loatheb
  • BigWigs_RespawnTimers (NEEDS REWORK)
    Trash respawn timers
  • BossRecords made by LYQ
    This Plugin will keep record of your time used in bossfights and compare it to your fastest.
  • RaidOfficer made by LYQ
    This Plugin will enable for Raid Assistants dragging Players of one Raid-subgroup to another. This was on vanilla previously only enabled for RaidLeaders but the API allows Assistants to do so too.
  • DousedRunes made by Dorann
    Shows you which runes in Molten Core have been doused and which still have to be doused to summon Majordomus. The Frame will be shown after a Rune has been doused and after a boss has been killed (beginning at Magmadar).
  • AFKick made by Dorann
    Allows you to send a request to automatically logout a raid member. If the player does not react within 20 seconds a normal Logout will be triggered. If the logout did not work the client will be closed after another 20 seconds.
  • AutoReply made by Dorann
    Whenever someone whispers you during an encounter you will automatically send a response that you are busy. You will also send another message as soon as the fight is over.
  • Farclip made by Dorann
    If your viewing distance (farclip) is set to high in Naxxramas you will experience frequent screen freezes for several second. As a workaround this plugin sets your viewing distance to the minimum in Naxxramas and restores your old value whenever you leave Naxxramas.

To change the settings of BigWigs and its plugins you have several possibilities:

  • Command Line By writing the command "/bwcl" (shorthand for Big Wigs Command Line) you can access the command line. You will get a list of all available commands to help you find your desired setting.
  • Minimap Icon By rightclicking on the minimap Icon (or if you are using FuBar rightclicking the Icon on your FuBar) you can access the menu with all available settings.
  • GUI By writing the command "/bw" or "/BigWigs" into the chatframe you can access a automatically generated GUI for all settings.

Raid Adjustments

If you want to browse through all the changes and their status regarding each encounter in the Raid specific README files. On there you can also see whether changes are untested, working perfectly or working as good as they can be.

Core/General Adjustments

  • (100%) Reworked the core module and most boss modules to improve the maintainability (see Provided API).
  • (100%) Engage Syncs are now working perfectly on every encounter and do allow communication between clients of different language packs.
  • (100%) Bosskill Syncs were added for every encounter dynamically and do also support communication of different language packs.
  • (100%) BossWipe Syncs were remodelled and added dynamically for every encounter.
  • (100%) KTM compatibility - Bossmodules are now able to set the MasterTarget, reset the Threat or Clear the Master Target. RaidOfficers do need to have this version for that.

Provided API

This is a (incomplete) documentation of the BigWigs API. This is only important for developers. Also refer to the modulePrototype overview and the bossTemplate for an example implementation.

Overview

:Sync(sync)
:DelayedSync(delay, sync)
:CancelDelayedSync(sync)
:ThrottleSync(throttle, sync)

:Message(text[, priority[, noRaidSay[, sound[, broadcastOnly]]]])
table :DelayedMessage(delay, text[, priority[, noRaidSay[, sound[, broadcastOnly]]]])
:CancelDelayedMessage(text)
:Whisper(text, name)

:Bar(text, time, icon[, otherColor, c1[, c2[, c3[, c4[, c5[, c6[, c7[, c8[, c9[, c10]]]]]]]]]])
:RemoveBar(text)
:IrregularBar(text, minTime, maxTime, icon[, otherColor, c1[, c2[, c3[, c4[, c5[, c6[, c7[, c8[, c9[, c10]]]]]]]]]])
table :DelayedBar(delay, text, time, icon[, otherColor, c1[, c2[, c3[, c4[, c5[, c6[, c7[, c8[, c9[, c10]]]]]]]]]])
:CancelDelayedBar(text)
:BarStatus(text)
:BarId(text)

:Sound(sound)
table :DelayedSound(delay, sound[, id])
:CancelDelayedSound(sound[, id])

:Icon(name[, iconnumber])
:RemoveIcon()
:DelayedRemoveIcon(delay)

:WarningSign(texturePath, duration[, force])
:RemoveWarningSign(texturePath[, forceHide])
:DelayedWarningSign(delay, icon, duration[, id])
:CancelDelayedWarningSign(icon[, id])
:WarningSignOnClick(func)
:Say(msg)

:Proximity()
:RemoveProximity()
-- KLHThreatMeter
:KTM_Reset()
:KTM_ClearTarget([forceReset])
:KTM_SetTarget(targetName[, forceReset])

:Bar(text, length, icon, otherColor, ...)

Starts a timer bar that counts down for the specified length of time. If the length argument is table with the keys "min" and "max" a irregular bar will be created.

Arguments

  • text string
    The text to show on the bar.
  • length number/table
    The length of the bar in seconds or a table with the keys min and max (will create a irregular bar)
  • icon string
    What icon to show on the bar.
  • otherColor boolean
    Optional, if not specified, the configured colors will be used. If specified, you must provide 1 to 10 colors to use as arguments after otherColor.
  • ... color
    Optional, if otherColor is specified, you must provide 1 to 10 colors.
### Returns Nothing

Remarks

"Interface\\Icons\\" is automatically pre-pended to the icon path. If you have to show a bar with an icon that is not part of the default icons provided by WoW, this is still possible using the self:TriggerEvent("BigWigs_StartBar", ...) syntax.

Example

self:Bar("Adds incoming!", 30, "Spell_Nature_Web")
self:Bar("Testing Colors!", 60, "Spell_Nature_Web", true, "red", "yellow", "green")
self:Bar("More adds incoming!", { min: 20, max: 25 }, "Spell_Nature_Web")

:Icon(name, iconnumber)

Puts the specified raid icon on the specified player, only works if you are promoted in the raid or the raid leader.

Arguments

  • name string
    The name of the player you want to put an icon on.
  • iconnumber number
    Optional, if not specified, the configured default raid icon will be used. If specified, this raid icon will be used. 1: Yellow Star, 2: Orange Circle, 3: Purple Diamond, 4: Green Triangle, 5: White Moon, 6: Blue Square, 7: Red Cross, 8: Skull

Returns

Nothing.

Remarks

If you use CheckForBossDeath or CheckForWipe (used by default) the icon is removed automatically. If not, you should clear it yourself.

Example

self:Icon("Dorann") -- puts a skull on Dorann
self:Icon("Dorann", 2) -- puts an orange circle on Dorann

:Message(text, priority, noRaidSay, sound, broadcastOnly)

Displays a message in the configured message frame (defaults to BigWigs' own message frame) with the color configured for the given priority.

Arguments

  • text string
    The message to show.
  • priority string
    Optional, one of "Important" (red), "Personal" (red), "Urgent" (orange), "Attention" (yellow), "Positive" (green), "Bosskill" (green) or "Core" (cyan).
  • noRaidSay boolean
    Optional, if this is non-nil, the message will not be relayed to raid warning channel, even if that option is enabled.
  • sound string or boolean
    Optional, if this is a string, it must be a valid sound name (see :Sound). If 'true' is passed, the default "RaidWarning" sound provided by WoW will be played.
  • broadcastOnly boolean
    Optional, if this is provided, the message will only be broadcasted to the raid warning channel (if that option is enabled), and not shown locally.
### Returns Nothing.

Remarks

You should almost always provide a priority - if not, the message will be white. Remember that you should NOT surround the text with "***".
Also note that priority can be a RGB tuple, like {r=1.0,g=0,b=0}, and also just a color name ("Red", "Purple", "Orange", "Yellow", "Green", "Cyan").

Example

self:Message("Fear in 2sec!", "Important")
self:Message("You have the plague", "Personal", true, "Info")

:DelayedMessage(delay, ...)

This will schedule a delayed message to be printed after delay seconds.

Arguments

  • delay number
    The number of seconds to wait before printing the message.
  • ...
    The rest of the arguments are exactly like the ones for :Message.

Returns

The scheduled event ID, which is useful if you may want to cancel the scheduled message later.

Example

self:DelayedMessage(55, "Something happens in 5sec!", "Important")

local x = self:DelayedMessage(55, "Something happens in 5sec!", "Important") -- Then, a bit later, the boss enters phase 2, and you no langer want this message to display
self:CancelScheduledEvent(x)
-- or better

:Sync(sync)

Sends a communication sync to the other BigWigs users in the group.

Arguments

  • sync string
    The synchronization token to send to the other people in your group. Note that these tokens are recieved by all the BigWigs modules, so you should make sure you pick something unique.
### Returns Nothing.

Remarks

The tokens we use are typically prefixed by some portion of the boss name, like "HyakissWeb". When sending a sync, if you want to send more data (this will be provided by the second argument to :BigWigs_RecvSync, detailed later), you have to use string concatenation; "HyakissWeb" .. playerName (which would bekome "HyakissWeb MyToon"). Note that synchronization throttling is done only on the first part, not the additional information you include in the sync. Of course, sync messages are sent using SendAddonMessage, and as such there are some restrictions inherited. Take a look at Wowpedia for more information.

Example

self:Sync("BossAbility") self:Sync("BossTargettedAbility " .. player)

Module Prototype

The following functions and variables are available on each boss module. Also refer to the modulePrototype overview and the bossTemplate for an example implementation.

-------------------------------------
-- Core: Module Handling --
-------------------------------------

void BigWigs:ModuleDeclaration(bossName, zoneName)
void BigWigs:RegisterModule(name, module)
void BigWigs:EnableModule(moduleName, nosync)
void BigWigs:SetupModule(moduleName)
void BigWigs:DisableModule(moduleName)

-- event handler
void BigWigs:BigWigs_RebootModule(moduleName)

---------------------------------------
-- Functions and Variables --
---------------------------------------

-- do not override
BigWigs.modulePrototype.core = BigWigs
BigWigs.modulePrototype.debugFrame = ChatFrame1
BigWigs.modulePrototype.engaged = false
BigWigs.modulePrototype.bossSync = nil -- untranslated string
BigWigs.modulePrototype.zonename = nil -- AceLibrary("Babble-Zone-2.2")["Ahn'Qiraj"]

-- override
BigWigs.modulePrototype.revision = 1 -- To be overridden by the module!
BigWigs.modulePrototype.started = false -- not used anymore
BigWigs.modulePrototype.enabletrigger = nil -- boss
BigWigs.modulePrototype.wipemobs = nil -- adds that will be considered in CheckForEngage
BigWigs.modulePrototype.toggleoptions = nil -- {"sweep", "sandblast", "scarab", -1, "emerge", "submerge", -1, "berserk", "bosskill"}
BigWigs.modulePrototype.timers = {} -- table for all timers
BigWigs.modulePrototype.icons = {} -- table for all icons
BigWigs.modulePrototype.proximityCheck = nil -- function(unit) return CheckInteractDistance(unit, 2) end
BigWigs.modulePrototype.proximitySilent = nil -- false


-- do not override
boolean BigWigs.modulePrototype:IsBossModule()
void BigWigs.modulePrototype:DebugMessage(msg)
void BigWigs.modulePrototype:OnInitialize()

-- override (if necessary)
void BigWigs.modulePrototype.OnEnable()
void BigWigs.modulePrototype:OnEngage()
void BigWigs.modulePrototype:OnSetup()
void BigWigs.modulePrototype:OnDisengage()

-- do not override
void BigWigs.modulePrototype:Engage()
void BigWigs.modulePrototype:Disengage()
void BigWigs.modulePrototype:Victory()
void BigWigs.modulePrototype:Disable()

-- synchronize functions, do not override
string BigWigs.modulePrototype:GetEngageSync()
void BigWigs.modulePrototype:SendEngageSync()

string BigWigs.modulePrototype:GetBossDeathSync()
void BigWigs.modulePrototype:SendBossDeathSync()

-- event handler, override only if necessary (e.g. c'thun phase transition requires overriding CheckForWipe())
void BigWigs.modulePrototype:RegisterYellEngage(yell)

void BigWigs.modulePrototype:CheckForEngage()
void BigWigs.modulePrototype:CheckForWipe()
void BigWigs.modulePrototype:CheckForBossDeath(msg)

-- override
void BigWigs.modulePrototype:BigWigs_RecvSync(sync, rest, nick)

-- test function
void BigWigs.modulePrototype:Test()