Code Monkey home page Code Monkey logo

classicfct's Introduction

ClassicFCT ko-fi

Highly customizable "Floating Combat Text" addon with text anti-overlap behavior similiar to that of WoW Classic.

Use "/cfct" command to open the options interface.

Currently there are 2 configuration presets built-in: "Classic" and "Mists of Pandaria". Users can create their own presets.

Text display area can be positioned in 3 ways:

  • to screen center (with x, y offsets)
  • to the target nameplate
  • to every individual nameplate (anti-overlap doesnt work in this mode courtesy of Blizzard)

If no nameplate is available (in case the target dies or moves off-screen), text display area can fall back to screen center. Text can be displayed behind or in front of nameplates and their children.

Animations:

  • Fade In, Fade Out
  • Directional Scroll
  • Pow (a 2 stage scale animation for crits)

Configurable variables include:

  • animation timing, scale and duration.
  • text font, style, size, custom color or by damage type.
  • anti-overlap spacing
  • spell icons for each damage/heal event.
  • filtering, sorting, merging

classicfct's People

Contributors

akbyrd avatar phoeshow avatar techhypno avatar

Stargazers

 avatar  avatar

Watchers

 avatar

classicfct's Issues

Request Obliterate Color Category [not familiar with github so im not sure where else to post]

Hi, is it possible to add Obliterate in its own color category? unfortunately it registers as phyiscal damage even though its frost damage when killing machine procs, blizzard combat log reads it as frost but other addon's like details reads it like phyiscal too

this is a snippet from discord: "Details! (And I assume WCL), say that Oblit not showing frost damage is a Blizz issue. Even tho the combat log says it’s frost damage."

lua error since new version

Hello i'm having lua errors since new version and cant seem to get it to work

Date: 2021-11-06 19:34:50
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\ClassicFCT\config.lua line 1017:
table index is nil
Debug:
[string "@ClassicFCT\config.lua"]:1017: in main chunk
Locals:
addonName = "ClassicFCT"
CFCT =

{
}
tinsert = defined =[C]:-1
tremove = defined =[C]:-1
format = defined =[C]:-1
strlen = defined =[C]:-1
strsub = defined =[C]:-1
gsub = defined =[C]:-1
floor = defined =[C]:-1
sin = defined compat.lua:36
cos = defined compat.lua:21
asin = defined compat.lua:17
acos = defined compat.lua:16
random = defined =[C]:-1
select = defined =[C]:-1
pairs = defined =[C]:-1
ipairs = defined =[C]:-1
bitband = defined =[C]:-1
GetSpellInfo = defined =[C]:-1
IsRetail = false
IsClassic = false
IsBCC = true
DefaultPresets =
{
Classic =
{
}
Mists of Pandaria =
{
}
}
DefaultConfig =
{
petheal =
{
}
filterRelativeEnabled = false
attachModeFallback = true
filterAverageThreshold = 10
mergeEventsBySchool = true
petspellmiss =
{
}
preventOverlap = true
mergeEvents = false
mergeEventsIntervalMode = "last"
inheritNameplates = false
abbreviateNumbers = false
filterAbsoluteThreshold = 100
autocrit =
{
}
preventOverlapSpacingX = 30
pethealcrit =
{
}
petautocrit =
{
}
heal =
{
}
pethealmiss =
{
}
areaX = 0
healcrit =
{
}
mergeEventsInterval = 0.100000
petauto =
{
}
healmiss =
{
}
petautomiss =
{
}
petspellcrit =
{
}
mergeEventsBySpellID = false
kiloSeparator = false
animDuration = 1.500000
petspell =
{
}
spellIconOffsetY = 0
textStrata = "MEDIUM"
sortMissPrio = false
dontOverlapNameplates = false
areaNY = 0
spellmiss =
{
}
mergeEventsByGuid = false
animSpeed = 1
filterAbsoluteEnabled = false
preventOverlapSpacingY = 50
spell =
{
}
attachMode = "tn"
areaY = 150
automiss =
{
}
auto =
{
}
mergeEventsBySpellIcon = true
colorTable =
{
}
filterRelativeThreshold = 10
mergeEventsCounter = true
spellcrit =
{
}
spellIconOffsetX = 0
areaNX = 0
spellIconAspectRatio = 1
filterAverageEnabled = false
spellIconZoom = 1
sortByDamage = false
}
DefaultVars =
{
enabled = true
hideBlizzHeals = true
forceCVars = true
hideBlizz = true
lastVersion = ""
selectedPreset = ""
characterSpecificConfig = false
}
DefaultCharVars =
{
enabled = true
hideBlizzHeals = true
forceCVars = true
hideBlizz = true
selectedPreset = ""
}
DefaultTables =
{
filterSpellBlacklist =
{
}
mergeEventsIntervalOverrides =
{
}
}
ClassSpecificTables =
{
filterSpellBlacklist = true
mergeEventsIntervalOverrides = true
}
(for index) = 6
(for limit) = 11
(for step) = 1
i = 6
class = nil
(for generator) = defined =[C]:-1
(for state) =
{
filterSpellBlacklist = true
mergeEventsIntervalOverrides = true
}
(for control) = "filterSpellBlacklist"
k = "filterSpellBlacklist"
v = true
(*temporary) =
{
HUNTER =
{
}
WARRIOR =
{
}
PALADIN =
{
}
ROGUE =
{
}
PRIEST =
{
}
}
(*temporary) =
{
}
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*tempora
AddOns:
Swatter, v8.2.6377 (SwimmingSeadragon)
AngryAssignments, vv1.14.2tbc
Atlas, vv1.49.01
AtlasClassicWoW, vv1.49.00
AtlasLootClassic, vv2.3.4-bcc
AtlasLootClassicData, vv2.3.4-bcc
AtlasLootClassicDungeonsAndRaids, vv2.3.4-bcc
Attune, v245
AucAdvanced, v8.2.6430 (SwimmingSeadragon)
AucFilterBasic, v8.2.6364 (SwimmingSeadragon)
AucStatHistogram, v8.2.6366 (SwimmingSeadragon)
AucStatiLevel, v8.2.6370 (SwimmingSeadragon)
AucStatPurchased, v8.2.6367 (SwimmingSeadragon)
AucStatSimple, v8.2.6399 (SwimmingSeadragon)
AucStatStdDev, v8.2.6369 (SwimmingSeadragon)
AucUtilFixAH, v8.2.6371 (SwimmingSeadragon)
Bagnon, v9.1.3
BeanCounter, v8.2.6434 (SwimmingSeadragon)
ClassicFCT, vB0.86b
Stubby, v8.2.6376 (SwimmingSeadragon)
BlizRuntimeLib_enUS v2.5.2.20502
(ck=31e)

