Monster Hunter: World

File information

Last updated

Original upload

Created by

HelloWorId

Uploaded by

HelloWorId

Virus scan

Some suspicious files

About this mod

Shows EndemicLife/Monsters Behavior/Size/HP/Stamina/Rage/Crown/Status/PartHP, TeamDamage, TrainingDummyDamage, BuffTimer, MapTimer. Press F5 to send team damage to chat window.

*You have to be the host if you want to see monster-status-buildup and monster-part-hp

Requirements
Permissions and credits
Translations
  • Russian
  • Korean
Trivia:
According to Isiloki, running this program while playing PUBG can get your 1455-hours-playtime-PUBG-account banned.
According to SirDancelots, It can also get you permabanned in league of legends if helloworld.exe is running in the background.

Usage:
0. Use Windows 8.1 or Windows 10 or Windows 11
1. Disable Hardware-accelerated GPU scheduling if you are using Windows 10 build 2004
Spoiler:  
Show

2. Download the exe file.
3. Place the exe file at a directory such that it has file read/write permission at its current directory.
4. Launch the exe file before/while the game is running. the process helloworld.exe must have equal or higher privileged process token than that of the process monsterhunterworld.exe
Spoiler:  
Show
if you don't know what this means and helloworld.exe prints "Failed to load monsterhunterworld.exe, PID=XXX", then run helloworld.exe as admin

5. Make sure the game is running in DX12 or borderless windowed mode or both.
6. Mouseover a UI element and hold left mouse button to change its position.
7. Mouseover a UI element and hold cap to increase the its scale.
8. Mouseover a UI element and hold lctrl to decrease the its scale.
9. Press [capslock,space,back_tick] (back_tick is the button next to ESC) to randomize UI color until you are happy with all the UI colors.
10. Press [lctrl,space,capslock] to switch between monsterUI static view and dynamic view. (If you want to have monsterUI rendered at a fixed position on your monitor instead of at where the monsters are on the screen, press this keybind)
11. Open chat window (press insert), press F5 to send team damage to chat window.
12. Open chat window (press insert), press F6 to send highlighted monster's information to chat window.
13. Read the rest of the description page(Optional but highly recommended)

*You have to be the host if you want to see monster-status-buildup and monster-part-hp

FAQ:
Spoiler:  
Show
Q: Will you remove the function to post team damage to chat?
A: No
Spoiler:  
Show


Q:Do you have any plans on making this open sourced? Not only would I'd be more willing to trust it but others could contribute to it.
A: No.
Spoiler:  
Show


Q: How do I make "HelloWorld.exe" exit automatically when game exits.
A: Open "config.json", set "bExitOnGameExit" to true, save "config.json"

Q: Any way to lock the UI so that you can no longer drag it everywhere? -BirdSpirit
A: yes, set keyBinds.dragUI.enable to false. Or, set keyBinds.dragUI.keys to some buttons other than ["mouse left"]

Q:
How can I stop it sorting the parts like this? -wjy940330
A:
Spoiler:  
Show


Q: Any way to disable the actions showing for the monster?
A: Set monsterUI.bRenderAction to false

Q: I want only (Buff Timer UI/ Team damage UI/Boss HP) to show, is it possible?
A: Yes, you can hide the UI elements which you don't want.
    If you only want buff timer UI. You can toggle off the other UI by: open "config.json", set teamUI.enable and monsterUI.enable to false.

Q: I am having a black screen after launching the .exe. How do I fix it?
A: Solution 1 (SethRah):
Try using a windows theme that uses aero (default one). I'm pretty sure that windows basic themes are unable to display transparency.

Solution 2 (Kalramod):
Desktop Window Manager Session Manager services.
Themes services.
Restart the two services and reset them to the Aero theme.

Q:I have two screens and I would really like to have this data shown on another screen instead of on top of the game. -Brighmjr
A:1. launch the game in window/borderless mode
2. run helloworld.exe
3. start a quest.
4. drag all the UI elements to where you want them to be.
5. go to training area.
6. drag all the UI elements to where you want them to be.
7. change the game's rendering mode to fullscreen.

Q: Hi, is there anyway that i can edit the monster UI with only one monster i am attacking? How? -wayne24
A: set monsterUI.bRenderNonHighlightedMonsters to false.
For more details read Highlight a monster on the description page.

Q: I messed up the config. How do I reset it?
A: Choose 1 of the following:
1. press [R,B,Q], you will hear a beep sound, then every entry in "config.json" will reset to its default value.
2. delete config.json when "helloworld.exe" is not running.

*if you pressed [R,B,Q], and you did not hear the beep sound and you would like to know why.
Go to this website: http://gadzikowski.com/nkeyrollover.html
Hold down [R,B,Q], if all 3 keys are registered, this is what it should look like https://imgur.com/GzrtIJO
If only 1 or 2 of the keys are registered, consider getting a new keyboard.

Q: any reason why the TeamUI doesnt work in the Guiding Lands (expedition)?
A: Team damage isn't recorded by the game in expedition mode. helloworld.exe can't display things that don't exist.

Q: Monster Hp aren't showing.
A: You probably messed up the config. Press [R,B,Q]

Q: Team Damage aren't showing.
A: Team damage is not recorded in expedition mode. If you are not in expedition mode, You probably messed up the config. Press [R,B,Q]

Q:Where is "config.json"?
A:When "HelloWorld.exe" runs, it generates "config.json" at the same folder where "HelloWorld.exe" is.

Q:How do I open "config.json"?
A:
Spoiler:  
Show


Q:How do I set the font to the one shown in the picture?
A:The font shown in the picture is Choktoff. You can download it here. If you do not have the font installed, the text will be rendered with the default font.

Q:I don't like Choktoff font. Can I change the font?
A:Yes, download and install the font you like, set the value of "font" to the name of the font you just installed.

Q:How do I disable the beep noise?
A:Open "config.json", set "bBeep" to false.

Q:What is the white box that appears on the screen when I press hotkeys?
A:It's the border of the overlay window, on which the UI elements are rendered.

Q:Is this mod compatible with Special-K ?
A:Yes.

Q:HelloWorld.exe prints "Failed to load "MonsterHunterWorld.exe", PID = XXXX, Handle = 0 "
A:Launch HelloWorld.exe with admin privilege.
* This typically happens when you run monsterhunterworld.exe as admin, but not run helloworld.exe as admin.

Q:is it possible to disable the hot-keys? its annoying for those classes who use [CTRL] for block & [SPACEBAR] to dodge regularly.
A:Yes, read Keybind Config.

Q:once you engage monster bars start changing colors.
A:Set these 2 entries to [0,0,0] if you want monsterUI's color to stay the same.


Q: Can i disable damage each person deal ? Just leave damage percent enable. -Naiwaa
A: Yes, set teamUI.bRenderDmg to false. You can also toggle it with hotkey "teamUiDmgToggle" (the default value is [lalt+cap+v])

Q:I want all body part hp to always show, like the thumbnail.
A:By default the mod hides a body part if it has not been damage for 5 seconds. (Otherwise it takes a lot of space)
This is how you can make the mod always show all body parts.
"monsterUI": 
{
    "bRenderParts": true,
    "bRenderUndamagedParts": true,
    "partVisibleDuration": Infinity
}

Q: Is it possible in the future, to include, to sort the buff with how many seconds left, so i can rebuff easily -edwardcccc
A: set buffUI.sortPrecedenceDuration to a value that's higher than the value of buffUI.sortPrecedenceTimeActivated

Q: I can't move the overlay AT ALL. When I click on the DMG overlay to drag it it brings me to game and starts moving the camera instead..... -RyoHazukiITA
A: Press esc to bring up the ingame menu before you drag UI elements.

Q: I tried to customize the font, and when I saved the json (editted using notepad) the position is back to beginning.
Is there any way to prevent this? -AlbinoShino
A: This is why you should use notepad++ instead of notepad.
If you open a file with notepad, when the file is modified externally, notepad does not reload the file from disk.
If you open a file with notepad++, when the file is modified externally, notepad++ prompts you to reload the file from disk.

