This plugin is an enhanced version of a default plugin that shows the Convention of Elements cycle for yourself and other party members. Movable, resizable, multi-element countdowns, toggleable audio countdown cues, multiple display modes, countdown borders and boxy countdown clock face visual style.
Features Explained
The drag and resizing features are enabled through the Movable Plugin System when you turn on its Edit Mode. If you move the COE display close to or onto other players' portraits in the party portrait area, it will automatically snap to its associated player portrait position when you turn off Edit Mode. Otherwise, you can freely position it elsewhere on the screen.
You can click to select or deselect elements for countdowns by clicking the element's icon when you are in DisplayMode.All and not in Movable Plugin System's Edit Mode. Multiple elements can be selected simultaneously, but by default, only the highest element is automatically selected. Automatic highest element selection also takes into consideration the elements of the skills on your bar, but you can click to deselect if you want.
It remembers other party members cycle positions so that their COE displays are still visible and cycling even when they are out of range.
You can also flag the audio cues to fire for another party member instead of yourself! Get the countdowns to each selected element announced to you even if it's not your CoE by pressing Ctrl+V (configurable) while hovering over that player's portrait or CoE display. (Text-To-Speech is an option but it gets desynchronized easily because it fires synchronously.)
Multiple display modes can be toggle through with a configurable hotkey (default: ~)
- DisplayMode.All - shows all class elements
- DisplayMode.SelectedOnly - shows only the selected elements
- DisplayMode.ActiveSelectedOnly - shows only the selected elements, but only when they are the active element
And the new countdown borders and boxy countdown clock face visual style is my way of retaining the original presentation but make the countdowns a little more visible :)
Customization
The starting display mode Mode is set on line 59.
TurboHUD's default ConventionOfElementsBuffListPlugin is disabled by default, but you can leave it on by changing DisableDefaultPlugin to false on line 61.
If you don't want giant countdown numbers when make icons big, you can set ScaleFontOnResize to false on line 64.
The default values for ToggleAnnounceHotkey and ToggleDisplayModeHotkey are set on lines 196 and 197 respectively.
New: You can customize the condition for playing sounds by altering the return value of the function defined by the PlaySounds property on line 66. By default the condition is when you're not in town and the player being announced is also not in town.
You can substitute your own sound files in the sounds folder, but you may need to adjust the SoundTriggerTime timings starting on line 90.
Installation
Put the folders in the archive into your TurboHUD directory. The files should be in the following locations when you're done:
TurboHUD \ plugins \ Razor \ Party \ PartyCOE.cs
TurboHUD \ sounds \ 1.wav
TurboHUD \ sounds \ 2.wav
TurboHUD \ sounds \ 3.wav
TurboHUD \ sounds \ Arcane.wav
TurboHUD \ sounds \ Cold.wav
TurboHUD \ sounds \ Fire.wav
TurboHUD \ sounds \ Holy.wav
TurboHUD \ sounds \ Lightning.wav
TurboHUD \ sounds \ Physical.wav
TurboHUD \ sounds \ Poison.wav
It requires the Movable Plugin System to be also installed. If you have the Menu Plugin System installed, it includes Movable Plugin System already.
Then (re)start TurboHUD.
Changelog
February 5, 2024
- attempt to fix COE snapping to the top left corner of the screen (edge case when TH hasn't fully populated player data)
January 31, 2024
- fixed coe still displaying after player took off coe within detection range
January 26, 2024
- fixed manual element selections resetting frequently
January 20, 2024
- added option to disable auto selection of highest element (AutoSelectHighestElement = true)
- changed element auto selection algorithm to prioritize the highest elemental damage
February 20, 2022
- fixed scaling of COE icons for non-monk classes (reverted an experimental change)
- adjusted the best-element selection algorithm to not automatically select an element when there is no elemental damage bonus and there is a tie on skill element tallies
February 17, 2022
February 15, 2022
- converted my mouse click detection and blocking implementation to use the new TurboHUD functions
- attempt to fix bugged positioning behavior when starting a new game
February 3, 2022
- fixed NPE in the new COE data checking logic in AfterCollect
February 2, 2022December 13, 2021
- attempt to fix the party desync that happens sometimes, especially when party members change
- changed the PlaySounds property from a bool to a function that returns a bool to make it possible to customize the conditions under which sounds are played
- removed the PlaySoundsInTown property
July 30, 2021
- optimized clock face drawing
- smoother corners for the countdown border rendering
July 14, 2021
- implemented mouse click supression for selecting elements to announce
- fixed disposal of data and MovableArea for players who leave the game
May 6, 2021
- fixed COE buff displaying before it becomes active after getting equipped
- fixed toggle voice while hovering over the movable area conflicting with toggle voice off while not hovering over any player portraits or panels
May 5, 2021
- fixed COE buff still showing after being deactivated
- added the ability to toggle voice off even when not hovering over any player portraits or movable CoE panels
April 28, 2021
- added ScaleFontOnResize option
- added UI obstruction checking to the tooltip hint and Voice tracking toggle hotkey when hovering over a player portrait
- fixed Voice toggle when hovering over a player portrait
- moved starting position to approximately where the default plugin would draw CoE
- fixed speaker icon positioning formula
April 21, 2021
- added DisplayMode.ActiveSelectedOnly option
- restructured the execution logic so the plugin doesn't have to repeat code for each display mode
April 18, 2021
- fixed visible flickering at element transitions (switched from checking IBuff.TimeElapsedSeconds to IBuff.TimeLeftSeconds)
- added two display modes (DisplayMode.All and DisplayMode.SelectedOnly) that can be toggled with a hotkey
April 15, 2021
- initial version
How can I turn on voice announce only in greater rifts (ignore other locations including nephalem rifts)?
ReplyDeleteBased on your request, I just updated PartyCOE to allow you to customize the PlaySound condition more easily. On line 66, where PlaySounds is defined, you can change the following code from:
Delete!Hud.Game.IsInTown && (AnnouncedPlayer.IsMe || !AnnouncedPlayer.IsInTown)
to...
Hud.Game.SpecialArea == SpecialArea.GreaterRift
OR
Hud.Game.SpecialArea == SpecialArea.GreaterRift && (AnnouncedPlayer.IsMe || (AnnouncedPlayer.InGreaterRift && AnnouncedPlayer.InGreaterRiftRank > 0))
(In the new version of PartyCOE dated December 13, 2021)
DeleteThx, a lot!
ReplyDeleteHello, Razorfish, thank you for your amazing plugins
ReplyDeletei've noticed 2 problems with Party COE (tested with latest Movable Plugin System):
1) if there is 3 or 4 players in game and some/all of them re-enter game, plugin doesn't refresh position COE accordingly to new position of players portraits
2) also in version from December 13, 2021 if there is more then one player with COE, one of them might stop drawing, which seems to be fixed after changing location (rift floor i.e.)
(i never saw 2nd problem in version form May 6, 2021)
i understand that there is not much to go on from, considering amount of information i've provided, so, in case it will be too time consuming to fix it, might i suggest to add option to stick COE to default position (i don't need to move it around anyway).
Thank you for your time.
Sorry for the delayed response, I have posted an experimental update that needs some testing to verify whether or not it solves this issue. It has been difficult for me to personally test plugins with group content lately because none of my friends are currently playing D3 :(
DeleteThank you for update
ReplyDeleteSeveral hours of runs with party and it looks perfectly fine
i'll let you know if i encounter any problem after extended testing
(yepp, there is noone left to test it with in party, after banwaves)
Line 308 seems to has incorrect height calculation
i've used code from previous version instead and uncommented line 297 to fix it
btw, if you need to test something, feel free to contact me, i would gladly join to help
(Discord: JohnWayne#9576)