<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.heroesofhammerwatch2.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thyraxx</id>
	<title>Heroes of Hammerwatch Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.heroesofhammerwatch2.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thyraxx"/>
	<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/Special:Contributions/Thyraxx"/>
	<updated>2026-10-08T03:31:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1727</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1727"/>
		<updated>2025-11-24T22:16:23Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hooks are script functions that are called at specific moments. This way, you can insert code into the game.&lt;br /&gt;
&lt;br /&gt;
They are specified in script files and tagged with the &amp;lt;code&amp;gt;Hook&amp;lt;/code&amp;gt; specifier. They also must be placed within a namespace to avoid ambiguity between multiple mods.&lt;br /&gt;
&lt;br /&gt;
The following is an example of such a file:&lt;br /&gt;
&lt;br /&gt;
 namespace MyTestMod&lt;br /&gt;
 {&lt;br /&gt;
    [Hook]&lt;br /&gt;
    void BaseGameModeConstructor(BaseGameMode@ baseGameMode){&lt;br /&gt;
        print(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GetGeneratedAttributes&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GetGeneratedAttributes(PlayerStatsDetail@ stats, array&amp;lt;string&amp;gt;@ strArray, array&amp;lt;string&amp;gt;@ icons, bool isHandHeld)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamagedActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ actor, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageActor(PlayerBase@ playerBase, Actor@ actor, DamageInfo@ damageInfo, Skills::Skill@ skill)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageActorNoWeapon&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageActorNoWeapon(PlayerBase@ playerBase, Actor@ actor, DamageInfo@ damageInfo)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamage&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamage(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageTaken&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageTaken(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerInitialize&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRefreshScene&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRefreshScene(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordConstructor(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PickedCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PickedCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;CreateCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void CreateCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordSave(PlayerRecord@ record, SValueBuilder &amp;amp;builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordLoad(PlayerRecord@ record, SValue@ data)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordRefreshModifiers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordRefreshModifiers(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LevelupCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LevelupCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeStart(AGameplayGameMode@ aGameplayGameMode, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePostStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePostStart(AGameplayGameMode@ aGameplayGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePreRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePreRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt, SpriteBatch&amp;amp; sb)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayer&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayer(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayerCorpse&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayerCorpse(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;BaseGameModeConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void BaseGameModeConstructor(BaseGameMode@ baseGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdatePaused&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdatePaused(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdate&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdate(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LoadWidgetProducers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LoadWidgetProducers(GUIBuilder@ builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;HUDConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void HUDConstructor(HUD@ hud, GUIBuilder@ b)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordConstructor(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSave(TownRecord@ townRecord, SValueBuilder&amp;amp; builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordLoad(TownRecord@ townRecord, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSpawnTown&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSpawnTown(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshHeroTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshHeroTitles(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshDonationTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshDonationTitles(TownRecord@ townRecord)&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1726</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1726"/>
		<updated>2025-11-24T11:17:20Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hooks are script functions that are called at specific moments. This way, you can insert code into the game.&lt;br /&gt;
&lt;br /&gt;
They are specified in script files and tagged with the &amp;lt;code&amp;gt;Hook&amp;lt;/code&amp;gt; specifier. They also must be placed within a namespace to avoid ambiguity between multiple mods.&lt;br /&gt;
&lt;br /&gt;
The following is an example of such a file:&lt;br /&gt;
&lt;br /&gt;
 namespace MyTestMod&lt;br /&gt;
 {&lt;br /&gt;
    [Hook]&lt;br /&gt;
    void BaseGameModeConstructor(BaseGameMode@ baseGameMode){&lt;br /&gt;
        print(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GetGeneratedAttributes&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GetGeneratedAttributes(PlayerStatsDetail@ stats, array&amp;lt;string&amp;gt;@ strArray, array&amp;lt;string&amp;gt;@ icons, bool isHandHeld)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamagedActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ actor, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageActor(PlayerBase@ playerBase, Actor@ actor, DamageInfo@ damageInfo, Skills::Skill@ skill)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageActorNoWeapon&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageActorNoWeapon(PlayerBase@ playerBase, Actor@ actor, DamageInfo@ damageInfo)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamage&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamage(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageTaken&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageTaken(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerInitialize&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRefreshScene&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PickedCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PickedCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;CreateCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void CreateCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordSave(PlayerRecord@ record, SValueBuilder &amp;amp;builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordLoad(PlayerRecord@ record, SValue@ data)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordRefreshModifiers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordRefreshModifiers(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LevelupCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LevelupCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeStart(AGameplayGameMode@ aGameplayGameMode, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePostStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePostStart(AGameplayGameMode@ aGameplayGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePreRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePreRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt, SpriteBatch&amp;amp; sb)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayer&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayer(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayerCorpse&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayerCorpse(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;BaseGameModeConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void BaseGameModeConstructor(BaseGameMode@ baseGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdatePaused&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdatePaused(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdate&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdate(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LoadWidgetProducers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LoadWidgetProducers(GUIBuilder@ builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;HUDConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void HUDConstructor(HUD@ hud, GUIBuilder@ b)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordConstructor(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSave(TownRecord@ townRecord, SValueBuilder&amp;amp; builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordLoad(TownRecord@ townRecord, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSpawnTown&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSpawnTown(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshHeroTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshHeroTitles(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshDonationTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshDonationTitles(TownRecord@ townRecord)&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1725</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1725"/>
		<updated>2025-11-24T11:16:53Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hooks are script functions that are called at specific moments. This way, you can insert code into the game.&lt;br /&gt;
&lt;br /&gt;
They are specified in script files and tagged with the &amp;lt;code&amp;gt;Hook&amp;lt;/code&amp;gt; specifier. They also must be placed within a namespace to avoid ambiguity between multiple mods.&lt;br /&gt;
&lt;br /&gt;
The following is an example of such a file:&lt;br /&gt;
&lt;br /&gt;
 namespace MyTestMod&lt;br /&gt;
 {&lt;br /&gt;
    [Hook]&lt;br /&gt;
    void BaseGameModeConstructor(BaseGameMode@ baseGameMode){&lt;br /&gt;
        print(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GetGeneratedAttributes&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GetGeneratedAttributes(PlayerStatsDetail@ stats, array&amp;lt;string&amp;gt;@ strArray, array&amp;lt;string&amp;gt;@ icons, bool isHandHeld)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamagedActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ actor, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerKilledActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageActor(PlayerBase@ playerBase, Actor@ actor, DamageInfo@ damageInfo, Skills::Skill@ skill)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageActorNoWeapon&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageActorNoWeapon(PlayerBase@ playerBase, Actor@ actor, DamageInfo@ damageInfo)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamage&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamage(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageTaken&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageTaken(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerInitialize&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRefreshScene&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PickedCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PickedCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;CreateCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void CreateCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordSave(PlayerRecord@ record, SValueBuilder &amp;amp;builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordLoad(PlayerRecord@ record, SValue@ data)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordRefreshModifiers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordRefreshModifiers(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LevelupCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LevelupCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeStart(AGameplayGameMode@ aGameplayGameMode, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePostStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePostStart(AGameplayGameMode@ aGameplayGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePreRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePreRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt, SpriteBatch&amp;amp; sb)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayer&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayer(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayerCorpse&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayerCorpse(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;BaseGameModeConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void BaseGameModeConstructor(BaseGameMode@ baseGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdatePaused&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdatePaused(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdate&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdate(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LoadWidgetProducers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LoadWidgetProducers(GUIBuilder@ builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;HUDConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void HUDConstructor(HUD@ hud, GUIBuilder@ b)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordConstructor(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSave(TownRecord@ townRecord, SValueBuilder&amp;amp; builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordLoad(TownRecord@ townRecord, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSpawnTown&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSpawnTown(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshHeroTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshHeroTitles(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshDonationTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshDonationTitles(TownRecord@ townRecord)&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Modding/Modifiers&amp;diff=1724</id>
		<title>Modding/Modifiers</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Modding/Modifiers&amp;diff=1724"/>
		<updated>2025-11-23T15:13:26Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: Created page with &amp;quot;If a modifier doesn&amp;#039;t have documentation it&amp;#039;s either unused or the modifier is newer than the Docs.  Looking up the file itself is better cause then you will have the latest version, docs aren&amp;#039;t guaranteed to match. {| class=&amp;quot;wikitable&amp;quot; ! Modifier !! HoH2 Docs |- | Armor ||[https://www.hammerwatch.com/hoh2doc/class%20modifiers%201%201%20armor.html Armor] |- | Aura  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_aura.html Aura] |- | Block  ||[https://www.hamme...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If a modifier doesn&#039;t have documentation it&#039;s either unused or the modifier is newer than the Docs.&lt;br /&gt;
&lt;br /&gt;
Looking up the file itself is better cause then you will have the latest version, docs aren&#039;t guaranteed to match.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Modifier !! HoH2 Docs&lt;br /&gt;
|-&lt;br /&gt;
| Armor ||[https://www.hammerwatch.com/hoh2doc/class%20modifiers%201%201%20armor.html Armor]&lt;br /&gt;
|-&lt;br /&gt;
| Aura  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_aura.html Aura]&lt;br /&gt;
|-&lt;br /&gt;
| Block  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_block.html Block]&lt;br /&gt;
|-&lt;br /&gt;
| BlockProjectile  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_block_projectile.html BlockProjectile]&lt;br /&gt;
|-&lt;br /&gt;
| Buff  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_buff.html Buff]&lt;br /&gt;
|-&lt;br /&gt;
| BuffImmune  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_buff_immune.html BuffImmune]&lt;br /&gt;
|-&lt;br /&gt;
| BuffScaling  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_buff_scaling.html BuffScaling]&lt;br /&gt;
|-&lt;br /&gt;
| ShieldBlockScaling  || No docs as of right now&lt;br /&gt;
|-&lt;br /&gt;
| Damage  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_damage.html Damage]&lt;br /&gt;
|-&lt;br /&gt;
| SurpriseDamage  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_surprise_damage.html SurpriseDamage]&lt;br /&gt;
|-&lt;br /&gt;
| InjuredDamage  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_injured_damage.html InjuredDamage]&lt;br /&gt;
|-&lt;br /&gt;
| DamageLeeching  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_damage_leeching.html DamageLeeching]&lt;br /&gt;
|-&lt;br /&gt;
| HealthRegenDelay  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_health_regen_delay.html HealthRegenDelay]&lt;br /&gt;
|-&lt;br /&gt;
| InjectModifiersIntoStack  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_inject_modifiers_into_stack.html InjectModifiersIntoStack]&lt;br /&gt;
|-&lt;br /&gt;
| MaterialGain  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_material_gain.html MaterialGain]&lt;br /&gt;
|-&lt;br /&gt;
| MaterialGainMul  || Partial/no docs&lt;br /&gt;
|-&lt;br /&gt;
| MaterialGainPerTrinket  || No docs as of right now&lt;br /&gt;
|-&lt;br /&gt;
| ShadowCurseGain  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_shadow_curse_gain.html ShadowCurseGain]&lt;br /&gt;
|-&lt;br /&gt;
| ReviveCost  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_revive_cost.html ReviveCost]&lt;br /&gt;
|-&lt;br /&gt;
| Miss  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_miss.html Miss]&lt;br /&gt;
|-&lt;br /&gt;
| ModifyStack  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_modify_stack.html ModifyStack]&lt;br /&gt;
|-&lt;br /&gt;
| ModifySummons  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_modify_summons.html ModifySummons]&lt;br /&gt;
|-&lt;br /&gt;
| ParryRanged  || No docs&lt;br /&gt;
|-&lt;br /&gt;
| PickupScale  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_pickup_scale.html PickupScale]&lt;br /&gt;
|-&lt;br /&gt;
| PointsFromDamageTaken  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_points_from_damage_taken.html PointsFromDamageTaken]&lt;br /&gt;
|-&lt;br /&gt;
| SpellCost  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_spell_cost.html SpellCost]&lt;br /&gt;
|-&lt;br /&gt;
| Thorns  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_thorns.html Thorns]&lt;br /&gt;
|-&lt;br /&gt;
| TrueStrike  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_true_strike.html TrueStrike]&lt;br /&gt;
|-&lt;br /&gt;
| UnlethalDamage  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_unlethal_damage.html UnlethalDamage]&lt;br /&gt;
|-&lt;br /&gt;
| UsePointsCost  ||[https://www.hammerwatch.com/hoh2doc/class_modifiers_1_1_use_points_cost.html UsePointsCost]&lt;br /&gt;
|-&lt;br /&gt;
| GrappleEvasionMod  ||[https://www.hammerwatch.com/hoh2doc/class_skills_1_1_grapple_evasion_mod.html GrappleEvasionMod]&lt;br /&gt;
|-&lt;br /&gt;
| ManaShieldMod  ||[https://www.hammerwatch.com/hoh2doc/class_skills_1_1_mana_shield_mod.html ManaShieldMod]&lt;br /&gt;
|-&lt;br /&gt;
| TrapDamageHeroTitle  || No docs as of right now&lt;br /&gt;
|-&lt;br /&gt;
| MaterialDamageTaken  || No docs as of right now&lt;br /&gt;
|-&lt;br /&gt;
| MaterialDamageTakenDivScheme || No docs as of right now&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1719</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1719"/>
		<updated>2025-11-20T23:01:06Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hooks are script functions that are called at specific moments. This way, you can insert code into the game.&lt;br /&gt;
&lt;br /&gt;
They are specified in script files and tagged with the &amp;lt;code&amp;gt;Hook&amp;lt;/code&amp;gt; specifier. They also must be placed within a namespace to avoid ambiguity between multiple mods.&lt;br /&gt;
&lt;br /&gt;
The following is an example of such a file:&lt;br /&gt;
&lt;br /&gt;
 namespace MyTestMod&lt;br /&gt;
 {&lt;br /&gt;
    [Hook]&lt;br /&gt;
    void BaseGameModeConstructor(BaseGameMode@ baseGameMode){&lt;br /&gt;
        print(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GetGeneratedAttributes&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GetGeneratedAttributes(PlayerStatsDetail@ stats, array&amp;lt;string&amp;gt;@ strArray, array&amp;lt;string&amp;gt;@ icons, bool isHandHeld)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamagedActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ actor, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerKilledActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ killed, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamage&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamage(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageTaken&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageTaken(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerInitialize&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRefreshScene&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PickedCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PickedCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;CreateCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void CreateCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordSave(PlayerRecord@ record, SValueBuilder &amp;amp;builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordLoad(PlayerRecord@ record, SValue@ data)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordRefreshModifiers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordRefreshModifiers(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LevelupCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LevelupCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeStart(AGameplayGameMode@ aGameplayGameMode, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePostStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePostStart(AGameplayGameMode@ aGameplayGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePreRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePreRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt, SpriteBatch&amp;amp; sb)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayer&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayer(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayerCorpse&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayerCorpse(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;BaseGameModeConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void BaseGameModeConstructor(BaseGameMode@ baseGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdatePaused&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdatePaused(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdate&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdate(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LoadWidgetProducers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LoadWidgetProducers(GUIBuilder@ builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;HUDConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void HUDConstructor(HUD@ hud, GUIBuilder@ b)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordConstructor(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSave(TownRecord@ townRecord, SValueBuilder&amp;amp; builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordLoad(TownRecord@ townRecord, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSpawnTown&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSpawnTown(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshHeroTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshHeroTitles(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshDonationTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshDonationTitles(TownRecord@ townRecord)&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1718</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1718"/>
		<updated>2025-11-20T22:58:26Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GetGeneratedAttributes&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GetGeneratedAttributes(PlayerStatsDetail@ stats, array&amp;lt;string&amp;gt;@ strArray, array&amp;lt;string&amp;gt;@ icons, bool isHandHeld)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamagedActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ actor, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerKilledActor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamagedActor(Player@ player, Actor@ killed, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamage&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamage(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerDamageTaken&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerDamageTaken(Player@ player, DamageInfo di)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerInitialize&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRefreshScene&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerBase@ playerBase)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerInitialize(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PickedCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PickedCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;CreateCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void CreateCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordSave(PlayerRecord@ record, SValueBuilder &amp;amp;builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordLoad(PlayerRecord@ record, SValue@ data)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;PlayerRecordRefreshModifiers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void PlayerRecordRefreshModifiers(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LevelupCharacter&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LevelupCharacter(PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeStart(AGameplayGameMode@ aGameplayGameMode, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePostStart&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePostStart(AGameplayGameMode@ aGameplayGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModePreRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModePreRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeRenderFrame&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeRenderFrame(AGameplayGameMode@ aGameplayGameMode, int idt, SpriteBatch&amp;amp; sb)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayer&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayer(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeSpawnPlayerCorpse&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeSpawnPlayerCorpse(AGameplayGameMode@ aGameplayGameMode, PlayerRecord@ record)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;BaseGameModeConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void BaseGameModeConstructor(BaseGameMode@ baseGameMode)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdatePaused&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdatePaused(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;GameModeUpdate&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void GameModeUpdate(BaseGameMode@ baseGameMode, int ms, GameInput&amp;amp; gameInput, MenuInput&amp;amp; menuInput)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;LoadWidgetProducers&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void LoadWidgetProducers(GUIBuilder@ builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;HUDConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void HUDConstructor(HUD@ hud, GUIBuilder@ b)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordConstructor&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordConstructor(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSave&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSave(TownRecord@ townRecord, SValueBuilder&amp;amp; builder)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordLoad&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordLoad(TownRecord@ townRecord, SValue@ save)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordSpawnTown&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordSpawnTown(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshHeroTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshHeroTitles(TownRecord@ townRecord)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;TownRecordRefreshDonationTitles&amp;lt;/h1&amp;gt;&lt;br /&gt;
 void TownRecordRefreshDonationTitles(TownRecord@ townRecord)&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1717</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1717"/>
		<updated>2025-11-20T17:44:39Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GetGeneratedAttributes&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamagedActor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerKilledActor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamage&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamageTaken&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerInitialize&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRefreshScene&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamageActor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamageActorNoWeapon&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PickedCharacter&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
CreateCharacter&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordSave&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordLoad&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordRefreshModifiers&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
LevelupCharacter&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeStart&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModePostStart&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModePreRenderFrame&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeRenderFrame&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeSpawnPlayer&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeSpawnPlayerCorpse&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
BaseGameModeConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeUpdatePaused&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeUpdate&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
LoadWidgetProducers&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
HUDConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordSave&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordLoad&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordSpawnTown&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordRefreshHeroTitles&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordRefreshDonationTitles&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1716</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1716"/>
		<updated>2025-11-20T17:38:53Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamagedActor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerKilledActor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamage&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamageTaken&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerInitialize&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRefreshScene&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamageActor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerDamageActorNoWeapon&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PickedCharacter&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
CreateCharacter&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordSave&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordLoad&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
PlayerRecordRefreshModifiers&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
LevelupCharacter&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeStart&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModePostStart&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModePreRenderFrame&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeRenderFrame&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeSpawnPlayer&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeSpawnPlayerCorpse&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
BaseGameModeConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeUpdatePaused&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
GameModeUpdate&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
LoadWidgetProducers&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
HUDConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordConstructor&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordSave&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordLoad&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordSpawnTown&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordRefreshHeroTitles&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h1 style=&amp;quot;color: #faa700&amp;quot;&amp;gt;&lt;br /&gt;
TownRecordRefreshDonationTitles&lt;br /&gt;
&amp;lt;/h1&amp;gt;&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
	<entry>
		<id>https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1715</id>
		<title>Hooks</title>
		<link rel="alternate" type="text/html" href="https://wiki.heroesofhammerwatch2.com/index.php?title=Hooks&amp;diff=1715"/>
		<updated>2025-11-20T12:32:27Z</updated>

		<summary type="html">&lt;p&gt;Thyraxx: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hooks are script functions that are called at specific moments. This way, you can insert code into the game a bit easier without the need for overwriting existing files.&lt;br /&gt;
This is mostly the recommended way, there is almost no need to update your mod if the game gets updates and it keeps the highest compatibility cause it won&#039;t affect other mods.&lt;br /&gt;
&lt;br /&gt;
They are specified in script files and tagged with the &amp;lt;code&amp;gt;Hook&amp;lt;/code&amp;gt; specifier. They also must be placed within a namespace to avoid ambiguity between multiple mods.&lt;br /&gt;
&lt;br /&gt;
The following is an example of such a file:&lt;br /&gt;
&lt;br /&gt;
 namespace MyTestMod&lt;br /&gt;
 {&lt;br /&gt;
    [Hook]&lt;br /&gt;
    void BaseGameModeConstructor(BaseGameMode@ baseGameMode){&lt;br /&gt;
        print(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== PlayerDamagedActor ==&lt;br /&gt;
== PlayerKilledActor ==&lt;br /&gt;
== PlayerDamage ==&lt;br /&gt;
== PlayerDamageTaken ==&lt;br /&gt;
== PlayerInitialize ==&lt;br /&gt;
== PlayerRefreshScene ==&lt;br /&gt;
== PlayerDamageActor ==&lt;br /&gt;
== PlayerDamageActorNoWeapon ==&lt;br /&gt;
== PlayerRecordConstructor ==&lt;br /&gt;
== PickedCharacter ==&lt;br /&gt;
== CreateCharacter ==&lt;br /&gt;
== PlayerRecordSave ==&lt;br /&gt;
== PlayerRecordLoad ==&lt;br /&gt;
== PlayerRecordRefreshModifiers ==&lt;br /&gt;
== LevelupCharacter ==&lt;br /&gt;
== GameModeStart ==&lt;br /&gt;
== GameModePostStart ==&lt;br /&gt;
== GameModePreRenderFrame ==&lt;br /&gt;
== GameModeRenderFrame ==&lt;br /&gt;
== GameModeSpawnPlayer ==&lt;br /&gt;
== GameModeSpawnPlayerCorpse ==&lt;br /&gt;
== BaseGameModeConstructor ==&lt;br /&gt;
== GameModeUpdatePaused ==&lt;br /&gt;
== GameModeUpdate ==&lt;br /&gt;
== LoadWidgetProducers ==&lt;br /&gt;
== HUDConstructor ==&lt;br /&gt;
== TownRecordConstructor ==&lt;br /&gt;
== TownRecordSave ==&lt;br /&gt;
== TownRecordLoad ==&lt;br /&gt;
== TownRecordSpawnTown ==&lt;br /&gt;
== TownRecordRefreshHeroTitles ==&lt;br /&gt;
== TownRecordRefreshDonationTitles ==&lt;/div&gt;</summary>
		<author><name>Thyraxx</name></author>
	</entry>
</feed>