>Is there any way to prevent this?
Choose one of the following.
1.Use notepad++.
2.Whenever you modified the config with hotkeys, close notepad, reopen the config with notepad.

Q: helo can i ask for color code? -eraze93
A: 1.Go to this website https://www.tydac.ch/color/
2.Pick a color
3.Copy the "WEB color" code.

4.Paste it in the config, and add FF at the end. The last 2 digit "FF" is for transparency.

Q: Text will be cut off and not fully displayed https://i.imgur.com/QOcWNfb.png -donaldtsai
A: I think what is causing this problem,I use windows display setting "Set coutom text size(DPI)" to 125%,when I use default 100% it will display correctly -donaldtsai

Q: can you make part of monster and status build up to be able for member party no need to be a party leader? -vegance
A: No, it's not possible.
Only the host's game process stores monster part hp and status build up.
Client's game process does not.

Q:if we copy stick the translation text to the beginning of config.json and we start after the executable, it breaks the config -contonbacon
A:This is how you can use a translation and not break existing config.
1.Run monsterhunterworld.exe
2.Run HelloWorld.exe
3.Wait until you hear beep sound
4.Remove all text from config.json
5.Copy the translation text, and paste it in config.json
6.Save config.json

Q: I can't seem to find where to hide the quest timer.
A: Press this keybind to toggle it. https://i.imgur.com/SFxEAcx.png
Or edit it in the config. https://i.imgur.com/Q0J9KWN.png

Q: I'd like for the HP bars to only show for monsters that are near me. Is this possible?
A: yes. set monsterUI.dynamicPositioning.renderDistanceMax to a lower value https://i.imgur.com/4ld67AS.png

Q: How do I prevent the overlay from bleeding into my second monitor?
A:
Spoiler:  
Show


Translation:
Spoiler:  
Show
1.Open config.json (while "helloworld.exe" is running).
2.Find the text you want to change
3.Edit the text
4.Set the encoding as UTF-8
5.Save config.json.


If you want to share the translation with other users, press this keybind


Update log:
Spoiler:  
Show
Update 8.3:
Modified the look of MonsterUI based on aerionop's design.
Shows endemic life crown type.


Update 8.2:


Update 8.1:
Added an option to show endemic life model scale

Update 8.0:
No Windows 7 support from this version onward.
Added EndemicLifeUI
Spoiler:  
Show

Added an option to set transparancy based on distance.
Spoiler:  
Show

Update 7.9:
Mouse over damage graph to see player's DPS at a specific point in time


Update 7.8:
Improved performance when dragging UI
Disable dragUI when mouse isn't visible
Fixed a bug that causes monsterUI to be rendered below monsters sometimes
Compatible with Advanced Training Area



Update 7.7:
Added hotkeys for camera movement


Update 7.6:

Added a color transition effect
Spoiler:  
Show



Update 7.5:
The dps text of any damage source is now always displayed next to the end of its graph
Added a transition effect when a monster becomes highlighted or de-highlighted (dynamicUI only)

Spoiler:  
Show


