Difference between revisions of "Customizing LW2"

From UFOpaedia
Jump to navigation Jump to search
 
(33 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
== Beginners guide to modding LW2 ini files==
 +
 +
2K, Firaxis, and Pavonis Interactive have made it easy for individual users to tweak parts of the game for their own preference. Many modifiable values are stored in each mod's configiration folder commonly referred to as ini files for their .ini filename extension.
 +
 +
There are three locations for ini files:
 +
 +
This is known as the "xcomgame" configuration folder:
 +
 +
'''<code>\My documents\my games\xcom2\XcomGame\config\</code>'''
 +
 +
This is known as the "default" configuration folder:
 +
 +
'''<code>\Steam\steamapps\common\XCOM 2\XComGame\config\</code>'''
 +
 +
And this is the "Long War 2 Mod" configuration folder:
 +
 +
'''<code>\Steam\SteamApps\workshop\content\268500\844674609\config\</code>'''
 +
 +
It is recommended that you download and use '''Notepad++''' to alter the ini files because it is visually easier to use and numbers the lines (which may be referenced in this page). Another useful tool is the free software '''WinMerge'''. WinMerge allows you to open two text files (like the ini) side by side and compare differences between them. This is useful when Long War is updated. To easily preserve the custom modifications you did on a previous version, open a backup copy of your old ini and the new updated ini. WinMerge will help you quickly identify differences and apply all your previous modifications to the new Long War version.
  
== What other mods are compatible? ==
+
Any changes to the "default" config folder will persist in the game every time that you relaunch the game, unless XCOM2 is updated, or you use Steam to verify the game's cache.  
DeaconIvory made a list of popular mods and how compatible they are with long war. You can find that list [https://drive.google.com/file/d/0B0KYKP0J-c9vcksxLXBTUkFzdE0/view here]
 
  
 +
Any changes to the "xcomegame" config folder will be overwritten if XCOM2 updates, or if you make changes to the "LW2 mod" config, or "default" config folders.
  
== Beginners guide to modding LW2 ini files==
+
Changes to the "LW2 Mod" config folder will persist (and overwrite all other changes) until the mod is updated.
 +
 
 +
A good way to think of it is that the "xcomegame" configuration files receive all updates from either the player's edits, the mod's edits, or the "default" ini edits. So, it looks like this:
 +
 
 +
Mod config > Default config > XcomGame config
 +
 
 +
This is true for EVERY mod, and if you are running other mods with LW2, the "load order" is occasionally important, which means that if you subscribe to a mod and the effects don't show up it means that another mod (in this case probably LW2) has superseded the changes and you'll need to move your new mod to be AFTER LW2 in the load order.
 +
 
 +
Nearly every single text edit that you can make to an ini file can be made in the "default" folder by making sure that the file name begins with "default", or to the "xcomgame" or "LW2 mod" folder by making sure that the file begins with "xcomgame"
 +
 
 +
== Alternative Mod Launcher ==
 +
 
 +
https://www.reddit.com/r/xcom2mods/comments/64mucq/alternative_mod_launcher_now_a_community_project/
 +
 
 +
The Alternative Mod Launcher is a Windows program that allows you to manage, and edit, your XCOM2 mods easily. It is especially helpful for users with large mod lists and is highly recommended. As you use it you may notice that some mods will report conflicts, in many cases they are "false positives" and the mods will work together. Keep an eye out for asterisks  in the "conflicts" tab. that means that the conflict is not one you need to worry about.
  
Long War has made it easy for individual users to tweak parts of the game for their own preference. Many modifiable values are stored in the mods config files commonly referred to as ini files for their .ini filename extension. For a typical Windows user, all LW2 files are contained at the location:
+
You can easily edit your mods' config files directly from within the AML by clicking the files in the "config" tab.
:<code>Program Files (x86)\Steam\SteamApps\workshop\content\268500\844674609\</code>
 
  
It is recommended that you download and use '''Notepad++''' to alter the ini files because it is visually easier to use and numbers the lines (which may be referenced in this page).
+
== Removing Mods ==
  
Another useful tool is the free software '''WinMerge'''. WinMerge allows you to open two text files (like the ini) side by side and compare differences between them. This is useful when Long War is updated. To easily preserve the custom modifications you did on a previous version, open a backup copy of your old ini and the new updated ini. WinMerge will help you quickly identify differences and apply all your previous modifications to the new Long War version.
+
If you unsubscribe to a mod (or mods) you should backup and delete your "xcomgame" config folder, otherwise the game could continue to "see" the removed mod's files.  
  
 +
The "Remove Missing Mods" mod is the one mod that you should run 100% of the time. http://steamcommunity.com/sharedfiles/filedetails/?id=641394554
  
There are several copies of the ini files for XCOM 2. If you make your changes in the \Steam\steamapps\common\XCOM 2\XComGame\Config folder, then when you rebuild the \my documents\xcom2\xcomgame\config folder (after mod updates, troubleshooting, etc) You don't have to redo the changes each time. However if you verify your local files it will often overwrite the changes in all folders.  
+
It allows you to load a save that would include a now unsubscribed mod, click the "Unbind Missing Mods" button in the Avenger, save, exit to the desktop, and reload the game to a clean game with only your current mod's data included.
  
You are free to make the changes in the \my documents\xcom2\xcomgame\config folder for the same effect, the file names just replace the word "Default" with "XcomGame"
+
== Making Changes to Specific Difficulties ==
  
Many changes can be difficulty specific.  If there are four with a number at the end of them as follows, it is for the different difficulties.   
+
If there are four options each with a number at the end of them as follows, it is for each different difficulties.   
  
 
<pre style="overflow:auto; width:auto;">
 
<pre style="overflow:auto; width:auto;">
Line 27: Line 60:
 
</pre>
 
</pre>
  
== Some QOL ini edits ==
+
== Some ini edit examples==
 +
 
 +
If the edit is listed in LW Config Files, you will need to look through the config files of the mod itself, rather than the vanilla files.
  
 
{|class="wikitable"
 
{|class="wikitable"
|
+
|'''Change'''
|'''file'''
+
|'''File'''
|'''label to change'''
+
|'''LW Config files?'''
 +
|'''Value to Change'''
 
|-
 
|-
 
|Zoom out further on tactical level
 
|Zoom out further on tactical level
 
|DefaultCamera.ini
 
|DefaultCamera.ini
|change ZoomedDistanceFromCursor to 4400  
+
|
 +
|<code>ZoomedDistanceFromCursor</code> to 4400
 
|-
 
|-
|
+
|Make camera not blocked at edges of map (default LW2 is set to 15 and you probably don't need to change this).
 
|DefaultCamera.ini
 
|DefaultCamera.ini
|change MaxTilesCameraCanMoveOutsideLevelVolume to 25 so that the camera isn't blocked by the edges of the AOE and can swing out (this works in LW1 as well)
+
|Yes
 +
|MaxTilesCameraCanMoveOutsideLevelVolume to 25 so that the camera isn't blocked by the edges of the AOE and can swing out (this works in LW1 as well)
 
|-
 
|-
 
|
 
|
|DefaultClassData.ini  
+
|DefaultClassData.ini
 +
|
 
|NumInForcedDeck = 0 NumInDeck = 0 This edit removes the specific soldier class from initial promotion screens, note that you can still receive this class as a reward or for hire in the Black Market.
 
|NumInForcedDeck = 0 NumInDeck = 0 This edit removes the specific soldier class from initial promotion screens, note that you can still receive this class as a reward or for hire in the Black Market.
 
|-
 
|-
|Activity on Avenger
+
|More activity on Avenger
 
|DefaultUI.ini  
 
|DefaultUI.ini  
|set maxvisiblecrew to 30 for your difficulty (or all difficulties)
+
|
 +
|set <code>MaxVisibleCrew</code> to 30 for your difficulty (or all difficulties)
 
|-
 
|-
|increase pool of starting soldiers
+
|Increase pool of starting soldiers
 
|DefaultGameCore
 
|DefaultGameCore
 +
|
 
|NUM_STARTING_SOLDIERS=32  
 
|NUM_STARTING_SOLDIERS=32  
 
|-
 
|-
|increase recruit pool
+
|Increase number of recruitable soldiers
 
|DefaultGameData
 
|DefaultGameData
 +
|
 
|set StartingNumRecruits[0] to desired amount for rookie
 
|set StartingNumRecruits[0] to desired amount for rookie
 
|-
 
|-
 +
|Alternate more avenger activity
 +
|DefaultGameData.ini
 +
|No
 +
|set NumClerks_ActOne=5 NumClerks_ActTwo=10 NumClerks_ActThree=15 all at least 30. Separates soldier activity by what stage in the game the player is at.
 +
|-
 +
|Flares on reinforcements
 +
|XComLW_Overhaul.ini
 +
|Yes
 +
|set +DISABLE_REINFORCEMENT_FLARES[0] to either true or false as desired per difficulty level. 
 +
|-
 +
|Build items as infinite stocks instead of individually (Does not work in Version 1.1).
 +
|XComLW_Overhaul
 +
|Yes
 +
|Search for ItemTable, change Infinite=False to Infinite=True to build infinite amounts of desired item.
 +
|-
 +
|Tweaking recruiting activity rebels vs rookies
 +
|XComLW_Outposts
 +
|Yes
 +
|[Recruit LWRebelJobTemplate] IncomePerRebel=3
 +
::Changing this will modify how much recruiting a rebel on that job does (how effective they are at their job)
 +
:RECRUIT_REBEL_BAR=67
 +
:RECRUIT_SOLDIER_BAR=33"
 +
::Modifying the above two values to equal 100% adjusts the probability that new recruits will be a rebel or a soldier
 +
|-
 +
|Make AWC Perk Trees Visible
 +
|XComLW_AWCPack
 +
|Yes
 +
|<code>ALWAYSSHOW=false ;display all future abilities instead of displaying "locked" </code>
 +
:Switch that to true and all perks should be visible.
 +
|-
 +
|Restore Aiming Angles (SW option)
 +
|XComGameCore
 +
|Yes
 +
|Alter the 3 consecutive lines to the following values:
 +
:<code>MAX_TILE_DISTANCE_TO_COVER=999
 +
:MIN_ANGLE_BONUS_MOD=0.0
 +
:MAX_ANGLE_BONUS_MOD=.875 </code>
 +
|-
 +
|Enable 'Bronzeman' Mode (enabled by default in non-ironman games)
 +
|XComGameCore
 +
|Yes
 +
|EnableRestartMissionButtonInIronman=false (change it to true, works as of patch 1.2)
 +
|-
 +
|Modify chance that new haven rebels are a faceless infiltrator
 +
|XComLW_Outposts
 +
|Yes
 +
|DEFAULT_FACELESS_CHANCE
 +
|-
 +
|Equipment stats including weight
 +
|XComLW_Overhaul
 +
|Yes
 
|
 
|
|DefaultGameData.ini
 
|set NumClerks_ActOne=5 NumClerks_ActTwo=10 NumClerks_ActThree=15 all at least 30. This works well with the previous edit .
 
 
|-
 
|-
|flares on reinforcements
+
|To “re-spec” your soldiers in the AWC
|XComLW_Overhaul.ini
+
|XcomGameData.ini
|set +DISABLE_REINFORCEMENT_FLARES[0] to either true or false as desired. 
+
|Yes
 +
|XComHeadquarters_DefaultRespecSoldierDays[1]=0; Normal (Set all options after the equal sign to zero)
 
|-
 
|-
|initial mission timer values
+
|TAB to Promote Soldier in Soldier Skill Screen
|XComLW_Overhaul.ini
+
|LW_PerkPack_Integrated.ini
|Find +InitialTurnCounts=(MissionFamily="Recover_LW", Turns=8) and set Turns to desired amount for each mission type. 
+
|Yes
 +
|btabtopromote=true
 
|-
 
|-
|Reduce lag after shooting an enemy
+
|Strip Utility Items from Wounded Soldiers
|DefaultAnimation.ini  
+
|XcomUI.ini
|set HitReactDelayTimeToDeath to 0.2
+
|Yes
 +
|StripWoundedInventory=false (set to true to NOT strip wounded soldiers)
 
|-
 
|-
 +
|Strip ALL Items from Wounded Soldiers
 +
|XcomUI.ini
 +
|Yes
 +
|AutoStripWoundedAllItems=true (set to true so ALL ITEMS will be stripped from wounded soldiers)
 
|}
 
|}
  
Line 91: Line 189:
 
Thus, 4 turns are added to timers on Rookie, 2 on Veteran. Modifying these can add turns.
 
Thus, 4 turns are added to timers on Rookie, 2 on Veteran. Modifying these can add turns.
  
 +
== Rebinding the Mouse Wheel to Zoom In/Out ==
 +
 +
Open Steam/steamapps/common/XCOM 2/XComGame/Config/DefaltInput.ini in NotePad++
 +
 +
Search for "Zoom In".
 +
 +
Make the following changes, basically you are switching "Change Cursor Altitude" and "Zoom In/Out" by using thesemi-colon to comment out existing lines, and adding new lines to each section. When you are done it should look like this:
 +
 +
<pre style="overflow:auto; width:auto;">
 +
; Zoom In
 +
;.Bindings=(Name="T", Command="T_Key_Press | onrelease T_Key_Release", bPrimaryBinding=True)
 +
.Bindings=(Name="MouseScrollUp", Command="T_Key_Press | onrelease T_Key_Release", bPrimaryBinding=True)
 +
; Zoom Out
 +
;.Bindings=(Name="G", Command="G_Key_Press | onrelease G_Key_Release", bPrimaryBinding=True)
 +
.Bindings=(Name="MouseScrollDown", Command="G_Key_Press | onrelease G_Key_Release", bPrimaryBinding=True)
 +
; Zoom Toggle
 +
.Bindings=(Name="Z", Command="Z_Key_Press | onrelease Z_Key_Release", bPrimaryBinding=True)
 +
; Zoom Range
 +
.Bindings=(Name="MiddleMouseButton",Command="Middle_Mouse_Button_Press | onrelease Middle_Mouse_Button_Release", bPrimaryBinding=True)
 +
; Center camera on current unit
 +
.Bindings=(Name="Home", Command="Home_Key_Press | onrelease Home_Key_Release", bPrimaryBinding=True)
 +
 +
; Change Cursor Altitude
 +
;.Bindings=(Name="MouseScrollUp", Command="F_Key_Press | onrelease F_Key_Release", bPrimaryBinding=True)
 +
.Bindings=(Name="F",    Command="F_Key_Press | onrelease F_Key_Release", bSecondaryBinding=True)
 +
;.Bindings=(Name="MouseScrollDown", Command="C_Key_Press | onrelease C_Key_Release", bPrimaryBinding=True)
 +
.Bindings=(Name="C",    Command="C_Key_Press | onrelease C_Key_Release", bSecondaryBinding=True)
 +
</pre>
 +
 +
== Pavonis Interactive Guide for Mod Creators ==
 +
 +
Pavonis Interactive supplied a compatibility guide so that Mod Creators can easily integrate their mods with Long War 2.
 +
 +
https://docs.google.com/document/d/1iY-EYZrflh1eb31xYeM2dWQQtNYOXe7cCFdwmfoe6HQ/edit?usp=sharing
  
 
 
[[Category: Long War 2]]
 
[[Category: Long War 2]]

Latest revision as of 12:37, 17 May 2017

Beginners guide to modding LW2 ini files

2K, Firaxis, and Pavonis Interactive have made it easy for individual users to tweak parts of the game for their own preference. Many modifiable values are stored in each mod's configiration folder commonly referred to as ini files for their .ini filename extension.

There are three locations for ini files:

This is known as the "xcomgame" configuration folder:

\My documents\my games\xcom2\XcomGame\config\

This is known as the "default" configuration folder:

\Steam\steamapps\common\XCOM 2\XComGame\config\

And this is the "Long War 2 Mod" configuration folder:

\Steam\SteamApps\workshop\content\268500\844674609\config\

It is recommended that you download and use Notepad++ to alter the ini files because it is visually easier to use and numbers the lines (which may be referenced in this page). Another useful tool is the free software WinMerge. WinMerge allows you to open two text files (like the ini) side by side and compare differences between them. This is useful when Long War is updated. To easily preserve the custom modifications you did on a previous version, open a backup copy of your old ini and the new updated ini. WinMerge will help you quickly identify differences and apply all your previous modifications to the new Long War version.

Any changes to the "default" config folder will persist in the game every time that you relaunch the game, unless XCOM2 is updated, or you use Steam to verify the game's cache.

Any changes to the "xcomegame" config folder will be overwritten if XCOM2 updates, or if you make changes to the "LW2 mod" config, or "default" config folders.

Changes to the "LW2 Mod" config folder will persist (and overwrite all other changes) until the mod is updated.

A good way to think of it is that the "xcomegame" configuration files receive all updates from either the player's edits, the mod's edits, or the "default" ini edits. So, it looks like this:

Mod config > Default config > XcomGame config

This is true for EVERY mod, and if you are running other mods with LW2, the "load order" is occasionally important, which means that if you subscribe to a mod and the effects don't show up it means that another mod (in this case probably LW2) has superseded the changes and you'll need to move your new mod to be AFTER LW2 in the load order.

Nearly every single text edit that you can make to an ini file can be made in the "default" folder by making sure that the file name begins with "default", or to the "xcomgame" or "LW2 mod" folder by making sure that the file begins with "xcomgame"

Alternative Mod Launcher

https://www.reddit.com/r/xcom2mods/comments/64mucq/alternative_mod_launcher_now_a_community_project/

The Alternative Mod Launcher is a Windows program that allows you to manage, and edit, your XCOM2 mods easily. It is especially helpful for users with large mod lists and is highly recommended. As you use it you may notice that some mods will report conflicts, in many cases they are "false positives" and the mods will work together. Keep an eye out for asterisks in the "conflicts" tab. that means that the conflict is not one you need to worry about.

You can easily edit your mods' config files directly from within the AML by clicking the files in the "config" tab.

Removing Mods

If you unsubscribe to a mod (or mods) you should backup and delete your "xcomgame" config folder, otherwise the game could continue to "see" the removed mod's files.

The "Remove Missing Mods" mod is the one mod that you should run 100% of the time. http://steamcommunity.com/sharedfiles/filedetails/?id=641394554

It allows you to load a save that would include a now unsubscribed mod, click the "Unbind Missing Mods" button in the Avenger, save, exit to the desktop, and reload the game to a clean game with only your current mod's data included.

Making Changes to Specific Difficulties

If there are four options each with a number at the end of them as follows, it is for each different difficulties.

inichange[0]=x will set the value to x for Rookie difficulty
inichange[1]=y will set the value to y for Veteran difficulty
inichange[2]=z will set the value to z for Commander difficulty
inichange[3]=q will set the value to q for Legend difficulty

Some ini edit examples

If the edit is listed in LW Config Files, you will need to look through the config files of the mod itself, rather than the vanilla files.

Change File LW Config files? Value to Change
Zoom out further on tactical level DefaultCamera.ini ZoomedDistanceFromCursor to 4400
Make camera not blocked at edges of map (default LW2 is set to 15 and you probably don't need to change this). DefaultCamera.ini Yes MaxTilesCameraCanMoveOutsideLevelVolume to 25 so that the camera isn't blocked by the edges of the AOE and can swing out (this works in LW1 as well)
DefaultClassData.ini NumInForcedDeck = 0 NumInDeck = 0 This edit removes the specific soldier class from initial promotion screens, note that you can still receive this class as a reward or for hire in the Black Market.
More activity on Avenger DefaultUI.ini set MaxVisibleCrew to 30 for your difficulty (or all difficulties)
Increase pool of starting soldiers DefaultGameCore NUM_STARTING_SOLDIERS=32
Increase number of recruitable soldiers DefaultGameData set StartingNumRecruits[0] to desired amount for rookie
Alternate more avenger activity DefaultGameData.ini No set NumClerks_ActOne=5 NumClerks_ActTwo=10 NumClerks_ActThree=15 all at least 30. Separates soldier activity by what stage in the game the player is at.
Flares on reinforcements XComLW_Overhaul.ini Yes set +DISABLE_REINFORCEMENT_FLARES[0] to either true or false as desired per difficulty level.
Build items as infinite stocks instead of individually (Does not work in Version 1.1). XComLW_Overhaul Yes Search for ItemTable, change Infinite=False to Infinite=True to build infinite amounts of desired item.
Tweaking recruiting activity rebels vs rookies XComLW_Outposts Yes [Recruit LWRebelJobTemplate] IncomePerRebel=3
Changing this will modify how much recruiting a rebel on that job does (how effective they are at their job)
RECRUIT_REBEL_BAR=67
RECRUIT_SOLDIER_BAR=33"
Modifying the above two values to equal 100% adjusts the probability that new recruits will be a rebel or a soldier
Make AWC Perk Trees Visible XComLW_AWCPack Yes ALWAYSSHOW=false ;display all future abilities instead of displaying "locked"
Switch that to true and all perks should be visible.
Restore Aiming Angles (SW option) XComGameCore Yes Alter the 3 consecutive lines to the following values:
MAX_TILE_DISTANCE_TO_COVER=999
MIN_ANGLE_BONUS_MOD=0.0
MAX_ANGLE_BONUS_MOD=.875
Enable 'Bronzeman' Mode (enabled by default in non-ironman games) XComGameCore Yes EnableRestartMissionButtonInIronman=false (change it to true, works as of patch 1.2)
Modify chance that new haven rebels are a faceless infiltrator XComLW_Outposts Yes DEFAULT_FACELESS_CHANCE
Equipment stats including weight XComLW_Overhaul Yes
To “re-spec” your soldiers in the AWC XcomGameData.ini Yes XComHeadquarters_DefaultRespecSoldierDays[1]=0; Normal (Set all options after the equal sign to zero)
TAB to Promote Soldier in Soldier Skill Screen LW_PerkPack_Integrated.ini Yes btabtopromote=true
Strip Utility Items from Wounded Soldiers XcomUI.ini Yes StripWoundedInventory=false (set to true to NOT strip wounded soldiers)
Strip ALL Items from Wounded Soldiers XcomUI.ini Yes AutoStripWoundedAllItems=true (set to true so ALL ITEMS will be stripped from wounded soldiers)

Adding more turns to the mission timers

Per the developer Amineri:

As for the timers, if you look in the config file XComLW_Overhaul, there is a difficulty-specific modifier for timers :

TimerDifficultyMod[0]=4;   Rookie
TimerDifficultyMod[1]=2;   Veteran
TimerDifficultyMod[2]=0;   Commander
TimerDifficultyMod[3]=0;   Legendary

Thus, 4 turns are added to timers on Rookie, 2 on Veteran. Modifying these can add turns.

Rebinding the Mouse Wheel to Zoom In/Out

Open Steam/steamapps/common/XCOM 2/XComGame/Config/DefaltInput.ini in NotePad++

Search for "Zoom In".

Make the following changes, basically you are switching "Change Cursor Altitude" and "Zoom In/Out" by using thesemi-colon to comment out existing lines, and adding new lines to each section. When you are done it should look like this:

; Zoom In
;.Bindings=(Name="T", Command="T_Key_Press | onrelease T_Key_Release", bPrimaryBinding=True)
.Bindings=(Name="MouseScrollUp", Command="T_Key_Press | onrelease T_Key_Release", bPrimaryBinding=True)
; Zoom Out
;.Bindings=(Name="G", Command="G_Key_Press | onrelease G_Key_Release", bPrimaryBinding=True)
.Bindings=(Name="MouseScrollDown", Command="G_Key_Press | onrelease G_Key_Release", bPrimaryBinding=True)
; Zoom Toggle
.Bindings=(Name="Z", Command="Z_Key_Press | onrelease Z_Key_Release", bPrimaryBinding=True)
; Zoom Range
.Bindings=(Name="MiddleMouseButton",Command="Middle_Mouse_Button_Press | onrelease Middle_Mouse_Button_Release", bPrimaryBinding=True)
; Center camera on current unit
.Bindings=(Name="Home", Command="Home_Key_Press | onrelease Home_Key_Release", bPrimaryBinding=True)

; Change Cursor Altitude
;.Bindings=(Name="MouseScrollUp", Command="F_Key_Press | onrelease F_Key_Release", bPrimaryBinding=True)
.Bindings=(Name="F",     Command="F_Key_Press | onrelease F_Key_Release", bSecondaryBinding=True)
;.Bindings=(Name="MouseScrollDown", Command="C_Key_Press | onrelease C_Key_Release", bPrimaryBinding=True)
.Bindings=(Name="C",     Command="C_Key_Press | onrelease C_Key_Release", bSecondaryBinding=True)

Pavonis Interactive Guide for Mod Creators

Pavonis Interactive supplied a compatibility guide so that Mod Creators can easily integrate their mods with Long War 2.

https://docs.google.com/document/d/1iY-EYZrflh1eb31xYeM2dWQQtNYOXe7cCFdwmfoe6HQ/edit?usp=sharing