Damage Type Colors

clicking damage type colors returns this error

7x ClassicFCT/config.lua:813: attempt to call method 'SetColorRGB' (a nil value)
[string "@ClassicFCT/config.lua"]:813: in function <ClassicFCT/config.lua:792>

Locals:
self = ClassicFCT_SpecialAttacks_ScrollChild_Frame4_Frame5 {
label = FontString {
}
value =

{
}
preview = Texture {
}
configPath = "Config.spellcrit.fontColor"
}
a = 1
r = 1
g = 0.909804
b = 0
(*temporary) = nil
(*temporary) = ColorPickerFrame {
DragBar = Frame {
}
opacity = 0
hasOpacity = true
Header = Frame {
}
Footer = Frame {
}
Border = Frame {
}
Content = Frame {
}
}
(*temporary) = 1
(*temporary) = 0.909804
(*temporary) = 0
(*temporary) = "attempt to call method 'SetColorRGB' (a nil value)"
CFCT =
{
characterSpecificConfig = false
selectedPreset = "mopremixDK"
lastVersion = "M0.87k"
enabled = true
hideBlizzHeals = false
_DefaultPresets =
{
}
forceCVars = true
hideBlizz = true
Animating =
{
}
eventCache =
{
}
fontStringCache =
{
}
ConfigPanels =
{
}
Presets =
{
}
_testMode = true
ConfigPanel = ClassicFCT_ClassicFCT_ScrollChild {
}
Config =
{
}
spellIdCache =
{
}
frame = ClassicFCT.frame {
}
_log =
{
}
}
ConfigPathOrFunc = "Config.spellcrit.fontColor"

(small issue) text above wrong frame

Its not a breaking bug by any means, but i decided to report it anyway.

If you damage an enemy, and switch to another enemy, the combat text will display above the selected creature, even if that is far away

see:

Damage Received

Hi

sorry to open an issue but I dont know how to contact you otherwise.
Is it possible to make the addon also work for Damage Taken (Dodge,Parry etc.) included.
Love the customisation of the addon.

CBTH on Friendly Nameplates

I'm using the latest release and it seems that CBTH isn't working on friendly nameplates within instances. It only works with the centered screen feature only.

Is this intended or a bug?

It would be awesome, if the healing numbers work the same way as damage just on friendly nameplates as healer.

Text display area fallback suggestion

Suggestion
Would it be possible to remember the nameplates last position when displaying damage numbers of an enemy that dies and show the final numbers in that location instead of the center? That way the numbers still show in relatively the same position instead of snapping to the center. Would add just that much more old style immersion!

If no nameplate is available (in case the target dies or moves off-screen), text display area can fall back to screen center.

round function in ClassicFCT can break other addons

In ClassicFCT, the function round is declared in global scope. The current version of wow doesn't have this function, but future versions do. Another addon, Gargul, tries to polyfill and use this function, but ends up calling the already-defined version in your addon.

The version in your addon doesn't behave quite the same as the polyfill, so it breaks Gargul.

Here's the relevant lines:

function round(n, d)
    local p = 10^d
    return math.floor(n * p) / p
end

I noticed this isn't used, so if I remove the function it fixes the problem. Could be good to refactor and/or remove this from your addon too.

multiple errrors

Hi I received the following error over and over when logging in today:

867x ClassicFCT\main.lua:713: attempt to index field 'Config' (a nil value)
[string "@ClassicFCT\main.lua"]:713: in function <ClassicFCT\main.lua:712>
[string "@ClassicFCT\main.lua"]:863: in function <ClassicFCT\main.lua:853>

Locals:
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index field 'Config' (a nil value)"
CFCT =

{
enabled = true
eventCache =
{
}
_testMode = false
DamageRollingAverage = defined @ClassicFCT\main.lua:30
GetNamePlateUnitByGUID = defined @ClassicFCT\main.lua:903
UnitHealthMax = defined @ClassicFCT\main.lua:913
Test = defined @ClassicFCT\main.lua:747
frame = ClassicFCT.frame {
}
fontStringCache =
{
}
Animating =
{
}
}
pairs = defined =[C]:-1
eventCache =
{
}
now = 647887.539000
ipairs = defined =[C]:-1
DispatchText = defined @ClassicFCT\main.lua:601

Lua Error all of a sudden

Started getting this LUA error during combat, and I have been using this for weeks without issues.

Message: Interface/AddOns/ClassicFCT/main.lua:581: bad argument #1 to 'SetScale' (must be a finite number - Usage: self:SetScale(scale))
Time: Wed Apr 12 15:56:36 2023
Count: 4
Stack: Interface/AddOns/ClassicFCT/main.lua:581: bad argument #1 to 'SetScale' (must be a finite number - Usage: self:SetScale(scale))
[string "=[C]"]: in function SetScale' [string "@Interface/AddOns/ClassicFCT/main.lua"]:581: in function ApplyUpdate'
[string "@Interface/AddOns/ClassicFCT/main.lua"]:921: in function <Interface/AddOns/ClassicFCT/main.lua:909>
[string "@Interface/AddOns/ClassicFCT/main.lua"]:942: in function <Interface/AddOns/ClassicFCT/main.lua:930>

Locals: (*temporary) = FontString {
0 =
ApplyUpdate = defined @Interface/AddOns/ClassicFCT/main.lua:574
Init = defined @Interface/AddOns/ClassicFCT/main.lua:68
Validate = defined @Interface/AddOns/ClassicFCT/main.lua:525
UpdateParent = defined @Interface/AddOns/ClassicFCT/main.lua:495
UpdatePosition = defined @Interface/AddOns/ClassicFCT/main.lua:553
UpdateAnimation = defined @Interface/AddOns/ClassicFCT/main.lua:538
Release = defined @Interface/AddOns/ClassicFCT/main.lua:91
state =

{
}
}
(*temporary) = Infinite
(*temporary) = "must be a finite number - Usage: self:SetScale(scale)"

Missing Events Depending on Merge Interval

While tuning my setup I noticed what appears to be a bug with merging events. Whirlwind with a Fury Warrior hits 3 times with each weapon for a total of 6 hits. If I set my Max Interval to 0.3 from Last Event I'll always see a proper event with all 6 hits merged. However, if I set the interval to 0.25 or 0.20 I start seeing events with only 4 hits merged. I don't see a separate 2 hit event, the missing 2 hits simply disappear into the ether. If I set the interval to 0.15 or 0.10 I start seeing 2x events or no events at all.

I see the same issue when I start going below 0.4 from First Event as well.

It's easy to repro this by spamming Whirlwind on a target dummy.

Here are my merge options
image

Per-Spell Merge Interval

I absolutely love the addon. It does a great job of merging events, unlike other combat text addons I've tried.

I do have a request regarding merging though. I'd like to be able to set a per-spell interval. Fury Warriors have a couple of spells that perform multiple hits over a small duration. Namely, Whirlwind and Rampage. In order to merge all of these events properly and show a single hit I have to set my interval to 0.6 seconds, measured from the first event. Unfortunately, this is a rather log duration and has the effect of making the combat text for all my other abilities feel pretty slow.

I'd like to be able to keep the global interval to something like 0.1 seconds, then add an override specifically for Whirlwind and Rampage that raises the interval slightly to capture all the events. Parrot is another combat text addon that has this custom interval support.

If the context helps at all, here's the overall look I have set up.
Scrolling Combat Text

9.1 PTR change

Blizzard has removed these variables

SCHOOL_MASK_NONE	= 0x00;
SCHOOL_MASK_PHYSICAL	= 0x01;
SCHOOL_MASK_HOLY	= 0x02;
SCHOOL_MASK_FIRE	= 0x04;
SCHOOL_MASK_NATURE	= 0x08;
SCHOOL_MASK_FROST	= 0x10;
SCHOOL_MASK_SHADOW	= 0x20;
SCHOOL_MASK_ARCANE	= 0x40;

from the constants.lua on the 9.1 PTR. Just a head's up.

Note that adding these values to your config.lua resolves the issue.

Addon does not show DK self heals

Hi,

I am not seeing any self-heals from Dk abilities such as Death Strike nor do I see any damage taken, I do see them however in the default Blizzard frame (in portrait icon).

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.