Update 7.4:
Fixed a compatibility issue with "Monster Hunter Stories" (https://www.nexusmods.com/monsterhunterworld/mods/1533)
https://i.imgur.com/V7pBSKA.jpg

Update 7.3:
Added a config entry to set monsterUI height based on distance to player.
https://i.imgur.com/isyR89m.png

Update 7.2:
Added monster behavior to monsterUI. (Set monsterUI.bRenderAction to false to disable it)
Added a config entry to format the F5 message. https://i.imgur.com/vtIBG96.png
@Name = player name
@Damage = player damage dealt
@DamagePercent = player damage dealt / team damage dealt * 100%
@SteamID = player steam ID
@Rank = player rank

Update 7.1:
1.Added Ancient Leshen
2.Fixed a performance issue with DamageGraphUI's rendering.
DamageGraphUI now tracks DPS over 100sec by default. (damageGraphUI.dpsMeasurement.recordLength = 100)
*If you want to increase recordLength, you need to set damageGraphUI.rendering.vertexSkip to a higher value also.
3.Added animation to TeamUI and DamageGraphUI
4.Added Keybinds:sexChange,setAppearance
How to use sexChange:
1.Open MonsterHunterWorld.exe
2.Open HelloWorld.exe
3.Load a character.
4.Press [space,cap,1], you will hear a beep sound.
5.Go to a different map to see the effect.
How to use setAppearance:
1.Open MonsterHunterWorld.exe
2.Open HelloWorld.exe
3.Load a character.
4.Open config.json
5.Press ctrl+f, search for "apperence:"
Spoiler:  
Show

6.Edit apperence.gender and apperence.layeredArmor (gender 0 is male, gender 1 is female. For layered armor indexes read the Armor Spreadsheet from MHW Transmog's description page)
7.Press [space,cap,2], you will hear a beep sound.
8.Go to a different map to see the effect.
How to view your current apperence values:
1.Open MonsterHunterWorld.exe
2.Open HelloWorld.exe
3.Press rsfhit+ralt+q to open the debugUI.
Spoiler:  
Show



Update 7.0:
Added player rank to teamUI
Added monster: Leshen
Added buff: Assassin's hood
Added an option to set hue_range of color randomizer (You can make color randomizer generate identical colors by assigning a same value to hue.min and hue.max )

Update 6.9:
Highlights the monster you are looking at.
*Set monsterUI.highlight.precedenceLevels.lookAt to -1 to disable it.

Update 6.8:
Added monster: Rusty Gajalaka.
Optimized pattern scanning.
Fixed a issue that causes camera focused monster to not register as a highlighted monster in certain conditions.

Update 6.7:
Fixed a issue that causes the timer displayed on timeUI to move faster than cpu time on some systems.
Fixed a issue related to config parsing.
Added a shortcut to export translation file [lctrl+rctrl+lshift+rshift]

Update 6.6:
Added monster status: stamina fatigue rage elder_seal
Added map time UI
Fixed some fade in/out animation issue

For more information on monster stamina, read this.
https://www.nexusmods.com/monsterhunterworld/mods/142/?tab=forum&topic_id=7244236

Update 6.5:
Added monster: Gold Gajalaka
Added monster trap statuses: Shock, Pitfall, Vine
Added a hotkey to randomize colors. keybinds.randomizeColors = [cap,space,back_tick] (back_tick is the button next to ESC)
Default UI scales are scaled to first monitor height.

Update 6.4:
Named Zorah Magdaros's body parts.
Forces highlight monster's UI-y-coordinate to be always greater than 0. https://i.imgur.com/soyAox2.jpg
Added a hotkey to toggle monsterUI.bDynamicPositioning [lctrl,space,capslock]

Update 6.3:
Fixed team damage not showing in certain conditions.
monsterUI can be rendered on monsters.

Update 6.2:
1. Applies dilation correction on the following buff timers: [IG]Atk,[IG]Speed,[IG]Def,[CB]ShieldCharge,[CB]BladeCharge,[CB]AmpedState
(Dilation factor of the above buff timers is greater than 1.0 if player have more than 0 level of Skill: Power Pro-longer)
2. Added fade in/out animation on monsterUI.
3. Fixed a bug that when keybinds.enable is set to false, dragUI, mouseOverScaleUpUI, mouseOverScaleDownUI is still enabled.
4. Shows what hotkeys are currently being pressed at debugUI.

* For more details on buff time dilation read the update log of version 6.1

Update 6.1:
If you have used previous versions of the mod, make sure you reset the config (by deleting the old config.json file).
Or, at least reset the buffUI and damageGraphUI section.
This is how you can reset the buffUI and damageGraphUI section of the config and not affect the rest of the config:
"buffUI": {}, "damageGraphUI":{}

Functional:
1. Measures buff time dilation of all timers. (set buffUI.bRenderTimeDilation to true to enable it, default value is false)
Buff time dilation is mainly caused by Skill:Power Pro-longer and Skill:Item Pro-longer

UI:
1. DamageGraph is now always scaled to the same width and height. (damageGraphUI.width, damageGraphUI.height)
2. Added buffUI fade in/out animation with text Morphing

Misc:
1. Measure and shows map time dilation of map time in debugUI (map time dilation is mainly caused by cheat engine speed hack)

Notes:
1. Buff time dilation doesn't work on certain buffs like Bleeding and Mantles, which is why I am not adjusting buff time by its current dilation. I need to figure out what buffs are affected by dilation caused by Skill:Power Pro-longer and Skill:Item Pro-longer before hard coding it into the mod.
2. Text morphing isn't perfect. If you are using any of the translation files you will notice the transition text only include english letters, numbers, katakanas.
If you link me to a wiki page of the unicode block you are interested in, I will add it in the next version. 
e.g. https://en.wikipedia.org/wiki/Hiragana_(Unicode_block)
Alternatively you can help me improve this piece of sudo-code:
Spoiler:  
Show

wchar_t morph(wchar_t c)
{
if (c >= '0' && c <= '9')
return randChar<char, '0', '9'>;
else if (c >= 'a' && c <= 'z')
return randChar<char, 'a', 'z'>;
else if (c >= 'A' && c <= 'Z')
return randChar<char, 'A', 'Z'>;
else if (c == ' ' || c == '\n' || c == '\t' || c == ',' || c == '|' || c == '.')
return c;
else
{
constexpr wchar_t KatakanaStart{L'ァ'};
constexpr wchar_t KatakanaEnd{L'ヿ'};
return randChar<wchar_t, KatakanaStart, KatakanaEnd>;
}
}

Update 6.0:
Added fade animation to damage graph (damageGraphUI.fadeDuration)
Added config entries to set how long monster status stays after it's changed (monsterUI.statusVisibleDuration)
Added sliding effect to monster parts fade animation and monster status fade animation
Fixed a issue that when the player name width is larger than teamUI.nameSpacing, player name and player dps will overlap. (teamUI.spacingNameDynamic)
The scaling of damageGraphUI is now oriented around the left side of the graph (in previous versions it was in certain condition oriented around the right side)
Added a keybind to toggle damage graph.
keyBinds.damageGraphUIToggle = ["lshift","`","q"]
Added keybinds to scale up/down damage graph in both directions
keyBinds.damageGraphUIScaleUpX = ["lctrl","cap","a"]
keyBinds.damageGraphUIScaleDownX = ["lctrl","cap","d"]
keyBinds.damageGraphUIScaleUpY = ["lctrl","cap","s"]
keyBinds.damageGraphUIScaleDownY = ["lctrl","cap","w"]
Removed many keyBinds

Update 5.9:
Added damage graph
Added border for UI elements (uiBackGround.border = [10,10])
Fixed some typos in the config file
Fixed a calculation error on checking if mouse is over UI.
Default value of overlayWindow.delayBetweenFrame is now set to 0.0333333 (was 0.0166666 in previous versions). 

New entries added in config.json

"damageGraphUI": 
{
    "yPixelsPerDamage": -1, //vertical scale
    "xPixelsPerSecond": -23.33, //horizontal scale
    "algorithm": 
    {
        "intervalBetweenAdjacentDataPoints": 0.016, //don't touch this entry
        "windowDuration": 5, // determines how responsive to damages the meter is, recommended value range [1,5], if you are testing weapon moves on training dummy, set its value to 1
        "recordDuration": 30, // determines how far back the graph tracks damage
        "smoothCoefficient": 0.85 // valid value range [0,1], recommend 0
    }
}

*The following condition has to evaluate to true, otherwise the config won't save
0.007 < intervalBetweenAdjacentDataPoints&& windowDuration * 2 < windowDuration && windowDuration * 2 < recordDuration

Update 5.8:
Fixed a weapon buff related issue.
Fixed this: https://www.nexusmods.com/monsterhunterworld/mods/142/?tab=forum&topic_id=7404571

Update 5.7:
Added text shadow. set textFormat.shadow.enable to false to disable it
Added options to choose what information to send when pressing "F6"
"message": 
{
    "bSendsMonsterHp": true,
    "bSendsMonsterSize": true,
    "bSendsMonsterCrownType": true,
    "bSendsMonsterPartHp": false,
    "bSendsMonsterAbnormalStatus": false
},

Added wheel_down and wheel_up as a possible option for keybind buttons. unlike other buttons, wheel_up and wheel_down can't be held down, do not assign these 2 buttons to keybinds that need to be held down to activate.
Fixed some text alignment issues. When 2 pieces of text of different height are rendered side by side, they are aligned to bottom (previously they were aligned to top)
Fixed some weapon buff issues

Update 5.6:
Updated sig scan pattern.

Update 5.5:

Shows crown type.
Added another way to highlight a monster: By selecting focus target
Added a config entry to enable/disable each keybind
Added a config entry: monsterUI.bRenderNoneHighlightedMonsters
Removed a config entry: monsterUI.bRenderOnlyHighLightMonsterIfExist
Fixed teostra's size multiplier

Update 5.4:
Shows in-game monster size. (The same number shown on the Ecological Research menu)
Added an option to show true monster size. (set monsterUI.bRenderTrueSize to true to enable it)

*In version 5.3, the number next to the monster name is model scale
*True size is the size value the game uses to calculate crown type. According to Material1, you can obtain gold crown when true size = 123
*You can read more about it here. https://www.nexusmods.com/monsterhunterworld/mods/142/?tab=forum&topic_id=7233271

"Pukei-Pukei, Tobi-Kadachi, Anjanath, Radobaan, Deviljho, and Uragaan get a large crown starting at 120 but all other monsters get it at 123 instead." 
-Material1

Update 5.3:
Shows monster size
Shows both buildup and duration for the following abnormal status: posion/paralysis/sleep/stun. (Before version 5.2 only buildup is shown)
Added Behemoth

Update 5.2:
Added team damage bar, team dps bar.
Players are sorted by damage dealt.
Bars are rendered below text.

Update 5.1:
Added training dummy DPS bar.
Changed the default font to "Consolas"
Increased the default spacing between most UI elements.
Fixed a bug that causes status color to fail to update from config file.

Added config entry buffUI.offsetTimer (before version 5.0 it was named as "offset1")
to enable this entry, set buffUI.bAttachTimerToBuffName to false.

Added config entry buffUI.identicalTimerColor (before version 5.0 it was named as "buffTimerColor")
to enable this entry, set buffUI.bUseIdenticalTimerColor to true.

Update 5.0:
Added buff timer bars.
Changed how spacing works for bars.
Added options to sort buff in different orders.
Fixed a bug that causes monsterUI to render when there are no monsters on the map when "bRenderOnlyHighLightMonsterIfExist" is set to true.
Removed some hotkeys.
Removed global setting for bars.
Added bar setting for hpBar,partHpBar,statusBar,buffTimerBar.
The shape of these 4 type of bars can be edited individually.

*If text is overlaping with bars, set monsterUI.spacingTextEntries to a higher value.


Update 4.9:
Added bars: Monster HP bar, Monster Part HP bar, Monster Status bar.
If you have used previous versions, please remove the previous config file. 

*If text is overlapping with bars, edit these 2 entries: monsterUI.offsetBar, monsterUI.offset1
*If you want to keep the previous config, open "config.json", remove the entry "monsterUI", save config.json, then open helloworld.exe ver4.9.

Update 4.8:
Added Lunastra.
Added buff timer temporal mantle.
Updated pointer chain for weapon buffs, training dummy damage.
Fixed certain VaalHazak's body part name

Update 4.7:
Optimized pattern scanning, it is now 10 times faster.
Added xeno'jiiva's severable part.
After you disable a body part/ abnormal status, when you press F6, that body part/ abnormal status will not be sent to chat.

Named all body parts except for zorahMagdaros'(Thanks to amatess2002,regretofabreath,hawk333)

Update 4.6:
Shows severable parts' hp.
Press F6 to send highlighted monster's information to chat.

Update 4.5:
Added abnormal status: Tranq,Flash,Dung
Named 80% of all the body parts. (Thanks to amatess2002 and regretofabreath)

Unlike other abnormal statuses, the value displayed for flash and dung is the timer for the debuff, not the build-up value.

*Some of the body parts are not named yet. Help me name them. 
Spoiler:  
Show

*Also, feel free to correct/rename the body parts of which you believe the wording is not perfect.

Update 4.4:
Shows body parts damage when you are the host.
Added a option to disable all keybinds.
Randomize colors every time you reset config.

By default the part damage will disappear if it has not received damage for 5 seconds.
This is how you can make part damage always show.
"monsterUI": 
{
    "bRenderParts": true,
    "bRenderUndamagedParts": true,
    "partVisibleDuration": 999999
}

Update 4.3:
Shows monsters abnormal status when you are the host.
[poison,paralysis,sleep,blast,mount,exhaust,stun]

Update 4.2:
Updated buff pointer chain
Added buff timer: evasion mantle attack boost
Fixed a bug that causes invisible UI element to sometimes trigger "onDrag"

Update 4.1:
Place mouse cursor on top of the UI element to target it.
Hold "mouse_left" to drag the target UI element, hold "cap" to scale up, hold "lctrl" to scale down.
Updated pointer chain for weapon buffs.

Update 4.0:
Updated pointer chain for weapon buffs.
Added more font options (see Font for more details).
Added a debug window (disabled by default)

Update 3.9:
Added buff timers: [SwitchAxe]AmpedState,AffinitySliding,FireBlight,ThunderBlight,WaterBlight,IceBlight,DragonBlight,BlastBlight,Poisoned,Bleeding,BleedingRecovery,Effluvia,DefenseDown,ElementalResDown,CantUseItems,WigglyLitchi.
Added buff(no timer):[Hammer]PowerCharge

Config changes:
Keybind buttons can be represented as text or key code. For the full list of available keybind text, see Keybind Config.
Arrays no longer have new line symbol in between items.
Added bound checking for certain attributes.
Added options to set decimal places for each number individually.

Update 3.8:
Buffs are sorted by the timepoint at which you obtain them
Grouped config attributes to increase readability
Fixed a bug that causes UI elements to not render properly when it's being moved with hotkeys
Optimized file write operation
Added a longsword buff timer (after spirit_round_slash, spirit level does not drop for 10 seconds)
Changed config file name to "config.json". Because certain text editer (notepad++) only enable syntax highlighting for json text when the file name extension is ".json"
Updated pattern scan signatures

Update 3.7:
Shows monster names.

Update 3.6:
Added all mantle timers (except temporal mantle, I don't know how to obtain temporal mantle)
Updated pointer chains.
The previous Monster-HP-pointer-chain doesn't always point to the correct address. That's why you some times can't see certain monster's HP, or see incorrect value of monster HP (-inf).

Update 3.5:
Shows training dummy damage.
Changed the wording of certain config attributes.
Fixed a spelling error.
Does not save config to disk when window size is adjusted automatically anymore.

Training dummy damage:

By default HelloWorld.exe only shows "Training dummy damage" when you are in the training area.
If you want "Training dummy damage" to be rendered when you are in areas other than the training area, set "bRenderDmgOnlyAtTrainingArea" to false.

"Training dummy damage" will reset when you stop dealing damage for "dpsResetTime" seconds (default: 20)
"Training dummy damage" will reset when you press hotkey "keyBindResetDmg" (default:lshift+cap+space)

Training dummy damage and Team Damage are rendered in 2 different UI elements. 
The attributes that controls the Team Damage UI are:"playersPos","playerOffset0","playerOffset1","playersScale": 1
The attributes that controls the Training dummy UI are:"dmgPos","dmgOffset","dmgScale"

Difference between "Training dummy damage" and "Team Damage":
"Training dummy damage" is obtained by reading the floating damage numbers.
"Team damage" is obtained by reading the "COOP highest damage dealt"

Update 3.4:
Added weapon buff timers:
[Long Sword]Spirit gauge regen,
[Insect Glaive]Atk,
[Insect Glaive]Speed,
[Insect Glaive]Def,
[Charge Blade]Shield Charge,
[Charge Blade]Blade Charge

Update 3.3:
Added "suffixExtendedBuff" to append suffix to extended hunting horn buffs.
Changed the default setting of Team UI positioning. (If you want Team UI to be vertical, read FAQ)
Added attributes: "bRenderDmgPercent","bAttachDmgPercentNextToDmg","hueRotationSpeed","buffOffset0","buffOffset1"

Update 3.21:
Added options to disable specific buff timers.
Added secondary offset for player UI. (Player Name, dmg, dps can now be placed horizontally)
Fixed "buffOffset"
Fixed a window size calculation error.
When fail to read certain stuff, proceed like nothing happens.

Update 3.1:
Added buff timers for: Palico Orchestra, Hunting Horn, Hardshell Powder, Immunizer, Adamant Pill, Adamant Seed, Affinity booster.

Update 3.0:
Changed mod title from "Show Monster Hp and Team Damage" to "Overlay"
Added buff overlay, and related hotkeys and config attributes.
"config.json" now supports utf8 and utf8_bom encoding.
Add "bExitOnGameExit" attribute.
No longer requires Admin privilege.

Update 2.7:
At every frame, the overlay window is resized to the minimum size required to render all the UI elements.
*If version 2.6 does not give you fps drop, no need to use this version.
*If version 2.6 does give you fps drop, let me know if this version fixed the issue.

Update 2.6:
Fixed a bug that cause "windowSize" from "config.json" to not work properly
You can see monster hp in steam offline mode.
Added a hotkey to reset "config.json" (hotkey = [r,b,q]).
*If you are experiencing fps drop, reduce "windowSize",let me know if it works

Update 2.5:
Shows visual feedback when you move UI elements even when they are not rendered.
Multi-monitor support. (Hotkey for moving the window:[cap+space+up],[cap+space+down],[cap+space+left],[cap+space+right])
Number precision now editable.("precision": 1 //renders 1 digit after the decimal point)
Does not render ErrorID anymore.

Update 2.42:
Pointer chain update.
https://steamcommunity.com/games/582010/announcements/detail/1689303628533106323

Update 2.4:
Most keybinds are configurable now.
Removed the new lines when generating json arrays in "config.json".
Removed the hotkey for sending both team damage and monsters hp to chat.
Added a hotkey for sending team damage to chat.
Added a hotkey for sending monsters hp to chat.

Update 2.3:
Hotkey for sending team damage to chat is now configurable.
Added delay when sending team damage to chat, to make it send text more consistently.

Update 2.2:
Fixed a bug that causes hotkeys to be triggered when keys are not pressed.
Added keybinds to move the window itself, might allow users to move stuff to different monitors (space + cap + arrow, let me know if it works).
(Only use this if you have multiple monitors, the window position is currently not saved in to "config.json". If it's confirmed to work for all users with multiple monitors, I will save the window position into "config.json" in future version).

Update 2.1:
Changed the way in which highlighted monster is determined, and added options for it in "config.json".
Fixed a bug that causes pattern scan to skip some potential results between every 2 adjacent regions of memory.

Update 2.02-2.04b:
Fixed some bugs during pattern scanning and game process loading.

Update 2.01:
Fixed a crash that might occur during pattern scanning.
Prints a more detailed explanation of why it fails to load the game process.

Update 2.0:
Team damage window UI, and monsters hp UI, now behaves like 2 separate windows. You can change their zoom/ position separately.
Hotkey updates.
Added an option to use static colors.
Reduced the cmd window size to 1/4 of the screen size.

Update 1.51:
Finds monsters' hp more consistently (pointer chains update)
You can change the UI distance between monster's hp by editing "config.json" (You can make it horrizontal or vertical or both)

Update 1.5:
Shows all 3 monsters' HP.
You can change most of the UI colors by editing "config.json".
Asks for administrator privilege before program starts.
Hot key changes, no longer requires numpad.

Update 1.0:
When the tool runs, it generates a "config.json" file under the same folder where the exe file is.
You can edit the config file with notepad while the game is running. The format is JSON.


Features:
Spoiler:  
Show

Config File:
Spoiler:  
Show

When helloworld.exe is launched, a config file will be generated at its current directory.
The config file determines the behavior of helloworld.exe.

Every 0.3 second, helloworld.exe reads the last modify time of config.json. If its last modify time is different than its previous last modify time, it read and parse and load the config.
The format of the config is not actually JSON, it's a super set of JSON, I named it config.json, so certain text editor can perform syntax highlighting on the config file.

If you want to process the config file programmatically with a json library, then set bJson to true. config.json will use the proper json syntax with the exception of usage of Infinity value.

UI:
Spoiler:  
Show

Overlay:
Spoiler:  
Show

The overlay is a window spawned by helloworld.exe process. It uses topmost flag, which is flagged by most anticheat program, so do not run helloworld.exe when you are playing other games.

You don't need to modify overlay.pos or overlay.size, they are managed by the auto shrink feature automatically.
By default the overlay runs at 60 fps. If you want the overlay to render faster or slower, then edit the value of overlay.delayBetweenFrames.
You can see the current fps of the overlay by enabling the debugUI.

TextFormat:
Spoiler:  
Show

Currently there is only 1 textformat, it is used by all the text rendered on the overlay.

The possible values of weight are "bold","thin","extra light","light","semi light","normal","medium","semi bold","bold","extra bold","black","extra black".
The possible values of style are "normal","oblique","italic"
If you are going to modify the font size, you will also need to modify the spacing value in all the UI, because the spacing of most UI doesn't change with font size.
* Since version 8.5, you can add unlimited amount of text formats into the textFormatDefinition entry, and reference them in other part of the config


MonsterUI:
Spoiler:  
Show


aerionop's guide of MonsterUI config
Spoiler:  
Show
textFormats:
Sets the text font/size to what is defined in btextFormatDefinitions. Since there's no limit on definitions, you can make new ones for whatever you want.


colors:
Sets the color for the top part of the UI, leaving the parts and status effects for another section.


staticPositioning:
If you set DynamicPositioning to false, these settings will determine the spacing/height/scaling of the main monsters as they appear on screen. changerate: is the animation speed for everything
spacingPolynomials - nonHighlight: first number = distance to the left and right of not-focused monsters; highlight: same but for the highlighted one
heightPolynomials - same as above, but with vertical distance; negative number moves them up and positive numbers moves them down
scalingPolynomials - same as above, but with the size of the frames; as with all other such instances, [1] is 100% while [0] is 0%


spacing:
Everything up to layoutHp: controls the various elements distance relative to the next, with the status section
appearing after the last visible part (so positioning it is a bit
harder), all numbers are [HORIZONTAL,VERTICAL]. For example name:[]
determines the distance of action from the monster name; action:
determines the distance of the HP bar (and it's texts) to the action,
etc.
Of note is that part:[x,y] and status:[x,y] determine the positioning of their own bars relative to each other,
with the x making each bar appear at that distance from the next,
causing them to appear diagonally.
Each layoutXYZ: determines the position of it's name, value, and bar within it's own container. Alignment Text/Value simply
says from which direction the name of the bar or it's value grows.

*Note that this layout is currently unstable because the position of status component is relative to the position of parts component, and the number of parts varies from monster to monster.

animation:
fadeDuration: determines the speed of the "fade-in" when switching between monsters.

precision/bRender/Visibility:
precisionXYZ:    -- simply determines if decimals are shown for the values/%
bRenderAction:true    -- toggles the Action (what the monster's doing, it's current animation/attack)
bRenderSize:false    -- toggles the size (in #) of the current monster
bRenderCrown:true    -- toggles the crown of the current monster, if it's size is under/over a certain threshold
bRenderHp / Percent / Bar:true    -- toggles the HP #, %, or bar
bRenderRage / Percent / Bar:true    -- toggles the Rage #, %, or bar
bRenderStamina / Percent / Bar:true    -- toggles the Stamina #, %, or bar
bRenderNonHighlightedMonstersWhenHighlightedMonsterExists:false    -- toggles whether all monsters are shown (faded out) only when a monster is focused
bRenderNonHighlightedMonstersWhenHighlightedMonsterNotExists:false    -- toggles whether all monsters are shown (faded out) only when nothing is focused
bRenderDeadMonsters:false    -- self-explanatory
bRenderInactiveMonsters:false    -- no idea
bRenderAbnormalStatuses:true    -- toggles whether abnormal statuses are shown for monsters
bRenderAbnormalStatusesValue / Percent:true    -- toggles whether the # value / % value is shown (status disappears when none are active)
bRenderAbnormalStatusesLevel:true    -- toggles whether the number of times that status was activated is shown (like, yo put it to sleep 3x)
bRenderAbnormalStatusesBar:true    -- toggles whether the abnormal status bar is shown
bRenderInactiveAbnormalStatuses:true    -- self-explanatory, mostly useful for positioning
bRenderStatusesIfMonsterIsNotHighlighted:false    -- shows abnormal statuses on non-highlighted monsters
bRenderParts:true    -- toggles if parts are shown
bRenderPartsHp / Percent:false    -- toggles if the # or % of part hp is shown
bRenderPartsBreakLevel:true    -- toggles whether the number of times that part was broken is shown
bRenderPartsHpBar:true    -- toggles whether the part bars are shown
bRenderUndamagedParts:true    -- toggles weather parts at 100% are shown (good for positioning or just knowing what parts the monster has)
bRenderPartsIfMonsterIsNotHighlighted:false    -- shows parts on non-focused monsters
bRenderBothBuildupAndDurationOnEveryEntry:false    -- no idea
rageVisibleDuration: / staminaVisibleDuration: / partVisibleDuration: / statusVisibleDuration:Infinity-- determines how long (in seconds) that thing is visible since the last time it changed; Infinity to show forever

barsXYZ:
length:300 -- determines how long (in pixels) the bar is; this corresponds to the first number in [] of the shape, where 1 is
100%=300px, and 0.1 is 10%=30px this only applies to horizontal
position, not vertical.
shape:[[x,y],...] -- (see image) every [x,y] is a point of a polygon, with the x being the absolute horizontal (0.0-1.0 of the
above length) and y being the absolute vertical position (in px). So 0,0
is top left, while 0,10 is left and 10px down.
offsetBackground: -- distance of the background relative to the filled bar. [0,0] to overlap.
backgroundLightnessMultiplier: -- how bright the background is (0.0 black - 1.0 full bright)
backgroundSaturationMultiplier: -- amount of color of the background (0.0 full color - 1.0 grey-scale)
backgroundAlphaMultiplier: -- transparency of the background (0.0 invisible - 1.0 fully opaque)
direction: -- from what direction the bar decreases as hp drops


flashEffectXYZ:
when the monster is raging, fatigued, or a status triggers, that bar starts flashing white
amplitude:0.08 -- determines brightness of the flash
frequency:2 -- determines how fast it flashes (higher number = more flashes per second)
offset:1 -- no idea

textXYZ:
Determines what is written for those specific things; so
textHp:"HealthPoints" would make the text for the HP bar read
"HealthPoints" instead of HP.


MonsterUI has 2 modes, dynamic mode and static mode. You can toggle them with hotkey or by editing monsterUI.bDynamicPositioning.
When the monsterUI is in dynamic mode, the only 2 ways to modify its scale is by editing monsterUI.scale and monsterUI.dynamicPositioning.scalingPolynomials.
The distance between the player and the monster changes how the monster's information is rendered.

The further the monster is away from the player, the more transparent it is.
The further the monster is away from the player, the larger hue shift its color has.
The further the monster is away from the player, the smaller its UI is rendered.
The further the monster is away from the player, the higher the UI is above the monster.

When a monster is highlighted, its information is rendered differently than the non-highlighted ones.
You can edit this 2 entries to make helloworld.exe not render non-highlighted monsters.

These are the factors that determine which monster gets highlighted.

Helloworld.exe assign a highlight level to each monster based on these conditions. If there is only 1 monster with the highest highlight level, then it is highlighted.
When a monster is focused (default ingame keybind is q), its highlight level is set to highlight.focus.precedence.
When a monster is being pointed at by the camera, its highlight level is set to highlight.lookAt.precedence.
When a monster is being set to scoutfly target, its highlight level is set to highlight.target.precedence.
When a monster is the monster that recieved damage most recently, its highlight level is set to highlight.lastDamaged.precedence.
When a monster is the only monster on the map, its highlight level is set to highlight.onlyMonster.precedence.


EndemicLifeUI:
Spoiler:  
Show
This UI displays endemic life.

If you don't want to see endemic life that are not crown or great or rare, then set this entry to false.

Whether a endemic life is considered rare or not is defined here. By default, none of the endemic life is considered rare.

TrainingDummyUI:
Spoiler:  
Show
This UI displays the damage dealt in training area.
By default, the damage resets if no damage is dealt for 10 seconds.

You can also press this keybind to reset total damage.


DamageGraphUI:
Spoiler:  
Show

TimeUI:
Spoiler:  
Show

BuffUI:
Spoiler:  
Show

DebugUI:
Spoiler:  
Show


Cheats:
Spoiler:  
Show



Shortcuts:
Spoiler:  
Show

lalt+lshift+q Monster UI toggle
lalt+`+q EndemicLifeUI toggle
lalt+cap+q Team UI toggle
lshift+cap+q Buff UI toggle
space+`+q Training dummy damage UI toggle
lshift+`+q Damage Graph UI toggle
ralt+rshift+q Debug UI toggle

lctrl+cap+a scale up damage graph UI horizontally
lctrl+cap+d scale down damage graph UI horizontally
lctrl+cap+s scale up damage graph UI vertically
lctrl+cap+w scale down damage graph UI vertically

space+cap+[r/f] all UI Scale [up/down]
space+cap+q All UI toggle

lshift+cap+space Reset training dummy damage

capslock+space+back_tick (back_tick is the button next to ESC) Randomize UI color.

lctrl+space+capslock Switch between monsterUI static view and dynamic view.

cap+"Numpad+" cameraMoveBackward
cap+"Numpad-" cameraMoveForward
cap+Numpad8 cameraMoveUp
cap+Numpad5 cameraMoveDown
cap+Numpad4 cameraMoveLeft
cap+Numpad6 cameraMoveRight

R+B+Q Reset config


Config.json:
Spoiler:  
Show
When you run "helloworld.exe", a config file "config.json" will be generated at the same folder where "helloworld.exe" is.
You can edit the config file while the program is running, and see the changes right away.
If you messed up the config file (possible symptoms: can't find UI elements, characters upside down), you can reset the config by deleting "config.json" while "helloworld.exe" is not running.

2/26/2019
{
    "bBeep": true,//makes beep noise
    "bExitOnGameExit": false,//if MHW.exe was running on last frame and not running on this frame, exit
    "textFormat": 
    {
        "font": "Consolas",//make sure you have the font installed, if not, it will use default font
        "size": 20,
        "weight": "bold","bold",//"thin"/"extra light"/"light"/"semi light"/"normal"/"medium"/"semi bold"/"bold"/"extra bold"/"black"/"extra black"
        "style": "normal",//"normal"/"oblique"/"italic"
        "shadow": //draw text twice, with a position offset, and a different color
        {
            "enable": true,
            "offset": [3,3],
            "lightnessMultiplier": 0.5,
            "saturationMultiplier": 1,
            "alphaMultiplier": 1
        }
    },
    "rainbow": 
    {
        "enable": true,
        "hueRotationSpeed": 0.2//rainbow color rotation speed
    },
    "overlayWindow": 
    {
        "pos": [0,0],
        "size": [3840,2160],
        "bAutoShrink": true,//don't touch this entry
        "bRendersWhenGameIsInBackground": true,//when foreground window is not game window, overlay still renders
        "delayBetweenFrame": 0.0333333//each frame lasts at least 0.033 seconds
    },
    "uiBackGround": 
    {
        "enable": true,
        "color": [0,0,0,0],//ui background color when it is not being mouseovered
        "colorOnMouseOver": [0,0,0,0.2],//ui background color when it is being mouseovered
        "colorOnDrag": [0,0,0,0.4],//ui background color when it is being dragged
        "border": [10,10]
    },
    "monsterUI": 
    {
        "enable": true,
        "pos": [0,0],
        "spacingMonsters": [400,0],//distance between monsters
        "spacingName": [0,40],//distance between monster name and the next text/bar UI
        "spacingTextEntries": [0,26],//distance between any text entry and the next text/bar UI
        "spacingHp": [0,0],
        "spacingParts": [0,0],
        "scale": 1,
        "precisionTrueSize": 0,
        "precisionFakeSize": 2,
        "precisionHp": 0,
        "precisionHpPercent": 0,
        "precisionAbnormalStatuses": 0,
        "precisionAbnormalStatusesPercent": 0,
        "bRenderHpBar": true,//Shows hp bar
        "bRenderTrueSize": false,//Shows true monster size
        "bRenderFakeSize": true,//Shows in-game monster size
        "bRenderCrown": true,//Shows crown type
        "bRenderHp": true,//Shows HP
        "bRenderHpPercent": true,//Shows HP%
        "bRenderNonHighlightedMonsters": true,//Only shows the highlighted monster
        "bRenderAbnormalStatuses": true,//Shows monsters' abnormal statuses
        "bRenderAbnormalStatusesValue": true,
        "bRenderAbnormalStatusesPercent": false,
        "bRenderAbnormalStatusesLevel": true,
        "bRenderAbnormalStatusesBar": true,
        "bRenderInactiveAbnormalStatuses": false,//Shows statue even when its duration and buildup are both 0
        "bRenderParts": true,//Shows parts
        "bRenderUndamagedParts": true,
        "bRenderPartsName": true,
        "bRenderPartsHp": true,
        "bRenderPartsHpPercent": false,
        "bRenderPartsBreakLevel": true,
        "bRenderPartsHpBar": true,
        "bRenderPartsIfMonsterIsNotHighlighted": true,
        "highLightLevelFocus": 3,
        "highLightLevelTarget": 2,
        "highLightLevelLastDamage": 1,
        "hueShiftPart": 0.05,//hue increament between partName->partHp->partHpPercent->partBar
        "hueShiftAbnormalStatus": 0.05,//hue increament between statusName->statusHp->statusHpPercent->statusBar
        "partVisibleDuration": 5,//After a part takes damage, it will be visible for the next 5 seconds
        "partFadeDuration": 2,//It takes 2 seconds for body part to fade
        "statusVisibleDuration": Infinity,//After a status changes, it will be visible for the next Infinity seconds
        "statusFadeDuration": 2,//It takes 2 seconds for status to fade
        "colorName": [0.8,0.2,0.695239,1],
        "colorSize": [0.8,0.2,0.587239,1],
        "colorHp": [0.8,0.2,0.479239,1],
        "colorHpPercent": [0.8,0.2,0.371239,1],
        "colorHpBar": [0.8,0.2,0.263239,1],
        "colorHighLightName": [0.8,0.424761,0.2,1],
        "colorHighLightSize": [0.8,0.532761,0.2,1],
        "colorHighLightHp": [0.8,0.640761,0.2,1],
        "colorHighLightHpPercent": [0.8,0.748761,0.2,1],
        "colorHighLightHpBar": [0.743239,0.8,0.2,1],
        "barsHp": 
        {
            "spacing": [0,15],//distance between hp bar and the next text/bar UI
            "shape": //The HP bar is NOT an underline, it's a solid polygon, you can change its shape here
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 300,//bar length when monster is at full HP
            "rotation": 0,
            "bRenderBackground": true,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        },
        "barsPartHp": 
        {
            "spacing": [0,15],//distance between part hp bar and the next text/bar UI
            "shape": 
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 300,//bar length when part is at full HP
            "rotation": 0,
            "bRenderBackground": true,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        },
        "barsAbnormalStatus": 
        {
            "spacing": [0,15],//distance between abnormal status bar and the next text/bar UI
            "shape": 
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 300,//bar length when status is at full buildup/duration
            "rotation": 0,
            "bRenderBackground": true,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        }
    },
    "teamUI": 
    {
        "enable": true,
        "pos": [0,500],
        "spacingPlayer": [0,50],//distance between players
        "bUseDynamicNameSpacing": true,//If set to true, distance between team names and team dps equals the ([the_highest_width_of_all_teamates,0]+spacingNameDynamic), otherwise the distance equals spacingNameFixed
        "spacingNameFixed": [150,0],
        "spacingNameDynamic": [20,0],
        "spacingDmg": [0,26],//distance between player damage and the next text/bar UI
        "spacingDps": [0,26],//distance between player dps and the next text/bar UI
        "scale": 1,
        "precisionDmgPercent": 2,
        "precisionDps": 2,
        "bRenderDmg": true,
        "bRenderDmgPercent": true,
        "bRenderDmgPercentBar": true,
        "bRenderDpsBar": true,
        "bRenderDps": true,
        "bRenderTeamWhenTotalDmgIs0": false,//shows teamUI even if no one did damage
        "colorName": [0.526744,0.225,0.775,1],
        "colorDps": [0.625744,0.225,0.775,1],
        "colorDpsBar": [0.724743,0.225,0.775,1],
        "colorDmg": [0.775,0.225,0.726257,1],
        "colorDmgPercent": [0.775,0.225,0.627257,1],
        "colorDmgPercentBar": [0.775,0.225,0.528257,1],
        "colorPlayerName": [0.775,0.225,0.363257,1],
        "colorPlayerDps": [0.775,0.225,0.264257,1],
        "colorPlayerDpsBar": [0.775,0.284743,0.225,1],
        "colorPlayerDmg": [0.775,0.383743,0.225,1],
        "colorPlayerDmgPercent": [0.775,0.482743,0.225,1],
        "colorPlayerDmgPercentBar": [0.775,0.581743,0.225,1],
        "dpsResetTime": 30,//if a player has not been dealing damage for 30 sec, that player's dps resets
        "dpsMinEvalWindow": 5,
        "barsDmgPercent": 
        {
            "spacing": [300,-26],//distance between damage% bar and the next text/bar UI
            "shape": 
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 250,//bar length when the player's damage% is the highest
            "rotation": 0,
            "bRenderBackground": true,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        },
        "barsDps": 
        {
            "spacing": [300,-26],//distance between dps bar and the next text/bar UI
            "shape": 
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 250,//bar length when the player's dps is the highest
            "rotation": 0,
            "bRenderBackground": true,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        }
    },
    "buffUI": 
    {
        "enable": true,
        "pos": [0,700],
        "spacingTextEntries": [0,26],//distance between buff text and the next text/bar UI
        "offsetTimer": [400,0],
        "scale": 1,
        "bRenderBars": true,
        "bRenderBuffsOnLoadingScreen": true,
        "precisionTimer": 1,
        "sortPrecedenceDuration": 1,//when "sortPrecedenceDuration">"sortPrecedenceTimeActivated" buffs are sorted by duration
        "sortPrecedenceTimeActivated": 2,//when "sortPrecedenceDuration"<"sortPrecedenceTimeActivated" buffs are sorted by time activated
        "bSortByDurationAscending": true,
        "bSortByTimeActivatedAscending": true,
        "bAttachTimerToBuffName": true,
        "bUseIdenticalTimerColor": false,//Set this value to true if you want all timer color to be "identicalTimerColor"
        "identicalTimerColor": [1,1,1,1],
        "suffixExtendedBuff": "++",//suffix for hunting horn extended buffs
        "hueShift": 0.05,
        "durationWhenBarAtFullLength": 300,
        "barsTimer": 
        {
            "spacing": [0,15],//distance between timer bar and the next text/bar UI
            "shape": 
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 500,//bar length when the buff duration>="durationWhenBarAtFullLength"
            "rotation": 0,
            "bRenderBackground": false,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        }
    },
    "trainingDummyUI": 
    {
        "enable": true,
        "pos": [0,100],
        "spacingTextEntries": [0,26],
        "scale": 1,
        "precisionDps": 2,
        "bEnableOutsideTrainingArea": false,//Set this value to false if you want to see all the damage (including posion/ enviromental) outside training area
        "resetTime": 10,
        "colorDmg": [0.25,0.75,0.401595,1],
        "colorDps": [0.25,0.75,0.521595,1],
        "colorDpsBar": [0.25,0.75,0.641595,1],
        "dpsWhenBarAtFullLength": 2000,//bar length when the dps>="dpsWhenBarAtFullLength"
        "barsDps": 
        {
            "spacing": [0,15],
            "shape": 
            [
                [0,-1.5],
                [1,-0.5],
                [1,0.5],
                [0,1.5]
            ],
            "length": 4000,
            "rotation": 0,
            "bRenderBackground": false,
            "offsetBackground": [0,4],
            "backgroundLightnessMultiplier": 0.5,
            "backgroundSaturationMultiplier": 1,
            "backgroundAlphaMultiplier": 0.7
        }
    },
    "damageGraphUI": 
    {
        "enable": true,
        "pos": [0,450],
        "scale": 1,
        "yPixelsPerDamage": -1,//vertical scale
        "xPixelsPerSecond": -23.33,//horizontal scale
        "vertexSkip": 1,
        "fadeDuration": 3,
        "textOffset": [0,0],
        "spacingTextEntries": [0,-30],
        "precisionDps": 1,
        "sources": 
        {
            "trainingDummy": 
            {
                "enable": true,
                "text": "",
                "color": [0.75,0.25,0.698874,1],
                "offset": [0,0],
                "bDynamicTextOffset": false,
                "strokeWidth": 2,
                "bRainbow": true,
                "bHideIfInactive": true
            },
            "player": 
            {
                "enable": true,
                "text": "",
                "color": [0.75,0.25,0.398874,1],
                "offset": [0,0],
                "bDynamicTextOffset": true,
                "strokeWidth": 2,
                "bRainbow": false,
                "bHideIfInactive": true
            },
            "teamate0": 
            {
                "enable": true,
                "text": "",
                "color": [0.75,0.401126,0.25,1],
                "offset": [0,0],
                "bDynamicTextOffset": true,
                "strokeWidth": 2,
                "bRainbow": false,
                "bHideIfInactive": true
            },
            "teamate1": 
            {
                "enable": true,
                "text": "",
                "color": [0.75,0.701126,0.25,1],
                "offset": [0,0],
                "bDynamicTextOffset": true,
                "strokeWidth": 2,
                "bRainbow": false,
                "bHideIfInactive": true
            },
            "teamate2": 
            {
                "enable": true,
                "text": "",
                "color": [0.498874,0.75,0.25,1],
                "offset": [0,0],
                "bDynamicTextOffset": true,
                "strokeWidth": 2,
                "bRainbow": false,
                "bHideIfInactive": true
            }
        },
        "bHidesTrainingDummyGraphWhenPlayerDamageIsActive": true,
        "algorithm": 
        {
            "intervalBetweenAdjacentDataPoints": 0.016,//don't touch this entry
            "windowDuration": 3,// determines how responsive to damages the meter is, recommended value range [1,5], if you are testing weapon moves on training damage set its value to 1
            "recordDuration": 30,// determines how far back the graph tracks damage
            "smoothCoefficient": 0.85// valid value range [0,1], recommend 0
        }
    },
    "debugUI": 
    {
        "enable": false,//If you believe the mod is not behaving correctly, set this value to true, especially if you want to take a screenshot for bug report
        "pos": [0,800],
        "spacingTextEntries": [0,26],
        "scale": 1,
        "precisionFps": 2,
        "precisionTime": 2
    },
    "message": //when pressing keyBinds.sendHighlightMonster(F6), the following information are sent to chat.
    {
        "bSendsMonsterHp": true,
        "bSendsMonsterFakeSize": true,
        "bSendsMonsterTrueSize": false,
        "bSendsMonsterCrownType": true,
        "bSendsMonsterPartHp": false,
        "bSendsMonsterAbnormalStatus": false
    },
    "keyBinds": 
    {
        "enable": true,
        "sendDmg": 
        {
            "enable": true,
            "keys": ["f5"]//Open chat window, then press F5 to send team damage to chat
        },
        "sendHighlightMonster": 
        {
            "enable": true,//Open chat window, then press F6 to send highlighted monster to chat
            "keys": ["f6"]
        },
        "monsterUiToggle": 
        {
            "enable": true,
            "keys": ["lalt","lshift","q"]
        },
        "teamUiToggle": 
        {
            "enable": true,
            "keys": ["lalt","cap","q"]
        },
        "buffUiToggle": 
        {
            "enable": true,
            "keys": ["lshift","cap","q"]
        },
        "trainingDummyUiToggle": 
        {
            "enable": true,
            "keys": [" ","`","q"]
        },
        "damageGraphUIToggle": 
        {
            "enable": true,
            "keys": ["lshift","`","q"]
        },
        "debugUiToggle": 
        {
            "enable": true,
            "keys": ["ralt","rshift","q"]
        },
        "damageGraphUIScaleUpX": 
        {
            "enable": true,
            "keys": ["lctrl","cap","a"]
        },
        "damageGraphUIScaleDownX": 
        {
            "enable": true,
            "keys": ["lctrl","cap","d"]
        },
        "damageGraphUIScaleUpY": 
        {
            "enable": true,
            "keys": ["lctrl","cap","s"]
        },
        "damageGraphUIScaleDownY": 
        {
            "enable": true,
            "keys": ["lctrl","cap","w"]
        },
        "allUiPosLeft": 
        {
            "enable": true,
            "keys": [" ","cap","a"]
        },
        "allUiPosRight": 
        {
            "enable": true,
            "keys": [" ","cap","d"]
        },
        "allUiPosUp": 
        {
            "enable": true,
            "keys": [" ","cap","w"]
        },
        "allUiPosDown": 
        {
            "enable": true,
            "keys": [" ","cap","s"]
        },
        "allUiScaleUp": 
        {
            "enable": true,
            "keys": [" ","cap","r"]
        },
        "allUiScaleDown": 
        {
            "enable": true,
            "keys": [" ","cap","f"]
        },
        "allUiToggle": 
        {
            "enable": true,
            "keys": [" ","cap","q"]
        },
        "monsterPartToggle": 
        {
            "enable": true,
            "keys": ["lalt","cap","lctrl"]
        },
        "teamUiDmgToggle": 
        {
            "enable": true,
            "keys": ["lalt","cap","v"]
        },
        "staticColorToggle": 
        {
            "enable": true,
            "keys": [" ","cap","e"]
        },
        "renderTeamWhenTotalDmgIs0toggle": 
        {
            "enable": true,
            "keys": [" ","cap","v"]
        },
        "windowPosLeft": 
        {
            "enable": true,
            "keys": [" ","cap","left"]
        },
        "windowPosRight": 
        {
            "enable": true,
            "keys": [" ","cap","right"]
        },
        "windowPosUp": 
        {
            "enable": true,
            "keys": [" ","cap","up"]
        },
        "windowPosDown": 
        {
            "enable": true,
            "keys": [" ","cap","down"]
        },
        "resetDmg": //In training area, press this hotkey to reset damage.
        {
            "enable": true,
            "keys": ["lshift","cap"," "]
        },
        "dragUI": //When you mouseover a UI element, hold left mouse button to drag the UI.
        {
            "enable": true,
            "keys": ["mouse left"]
        },
        "mouseOverScaleUpUI": //When you mouseover a UI element, press lctrl to scale up the UI.
        {
            "enable": true,
            "keys": ["cap"]
        },
        "mouseOverScaleDownUI": //When you mouseover a UI element, press lctrl to scale down the UI.
        {
            "enable": true,
            "keys": ["lctrl"]
        },
        "resetEveryThing": //Press this hotkey if you want to reset the config
        {
            "enable": true,
            "keys": ["r","b","q"]
        },
        "placeWindowTopMost": //Press this hotkey if the overlay window disappear
        {
            "enable": true,
            "keys": ["esc"]
        }
    },
    "crown": 
    {
        "textMini": "Mini",
        "textSilver": "Silver",
        "textGold": "Gold"
    }
}


KeyBind Config:
Spoiler:  
Show
A keybind is an array of buttons.
A button is represented as either a string or a virtual key code. Most buttons on the keyboard has a string representation.

When all the keys in the array are pressed together, that keybind is considered pressed.

If you want the keybind for sending team damage to be [lshift+lctrl+f5], set the value of keybinds.sendDmg.keys to a array that contains the 3 buttons.
"sendDmg":
{
    "enable": true,
    "keys": ["lshift","lctrl","f5"]
},

Here are the available string representation of buttons. (Do NOT use "shift"/"alt", instead, use "lshift"/"lalt")
"a"
"b"
"c"
"d"
"e"
"f"
"g"
"h"
"i"
"j"
"k"
"l"
"m"
"n"
"o"
"p"
"q"
"r"
"s"
"t"
"u"
"v"
"w"
"x"
"y"
"z"
"0"
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"
"mouse left"
"mouse right"
"mouse middle"
"xButton1"
"xButton2"
"num 0"
"num 1"
"num 2"
"num 3"
"num 4"
"num 5"
"num 6"
"num 7"
"num 8"
"num 9"
"num *"
"num +"
"num -"
"num ."
"num /"
"num enter"
"num ="
"numlock"
"f1"
"f2"
"f3"
"f4"
"f5"
"f6"
"f7"
"f8"
"f9"
"f10"
"f11"
"f12"
"f13"
"f14"
"f15"
"f16"
"f17"
"f18"
"f19"
"f20"
"f21"
"f22"
"f23"
"f24"
"lwin"
"rwin"
"lshift"
"rshift"
"lctrl"
"rctrl"
"lalt"
"ralt"
"esc"
"`"
"tab"
"cap"
"snapshot"
"scroll lock"
"pause"
"insert"
"del"
"home"
"end"
"page up"
"page down"
"left"
"right"
"up"
"down"
"-"
"="
"\\"
"back space"
"["
"]"
"enter"
";"
"'"
","
"."
"/"
"apps"
" "
"sleep"
"select"
"print"
"execute"
"help"
"separator"
"clear"
"wheel_up"
"wheel_down"



Known Issues:
Spoiler:  
Show
1.Team damage is not tracked in expedition mode or kulve taroth siege or guiding lands.
2. 4 byte UTF16 code points do not morph correctly during animation
3. Certain key presses from certain keyboard are not registered by helloworld.exe. According to HoBobobobo, F5 button form logitech g810  is not registered.


Credits:
hqvrrsc4: finding the team damage from the game process.
Squall8 /Berserk Knight: finding the buffs from the game process.
deathcream: finding safi jiiva's energy from the game process.

Translation:
Chinese: IceNightStar,FengYuu,a505667374,coverder,PythoN300,Diangua233,julio131,KuroKawaKK,totogc
Español: LegnaDrago,nemito,hawk333
French: starblunter,contonbacon,Sevih
German:NeocronZS
Japanese: KiriiShigata,yakminepunyo
Korean: difgrt,Diangua233,eyenova
Portuguese: OblancC
Spoiler:  
Show
If you helped me translate things, and your name isn't here, that's probably because I forgot to add your name here.
Let me know if you think your name should be here. I will fix it.


People who helped me name/index the body parts:
amatess2002,regretofabreath,hawk333,KiriiShigata

aerionop designed the looks of monsterUI.