Jul 31, 2023
A Tofu Tail - alchemedium
Hotfix to resolve issues with level 7~10: 'Opposing Forces In Harmony'
Jul 31, 2023
MARVEL Puzzle Quest - b.willits
“Double Sided…”

  • The MPQ 10th Anniversary is in full swing! Keep coming back for weekly rewards.
  • Check out the brand-new Omnipotence City Support 8/3!
  • Celebrate National Friendship Day with your beloved Alliance members!
  • We’re announcing a massive update to the Classic Legends Pack! Head to the forums for more info!

Thank you for playing!

MPQ 283
tModLoader - Solxan
The 1.4.4 Update Is Now Live on Steam.
Thank you for your patience.

As a reminder, if mods you were using on 1.4.3 haven't updated yet, you can switch back to 1.4.3 in the meantime by using the beta branches feature to switch to the 1.4.3-legacy branch.

New Changes' Highlights

The following is a list of the most noteworthy pull requests and commits that have been pushed since 2022th October, and are now available on the default/stable branch.

• Translations are now fully in localization files (.hjson files). DisplayName and Tooltip, for example, can no longer be assigned in code.
• Localization files are automatically updated with entries for new content and managed by tModLoader. More organization options available.
• All ModTranslation usages are now replaced with LocalizedText
• All translation keys now follow a more predictable pattern: Mods.ModName.Category.ContentName.DataName
• Contributing translations, directly or through translation mods, streamlined.

Porting Notes: #preview-update-log in Discord
• Hookgen namespaces (IL. and On.) have been removed in favor of On_ and IL_ prepended to the type name.
• No longer will you get 3 different namespace suggestions when you use VS to import a Terraria type name.
• Want On Item hooks? Just use On_Item it's in the same namespace as Item!

Porting Notes: #preview-update-log in Discord
Declarative Shops by BasicallyIAmFox
• NPC shops are now declarative, meaning they get registered, and items can be added to them with conditions, similarly to NPC drops (loot) and recipes
• Adding items to shops, or hiding items from shops is now as easy as adding or disabling recipes
• Info mods can traverse the NPCShopDatabase to show how to obtain an item. All the conditions for items appearing in shops have been localized.
• Registering multiple shops per NPC is perfectly fine, and selecting the shop to be opened when chatting can now be done via the ref string shop parameter in OnChatButtonClicked

Porting Notes: #preview-update-log in Discord
• Adds ModPlayer.ModifyMaxStats with StatModifier arguments for permanent adjustments to max health/mana.
• Adds Player.ConsumedLifeCrystals, ConsumedLifeFruit and ConsumedManaCrystals properties.
• Add helper methods Player.UseHealthMaxIncreasingItem and Player.UseManaMaxIncreasingItem for the visual effects.
• Adds ModResourceDisplaySet allowing for custom life/mana draw styles (similar to boss bar styles) that can be selected in settings.
• Adds ModResourceOverlay to allow for drawing custom hearts/mana/effects over the vanilla (or modded) life/mana UI elements.

Porting Notes: #preview-update-log in Discord
ModHair API by steviegt6
• Adds the ability to add new hairstyles, with unlock conditions.
• Updates to MonoMod involve the removal of old APIs, and better performance and stability moving forward.
NativeDetour and Detour are gone, there was little need for modders to use these anyway.

Porting Notes: #preview-update-log in Discord
Player and NPC hit hooks (OnHit, ModifyHit, OnHitBy, etc) have been simplified with common architecture, and had many new features added.

Porting Notes: #preview-update-log in Discord
OnStack Hook by andro951
• Adds ModItem/GlobalItem.OnStack and SplitStack to enable modded data such as experience counters, durability, etc to work with stackable items.
• Crafting now creates the recipe item(s) first, and then combines them using OnStack. This means that in OnCreate,
RecipeCreationContext.DestinationStack has been added so you can make sure that the crafted result is stackable with the mouse item (if any)

Porting Notes: #preview-update-log in Discord
ModConfig can now be localized by default.
• Localization for ModConfig entries are now done fully in .hjson files.
• .hjson files are automatically populated with entries.
• New LabelArgs and TooltipArgs attributes allow for cleaner code and better code/localization reuse.
• [Label] and [Tooltip] obsolete, [Header] changed. See porting notes.

Porting Notes: #preview-update-log in Discord
• All entity sources have been reviewed. Most are unchanged, but some have been removed, some added, or split.
• Many sources now extend EntitySource_Parent which is the most useful source. If in doubt, use GetSource_FromThis() when spawning a projectile.
CritChance and ArmorPenetration now transfer from parent to child projectiles, and from players to player spawned projectiles.
Projectile.ContinuouslyUpdateDamage is now ContinuouslyUpdateDamageStats and also updates CritChance and ArmorPenetration (no, minions still cannot crit, even though they have CritChance)

Porting Notes: #preview-update-log in Discord
• Modded keybinds are now localizable
• The name passed into KeybindLoader.RegisterKeybind is used in the key: "Mods.{ModName}.Keybind.{KeybindName}"

Porting Notes: #preview-update-log in Discord
• Added new Item.NewItem overloads that take an Item instance and clones it, allowing spawning a clone of an item.
• Fixes several cases where modded data was lost or broken (mediumcore death, items dropping from Tile Entities)
Player.QuickSpawnItem (and similar) overloads with the Item parameter now use the item cloning by default. Player.QuickSpawnClonedItem is now marked as obsolete.

Porting Notes: #preview-update-log in Discord
• Adds item.Consummable as a check in Quick Heal and Quick Mana
• Is a simpler solution then overriding ConsumeItem(

Porting Notes: #preview-update-log in Discord
Add ModSystem.ClearWorld by Chicken-Bones
• Adds ModSystem.ClearWorld which runs on world clear. The new best place to clear/initialize world related data structures.

Porting Notes: #preview-update-log in Discord
• Adds some helper methods and an exception for easier IL editing and error handling.
• Adds WorldGen.ModifyPass and WorldGen.DetourPass to allow easily IL hooking legacy world gen passes
• It is recommended for modders to wrap their IL hooks in a try-catch, and call either MonoModHooks.DumpIL or throw new ILPatchFailureException so that a user can provide the IL log file for diagnosis when hooks fail.

Porting Notes: #preview-update-log in Discord
Terraria.Recipe.Condition has been moved to Terraria.Condition and can now be applied to more things. Recipes, item variants, drops and soon shops
• Added SimpleItemDropRuleCondition class to help make drop conditions more easily.

Porting Notes: #preview-update-log in Discord
• Tiles and walls now automatically drop the items that place it. This process supports tiles with multiple styles.
• Block Swap feature now supports modded torches, chests, and drawers.
• Other miscellaneous fixes.

Porting Notes: #preview-update-log in Discord
• All items will now default to needing 1 item to research.
• The previous value of 0 left items unresearchable since many modders don't bother to implement journey mode features
• Modders can clean up their code. ModItems with Item.ResearchUnlockCount = 1; lines can be deleted.

Porting Notes: #preview-update-log in Discord
• New hooks, mirroring CanHitNPC but called on the victim's ModNPC and GlobalNPC
Player.BuyItem split into BuyItem, CanAfford, and PayCurrency methods
Player.CanBuyItem removed
CustomCurrencyManager.BuyItem split in the same manner.
Mod/GlobalItem.PreReforge is now split into PreReforge and CanReforge. PreReforge no longer returns bool, CanReforge handles that purpose.

Porting Notes: #preview-update-log in Discord
• Renames Player.rocketDamage to Player.specialistDamage, in line with 1.4.4 changes to Shroomite Helmet that changed "bonus rocket damage" to "bonus specialist ranged damage".
• Renames AmmoID.Sets.IsRocket to AmmoID.Sets.IsSpecialist and adds ammo entries matching Terraria for the same reason.
• Adds ItemID.Sets.IsRangedSpecialistWeapon to cover specialist weapons that don't use ammo.

Porting Notes: #preview-update-log in Discord
ModPrefix.GetTooltipLines added to allow adding tooltips directly from ModPrefix class. Better code cohesion.

Porting Notes: #preview-update-log in Discord
• Reworks automatic tile drops introduced in https://github.com/tModLoader/tModLoader/pull/3210
ModBlockType.ItemDrop removed.
TileLoader.GetItemDropFromTypeAndStyle no longer falls back to tile style 0. A special fallback will be used if the style is not found.
ModTile.RegisterItemDrop added. Allows manually registering an item drop for a tile style, or as a fallback item. Used to provide drops for styles that don't have a corresponding item that places it.
ModWall.RegisterItemDrop added. Allows manual registration of wall drop, useful for unsafe walls that drop safe walls.

Porting Notes: #preview-update-log in Discord
IModType is no longer ILoadable, ModType is unchanged
• As a reminder, IModType exists only to support classes that can't extend from ModType. In tML the only instance of this is ModTileEntity which much extend from TileEntity, there is little reason for modders to extend from it instead of ModType.

Porting Notes: #preview-update-log in Discord
• TownNPCMood localization entries will automatically populate .hjson for town npc. Only used keys will be populated.
• TownNPCDialogueName localization entries will automatically populate .hjson for biomes.
NPCID.Sets.NoTownNPCHappiness added for town npc that don't use happiness.

Porting Notes: #preview-update-log in Discord
• Allows modders to affect NPC gravity and maxFallSpeed without interfering with other mods by multiplying NPC.GravityMultiplier and NPC.MaxFallSpeedMultiplier
• Adds GravityIgnoresType, GravityIgnoresLiquid and GravityIgnoresSpace properties to NPC to disable the respective vanilla gravity calculations.

Porting Notes: #preview-update-log in Discord

Performance Improvements

Improve Player.clientClone performance by Chicken Bones & Mirsario
Item.Clone can become very performance expensive with many mods. Only type, stack and prefix are required to tell if an item has changed in the inventory and needs to be re-synced.

This PR replaces usages of Item.Clone in Player.clientClone with Item.CopyNetStateTo
Additionally, a single Player (and ModPlayer) instance is reused for all clientClone/CopyClientStateTo calls, acting as a 'storage copy' rather than making a new one each frame.

Please note that tModPorter is not smart enough to identify Item.Clone usages in ModPlayer.CopyClientStateTo calls automatically. You will need to replace these yourself or an exception will be thrown at runtime.

Porting Notes: #preview-update-log in Discord
• More performance, more modularity. No need to fear having hundreds of globals per mod. The new system should do better at optimizing performance than a modder can with 'uber globals' because it will skip even iterating past a global which doesn't apply to the target entity type.
AppliesToEntity is not called during the game anymore! Instead, whether a global applies to an Item/Projectile/NPC type is computed and cached at the end of PostSetupContent
• This is a minimally breaking change, but reading the PR description is strongly recommended, especially for advanced modders.

Porting Notes: #preview-update-log in Discord

Localization

Brazilian Portuguese - Updated thanks to Pixelnando.
Chinese - Updated thanks to lyc-Lacewing and sgkoishi.
Russian - Updated thanks to RazzSG, Blueberryy, and Ved-s.

Bug Fixes

• Biome Torch/Campfire (Torch Gods Favor) support has been added. ModBiome can now dictate the appropriate item to auto swap.
• Various torch issues have been fixed: Smart cursor, underwater placement, duplication menu category
• Block Swap feature now supports modded Campfire tiles.
ExampleWaterTorch added. ExampleCampfire added.

Porting Notes: #preview-update-log in Discord
UI Fixes by Destructor-Ben
UICommon.WithFadedMouseOver now supports border color toggling.

Porting Notes: #preview-update-log in Discord
• If you are using ModWaterStyle, make sure you have a _Slope.png file. If you didn't, your mod won't load and will need to be updated.
• The Slope texture was added in 1.4.4 Terraria and helps draw water correctly around sloped tiles. See https://github.com/tModLoader/tModLoader/blob/1.4.4/ExampleMod/Content/Biomes/ExampleWaterStyle_Slope.png for an example. You can also look at the Images/LiquidSlope_# files from vanilla.
Rijam - More Conditions
mtkloepf - Updated some documentation
PaulHause - [1.4.4] WIP: Reworked Biome Block Counting for Vanilla Biomes
stormytuna - Changes ModifyBuffTip hook into ModifyBuffText hook (#3307)
noctisatrae - Improving the documentation (Recipe.Create)
ScalarVector1 - Change legacy version message
ExterminatorX99 - Run HookGen
ExterminatorX99 - Mod/GlobalWall.WallFrame hook
Ouroel - Wrap many ModPlayer hooks in exception suppressors to prevent cascading failures
Exiled1 - Added a currency system accessor
DarioDaF - Hotfix enumeration stopped error (Task edit UI) and icon disappearing
Setnour6 - Add NearShimmer recipe condition
Setnour6 - [1.4.4] Add new secret seed conditions for ItemDropRules
Antirhinnum - A Little* Bit of Documentation
turtletowerz - dedicated server management rewrite
BasicallyIAmFox - UseImageX method overloads
BasicallyIAmFox - [1.4.4] Add ItemID.Sets.OreDropsFromSlime
MutantWafflez - New 1.4.4 Info Accessory Hooks
MutantWafflez - Modded Loadout IO
MutantWafflez - https://github.com/tModLoader/tModLoader/pull/3287
absoluteAquarian - More Reliable Stack Trace File Path Trimming
absoluteAquarian - OnStack API Documentation Improvements
Kogsey - Fixes setting npcCatchable true forcing NPC.friendly to falce
Kogsey - Shimmer Recipe.Condition support + internalisation/removal of vanilla corruption/crimson versions
Cyrillya - ModPlayer.AddMaterialsForCrafting Method
Cyrillya - Call ItemLoader.UseItem for food quick buff
Destructor-Ben - Better Mod Development Menu
Destructor-Ben - More UI Fixes
Destructor-Ben - IL Editing GenPasses
Destructor-Ben - IL Editing QoL Stuff
Jadams505 - Modded chest lock support
direwolf420 - add DamageClassLoader.GetDamageClass
direwolf420 - Add ItemID.Sets.CoinLuckValue
direwolf420 - ModTypeLookup.RegisterLegacyNames method
direwolf420 - InfoDisplay text coloring support
direwolf420 - GrappleCanLatchOnTo hook
direwolf420 - [1.4.4] Add TileID.Sets.AvoidedByMeteorLanding
direwolf420 - [1.4.4] Add ItemID.Sets.GeodeDrops
Mirsario - Patch improvements
Mirsario - Code Style Update (K&R, etc.)
Mirsario - Move & rename ModItem.SacrificeTotal
Chicken-Bones - Improve FastParallel.For performance in CPU contended scenarios.
Solxanich - Fix #881 (tModLoader not enabled for family share accounts on steam)
Solxanich - Correct LogStartup order & Int.MaxValue UnloadedItem
Exiled1 - Fix #3221 by adding a check to player and world names to prevent reserved keywords from being used.
Cyrillya - Fix Player.Serialize bug due to extra buff slots added by mods
HydroH - Fix IME compability issue
turtletowerz - Fix console commands on Docker servers
Destructor-Ben - UIMessageBox Fix
Kogsey - Fix gravity being assigned instead of fall speed in maxFallSpeed private set.
Kogsey - Fix for multiplayer modded music boxes not working with wiring
Antirhinnum - Fix Character Creation Window Hair Draw Ordering Bug
fkwilczek - Fixed double damage space
fkwilczek - Fixed problem with detecting dotnet on linux
Rijam - ItemUseStyleID.RaiseLamp Front Arm Animation Fix
Rijam - Fix Town NPC Melee Swinging Source Rectangle
Rijam - [1.4.4] Obsidian Armor Set Bonus Whip Speed Fix
Jadams505 - [1.4.4] Health bar style options fix
Jadams505 - [1.4.4] Quick stack visual fix
Jadams505 - [1.4.4] Interface layer drawing fix
direwolf420 - Use correct layers for First/LastVanillaLayer
direwolf420 - Fix ModTree.Shake hook not working
direwolf420 - Fix ProjectileLoader.ReceiveExtraAI not being called (consistently)
direwolf420 - [ExampleMod] Fix EM not loading on servers, ExampleRecipeMaterialPlayer fixes
direwolf420 - Fix pet drawing in player select screen for invalid items + ExampleMod showcase
direwolf420 - Fix items falling through tiles and certain projectiles updating in non-loaded chunks in MP
direwolf420 - [1.4.4] Fix DustType + CreateDust interaction
direwolf420 - Fix tile framing (causing infinite UnloadedXTile loop and invisible tiles)
ilcheese2 - Fix content folder path on Mac with GoG version (#3173)
ExampleMod
Blockaroz - Example Drill
Midnight417 - Example for a Custom Swing Sword
RayRelax - Porting various example commands
RegularPhoenix - Ported Example Javelin
RegularPhoenix - Updated Example Resource
Rijam - Example Swinging Energy Sword (1.4.4 Excalibur Clone)
Rijam - Minor Example Mod Changes
Rijam - Updated Shimmered Example NPCs and Added Gore
direwolf420 - Tweaks & fixes for example resource
direwolf420 - Update existing mod integrations to 1.4.4
direwolf420 - More shimmer transformations
direwolf420 - Reimplement ExampleBlock.ChangeWaterfallStyle
FalconO5 - ExampleYoyo port

Frequently Asked Questions

How do I switch to the 1.4.3-legacy or 1.3-legacy branches of TML?
To switch to anoter branch in steam, just do the following:
1. Right click on tModLoader in Steam and select 'Properties...', then 'BETAS';
2. Select the branch you want in the drop-down menu on top;
3. Close the window. You don't need to enter any passwords.


Have fun!
Breakwaters: Crystal Tides - Soaring Pixels Games
v0.8.04
-Update to game engine version.
-Most gpu fog artifact fixed by new game engine version.
-Setup button prompt feedback to right side of screen for conversation window.
-Button Prompt menu readability improvements.
-Increased Boat Tusk sell value.
-Update to Bow logic to work better while mounted on the rudder of a Hawk boat.
-Improved NPC look-at-logic to react better in close combat when standing behind them.
-Improved Titan-Hammer range.
-Fixed a rare situation in online games where saving could take longer than expected.
-Fixed a spawn issue with some islands in online that would only happen after a pre-gen process and only the first time.
-Update to pig poop to improve network physics lod logic
-Setup logic to check if the player position save file is outside of the world and to put it at a safe location.
Zombie Admin - Hastily Assembled
Hey there!

We're happy to share that Zombie Admin now includes a Portuguese (PT) localization, all thanks to Didi Cardoso (Gamer's Intuition)!

We also added another font that should support most non-latin scripts.

Thomas and I are working on a new game. It's a first-person horror adventure game based on a terrifyingly true story. You can add it to your wishlist right now!

https://store.steampowered.com/app/2491500

See you in the office,
Emmy and Thomas
VR Drums Ultimate Streamer - platform
Bass pedal tweaks and fixes. 7/31/23
MotorCubs RC - jdraisey
  1. All 14 vehicles have Level of Detail swap geometry to help improve performance as they travel further from the camera.
  2. Introducing interactive debris resulting from vehicle to vehicle collisions that is persistent lap to lap.
Jul 31, 2023
Astatos - compymono
To the Crown Mages,

This update includes some minor tweaks and this month’s Hero Skin. In addition, we would like to announce the release date for the next major Astatos update, v0.7.


Astatos v0.7 - Journey to Irinipolis, is planned to be released on August 7th. This update features a complete revision of the Prologue (Ab Initio) and Chapter I of the story. Some highlights of the new update include:
  • All playable story sequences, with a brand new game mode.
  • New character sprites, backgrounds, and music.
  • Improved story scripting and text revisions.
  • Additional story scenes and over 20,000 words of new dialogue.
  • Plus many gameplay optimisations.
We would like to thank all the players who have been patiently waiting for more story content. We’re thankful that we have been able to take the time we needed to fulfil our original vision for the story mode gameplay, and believe this update will be a solid foundation for the production of more story content going forward.

For the detailed list of changes implemented with Astatos v0.6.7, please read on below.

- From the team at Studio Klondike

Game Changes


  • After player feedback we have optimised the appearance of the skin “Timaios - Seeker of Solitude”.

Game Content


  • Season III of the Takeover Trial leaderboard has concluded. The top 100 players will receive their player title upon the release of Astatos v0.7. We apologise for this delay!
  • A new Hero Skin has been made available as the monthly reward. The previous month’s Hero Skin has been added to the in-game store.
  • Nikos - The Shrouded Truth

This Grand Life 2 - PokingWaterGames
To qualify for certain activities in This Grand Life 2, you need to pass a threshold of accumulated experience and qualifications. I think the best way to explain how this works is with an example.



Let's say you want to become a Software Developer. To qualify for the position, you can either have 8000 programming XP (about 4 years full-time worth), a Computer Science degree or some combination of both.

You can gain programming XP by coding at home, which is free but takes longer than studying a degree at university (and also has different preferences).



If someone has both 8000 XP and a degree, then they would be 200% qualified for the job and more likely to be successful in a job interview.

The "value" of experience and qualifications decays very slowly each month. This means if you obtained your degree 5 years ago, it would only count about 70% towards becoming a Software Developer. You would have to make up for it with XP to reach the 100% threshold to be considered for the job.



You won't have to do the math yourself, it's all conveniently calculated and displayed in each character's statement and in tooltips.

A side effect of decaying experience is a career-focused character that works as much as possible will become qualified for their next promotion relatively faster than someone who works at a leisurely pace.

From a game design point of view, I can adjust the thresholds so some qualifications are absolutely required to reach 100% qualified for a job. For example, you must have a Doctor Of Medicine to become a General Practitioner.



The above image shows the most you can get from doctoring XP is 95% qualified. The other 5% must come from a medical degree. No one wants to be treated by someone who never graduated medical school!



The same system is applied to children going through school. If you neglect your child character's education and they don't gain enough schooling XP, they might be unable to complete their high school diploma by the time they reach adulthood.



It's not the end of the world though. Once that child becomes an adult, they can always take remedial education classes to make up for missing schooling XP and eventually complete a high school diploma.
Jul 31, 2023
Transparent Taskbar - chengcong
fix windows 11 bugs
...