From b86194551153ddbfe9cf70abc8b38d78fb31db28 Mon Sep 17 00:00:00 2001 From: mikx Date: Tue, 11 Feb 2025 16:04:10 -0500 Subject: [PATCH] 0.2.0 commit --- .gitignore | 261 ++++++++++++++++++ Content/Items/Materials/FrozenTablet.cs | 23 ++ Content/Items/Materials/FrozenTablet.png | Bin 0 -> 2854 bytes Content/Items/Materials/FrozenTablet.psd | Bin 0 -> 22612 bytes Content/Items/Materials/MoltenTablet.cs | 23 ++ Content/Items/Materials/MoltenTablet.png | Bin 0 -> 1919 bytes Content/Items/Materials/MoltenTablet.psd | Bin 0 -> 21610 bytes .../Items/Weapons/Boomrangs/MeteorHammer.cs | 47 ++++ .../Items/Weapons/Boomrangs/MeteorHammer.png | Bin 0 -> 501 bytes Content/Items/tMxSword.cs | 37 +++ Content/Items/tMxSword.png | Bin 0 -> 720 bytes Content/Projectiles/MeteorHammerProjectile.cs | 86 ++++++ .../Projectiles/MeteorHammerProjectile.png | Bin 0 -> 252 bytes Localization/en-US_Mods.tMx.hjson | 59 ++++ .../CleanResearched/CleanResearchedCommand.cs | 98 +++++++ NPCs/CustomLoot/FrozenTabletOnKill.cs | 35 +++ NPCs/CustomLoot/MoltenTabletOnKill.cs | 37 +++ Properties/launchSettings.json | 16 ++ README.md | 2 + Tweaks/Potion/NoPotionDelay.cs | 19 ++ Tweaks/Potion/PotionLength.cs | 22 ++ build.txt | 3 + description.txt | 1 + icon.png | Bin 0 -> 8280 bytes tMx.cs | 15 + tMx.csproj | 13 + tMx.sln | 22 ++ tMxConfigs.cs | 24 ++ 28 files changed, 843 insertions(+) create mode 100644 .gitignore create mode 100644 Content/Items/Materials/FrozenTablet.cs create mode 100644 Content/Items/Materials/FrozenTablet.png create mode 100644 Content/Items/Materials/FrozenTablet.psd create mode 100644 Content/Items/Materials/MoltenTablet.cs create mode 100644 Content/Items/Materials/MoltenTablet.png create mode 100644 Content/Items/Materials/MoltenTablet.psd create mode 100644 Content/Items/Weapons/Boomrangs/MeteorHammer.cs create mode 100644 Content/Items/Weapons/Boomrangs/MeteorHammer.png create mode 100644 Content/Items/tMxSword.cs create mode 100644 Content/Items/tMxSword.png create mode 100644 Content/Projectiles/MeteorHammerProjectile.cs create mode 100644 Content/Projectiles/MeteorHammerProjectile.png create mode 100644 Localization/en-US_Mods.tMx.hjson create mode 100644 Mechanics/CleanResearched/CleanResearchedCommand.cs create mode 100644 NPCs/CustomLoot/FrozenTabletOnKill.cs create mode 100644 NPCs/CustomLoot/MoltenTabletOnKill.cs create mode 100644 Properties/launchSettings.json create mode 100644 README.md create mode 100644 Tweaks/Potion/NoPotionDelay.cs create mode 100644 Tweaks/Potion/PotionLength.cs create mode 100644 build.txt create mode 100644 description.txt create mode 100644 icon.png create mode 100644 tMx.cs create mode 100644 tMx.csproj create mode 100644 tMx.sln create mode 100644 tMxConfigs.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c4efe2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,261 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc \ No newline at end of file diff --git a/Content/Items/Materials/FrozenTablet.cs b/Content/Items/Materials/FrozenTablet.cs new file mode 100644 index 0000000..1ea6ff2 --- /dev/null +++ b/Content/Items/Materials/FrozenTablet.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Terraria.ID; +using Terraria.ModLoader; +using Terraria; + +namespace tMx.Content.Items.Materials +{ + public class FrozenTablet : ModItem + { + public override void SetDefaults() + { + Item.ResearchUnlockCount = 666; + Item.value = Item.buyPrice(gold: 1); + Item.rare = ItemRarityID.Blue; + Item.material = true; + Item.maxStack = 666; + } + } +} diff --git a/Content/Items/Materials/FrozenTablet.png b/Content/Items/Materials/FrozenTablet.png new file mode 100644 index 0000000000000000000000000000000000000000..f04a248411d9248c29194ab6152d3bebd09138c8 GIT binary patch literal 2854 zcmcIm3vAS69PfC8BJ;%riIf5nkY3-tUgZR~8{2>zb30%VG>~ z1|lH~0?rsTM&w}vL5%WB1m{37ih{;hj1n{`8Ib4%AMxwm?KWX!3*sfcwqJkW@BjaP z|Ht>ODk&})I%MP!48w*N6^2UDeWZ5{8i4-am^u3+bQ^3HE^sjHmOH&G3)|du4;qW= zk#e^@JX==GxDTji6#5cz3!yP=%G87flq%@rQCOiHL85ivAp+OcATeJE(_t$QR_cZI zHY}?zjwtn2Nz6$cP{gU4SRzF~gA)K_ba3qi1iJBJd={tqKy;J%f08xCGBL zZHNm#kyIF7!uy$m|ue|j%|0$aZ6!`G`*OP;F-x*rRkbZrP+-Lna>$1 zEIH4Hz%}iNX~x>4T++^hvq&<0!hGFO&01%o=VE#S3;`Dg36^FBl4ePUiO{UfiZY90 zFUT~Vf`(BNslWx-fEhvN5sd#A*i?0`u1Bb<$eL-#0g_mcg9=DlMn%$EI4l<#jtdM0 z7KMTYa@D8ns;of(D^yXpnK%|W#F$f!g1&@+KZvwSqbkp2M5 zV^!c45=gwCWN3x=^BQWLjO3N4$7cT5p6TUKQie_kh4vwI`tTkz#~$>OIXFQB)vb+= zMW4LfT#jK`ONv6%BZaFDY}i$Nc-pPYpSr(re^y@q)^*Qr>-+ZM=9ZS@Wem&iUa@7; ztZ%c9eC+=zd+o9-=N7e&x_8|EP|o{pm)ly;QP;S*>5aq6yZ z4KvrB{l(b5w|-u~w;mZSw3v(M<_j(M-F*4iIe}p(8|iW5A8dRLYz^m_&AS%$kDdOs z;n3bWSVQ0S%U`{iJ9GYOwt;!~%U^%HvgX6>U+vj&ZppFcF(sE)nwRpL_AF>C*m-R3 z!bWB#zi~&?sS68-zmgC($$h2`FMo0_euOyl+0nI;VBgygj%dur*5pYOMy|jvzjU&3 z#29Spif>NL+0qgnRu<%P3w?W@-*#@(z&;Z`c;>>6-`O0z;Kf-FO#boV+s`gbOdGY! zZTeh%fqA^K;^vjCaXoX5BC3lz+dAJX04a0(@WpmeBL|B7UdU*-ppP6^go3# BzQX_j literal 0 HcmV?d00001 diff --git a/Content/Items/Materials/FrozenTablet.psd b/Content/Items/Materials/FrozenTablet.psd new file mode 100644 index 0000000000000000000000000000000000000000..4ebec7031a10c4a31341f9076c05b6cae0492a13 GIT binary patch literal 22612 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 literal 0 HcmV?d00001 diff --git a/Content/Items/Materials/MoltenTablet.cs b/Content/Items/Materials/MoltenTablet.cs new file mode 100644 index 0000000..9ccafaf --- /dev/null +++ b/Content/Items/Materials/MoltenTablet.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Terraria.ID; +using Terraria.ModLoader; +using Terraria; + +namespace tMx.Content.Items.Materials +{ + public class MoltenTablet : ModItem + { + public override void SetDefaults() + { + Item.ResearchUnlockCount = 666; + Item.value = Item.buyPrice(gold: 1); + Item.rare = ItemRarityID.Red; + Item.material = true; + Item.maxStack = 666; + } + } +} diff --git a/Content/Items/Materials/MoltenTablet.png b/Content/Items/Materials/MoltenTablet.png new file mode 100644 index 0000000000000000000000000000000000000000..6366ca71d663ac244dfab2729fcb527d202c473d GIT binary patch literal 1919 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 + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + public override void AddRecipes() + { + Recipe recipe = CreateRecipe(); + recipe.AddIngredient(ItemID.DirtBlock, 10); + recipe.AddTile(TileID.WorkBenches); + recipe.Register(); + } + public override bool CanUseItem(Player player) //this make that you can shoot only 1 boomerang at once + { + for (int i = 0; i < 1000; ++i) + { + if (Main.projectile[i].active && Main.projectile[i].owner == Main.myPlayer && Main.projectile[i].type == Item.shoot) + { + return false; + } + } + return true; + } + } +} diff --git a/Content/Items/Weapons/Boomrangs/MeteorHammer.png b/Content/Items/Weapons/Boomrangs/MeteorHammer.png new file mode 100644 index 0000000000000000000000000000000000000000..00bb350a895a2a3728b9e3a0c5b05e34bbbad902 GIT binary patch literal 501 zcmVPx$uSrBfR9HvNSFuV1K@{{p!H`00QGz7t(xtbGl?wiVg$RQ7LaaqFh=mANBB)q+ zmHl;xAW4v*AD~tI1cfIP+;Jc8PS3kbbJ@-9?aaJ+bDLl)n(g6SyD1mVl zM)LLT^*xaSSdW}wFQ^LS4gedX6f?8a-e|X&^CHU&Y8T`VKrT rYo56Rg#lnMV9ZHpdFt05$O^zG{*&Y|9>;<^00000NkvXXu0mjf2xsJo literal 0 HcmV?d00001 diff --git a/Content/Items/tMxSword.cs b/Content/Items/tMxSword.cs new file mode 100644 index 0000000..f98cca7 --- /dev/null +++ b/Content/Items/tMxSword.cs @@ -0,0 +1,37 @@ +using Terraria; +using Terraria.ID; +using Terraria.ModLoader; + +namespace tMx.Content.Items +{ + // This is a basic item template. + // Please see tModLoader's ExampleMod for every other example: + // https://github.com/tModLoader/tModLoader/tree/stable/ExampleMod + public class tMxSword : ModItem + { + // The Display Name and Tooltip of this item can be edited in the 'Localization/en-US_Mods.tMx.hjson' file. + public override void SetDefaults() + { + Item.damage = 50; + Item.DamageType = DamageClass.Melee; + Item.width = 40; + Item.height = 40; + Item.useTime = 20; + Item.useAnimation = 20; + Item.useStyle = ItemUseStyleID.Swing; + Item.knockBack = 6; + Item.value = Item.buyPrice(silver: 1); + Item.rare = ItemRarityID.Blue; + Item.UseSound = SoundID.Item1; + Item.autoReuse = true; + } + + public override void AddRecipes() + { + Recipe recipe = CreateRecipe(); + recipe.AddIngredient(ItemID.DirtBlock, 10); + recipe.AddTile(TileID.WorkBenches); + recipe.Register(); + } + } +} diff --git a/Content/Items/tMxSword.png b/Content/Items/tMxSword.png new file mode 100644 index 0000000000000000000000000000000000000000..b54922e201fda026ad0836235008ead16aebac92 GIT binary patch literal 720 zcmV;>0x$iEP)Px%ib+I4R9J=Om_29{VH}5_6L;lIOKUTPei54(irT@FQOOjMqT=KrMJPx+h=YTQ zU0igq6bcSH38Ermrh;RsL;WaeT0^ZRg~W)_^8;+hI2?b%`zEJpa>hG-ra<2N;NkcG zNDTfG`(sG}g58|}PaOl`>iA6ng58}4Kz_XlfMxl_plcbF332dn6o5jmpqRUH_nv(&YEKX`7a8m~ z0G1b50a!|>l>7es2AyWBOo*k7ZDzaX1pgZpLryrElRl?cYrWXSl{U;dKG#OWhI^`5scHedj}Nw2u_g5Ec1eJ%lDwwne(VZ*LwF*G_du3RvY zv@<8>biP|Zfad$3;C+KzTbpHo!p0_0sY<;X^=j3#s_%Pl;dz6GX~vYy&E9_ofZ1ke z(kfXs|2vjymCOl^ZY@su$6&4R>bZei)#`-j4gLfq@C%kY4i1 1, penetrate == -1, or (appliesImmunityTimeOnSingleHits && penetrate == 1): npc.immune[owner] will be set to 10. + // The NPC will be hit if not immune and will become immune to all damage for 10 ticks + // Ex: Unholy Arrow + // 3. Override OnHitNPC: If not immune, when it hits it manually set an immune other than 10 + // Ex: Arkhalis: Sets it to 5 + // Ex: Sharknado Minion: Sets to 20 + // Video: https://media-1.discordapp.net/attachments/242228770855976960/1150275205017636995/Projectile_Immunity_Sharknado_Arkhalis_Example.mp4 Notice how Sharknado minion hits prevent Arkhalis hits for a brief moment. + // 4. Projectile.usesIDStaticNPCImmunity and Projectile.idStaticNPCHitCooldown: Specifies that a type of projectile has a shared immunity timer for each npc. + // Use this if you want other projectiles a chance to damage, but don't want the same projectile type to hit an npc rapidly. + // Ex: Ghastly Glaive is the only one who uses this. + // 5. Projectile.usesLocalNPCImmunity and Projectile.localNPCHitCooldown: Specifies the projectile manages it's own immunity timers for each npc + // Use this if you want the multiple projectiles of the same type to have a chance to attack rapidly, but don't want a single projectile to hit rapidly. A -1 value prevents the same projectile from ever hitting the npc again. + // Ex: Lightning Aura sentries use this. (localNPCHitCooldown = 3, but other code controls how fast the projectile itself hits) + // Overlapping Auras all have a chance to hit after each other even though they share the same ID. + // Try the above by uncommenting out the respective bits of code in the projectile below. + + // This is a simple item that is based on the FlintlockPistol and shoots ExamplePiercingProjectile to showcase it. + internal class MeteorHammerProjectile : ModProjectile + { + public override void SetDefaults() + { + Projectile.width = 8; // The width of projectile hitbox + Projectile.height = 8; // The height of projectile hitbox + Projectile.aiStyle = 1; // The ai style of the projectile, please reference the source code of Terraria + Projectile.friendly = true; // Can the projectile deal damage to enemies? + Projectile.hostile = false; // Can the projectile deal damage to the player? + Projectile.DamageType = DamageClass.Melee; // Is the projectile shoot by a ranged weapon? + Projectile.penetrate = 0; // How many monsters the projectile can penetrate. (OnTileCollide below also decrements penetrate for bounces as well) + Projectile.timeLeft = 60; // The live time for the projectile (60 = 1 second, so 600 is 10 seconds) + Projectile.alpha = 5; // The transparency of the projectile, 255 for completely transparent. (aiStyle 1 quickly fades the projectile in) Make sure to delete this if you aren't using an aiStyle that fades in. You'll wonder why your projectile is invisible. + Projectile.light = 10.0f; // How much light emit around the projectile + Projectile.ignoreWater = true; // Does the projectile's speed be influenced by water? + Projectile.tileCollide = true; // Can the projectile collide with tiles? + Projectile.extraUpdates = 1; // Set to above 0 if you want the projectile to update multiple time in a frame + } + + public override bool OnTileCollide(Vector2 oldVelocity) + { + // If collide with tile, reduce the penetrate. + // So the projectile can reflect at most 5 times + Projectile.penetrate--; + if (Projectile.penetrate <= 0) + { + Projectile.Kill(); + } + else + { + Collision.HitTiles(Projectile.position, Projectile.velocity, Projectile.width, Projectile.height); + SoundEngine.PlaySound(SoundID.Item10, Projectile.position); + + // If the projectile hits the left or right side of the tile, reverse the X velocity + if (Math.Abs(Projectile.velocity.X - oldVelocity.X) > float.Epsilon) + { + Projectile.velocity.X = -oldVelocity.X; + } + + // If the projectile hits the top or bottom side of the tile, reverse the Y velocity + if (Math.Abs(Projectile.velocity.Y - oldVelocity.Y) > float.Epsilon) + { + Projectile.velocity.Y = -oldVelocity.Y; + } + } + + return false; + } + } +} diff --git a/Content/Projectiles/MeteorHammerProjectile.png b/Content/Projectiles/MeteorHammerProjectile.png new file mode 100644 index 0000000000000000000000000000000000000000..c0208fefc92711e5f065477f1bd4037dc9144fa4 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}Y)RhkE)4%c zaKYZ?lYt_f1s;*b3=G`DAk4@xYmNj^kiEpy*OmP~hlnVzAgjxUa-fiGW=KSdbAE1a zYF-JD%fR4Vl$uzQnxasiS(2gP?&%wlqL<1J6c6@vaSYKopPbUbq^YUN1_W)A#%X`j z9hf8~C3|>);QTz>%`(O`1J$GNlG$TH_IkSdxvX CommandType.Chat; + + public override string Command + => "tmx"; + + public override string Description + => "Clean all researched objects from inventory and your hotbar."; + + public override void Action(CommandCaller caller, string input, string[] args) + { + tMxConfigs config = ModContent.GetInstance(); + Player p = caller.Player; + int pic = 0; + + if (args.Length == 0) + { + Main.NewText($"[tMx] You must specify an argument.", Color.Red); + Main.NewText($"[tMx] /tmx clean - Clean your inventory and your hotbar of any fully searched item(s).", Color.Red); + } + if (args.Contains("clean")) + { + List piggy = new List(); + foreach (Item i in p.bank.item) + { + if (i.type != ItemID.None) + { + piggy.Add(i.type); + } + } + // Clean the inventory of any fully researched item(s) + int ic = 0; + for (int index = 10; index < 50; index++) + { + Item i = p.inventory[index]; + if (Main.LocalPlayerCreativeTracker.ItemSacrifices.TryGetSacrificeNumbers(i.type, out var amountWeHave, out var amountNeededTotal) && amountWeHave >= amountNeededTotal + && !i.potion + && !piggy.Contains(i.type)) + { + ic++; + p.inventory[index].TurnToAir(); + } else if (piggy.Contains(i.type) && config.CleanResearchedPiggyProtect) + { + pic++; + } + } + Main.NewText($"[tMx] Cleaned {ic} item(s) from your inventory.", Color.Brown); + + // Clean the hotbar of any fully researched item(s) + int ichot = 0; + for (int indexhot = 0; indexhot < 10; indexhot++) + { + Item i = p.inventory[indexhot]; + if (Main.LocalPlayerCreativeTracker.ItemSacrifices.TryGetSacrificeNumbers(i.type, out var amountWeHave, out var amountNeededTotal) + && amountWeHave >= amountNeededTotal + && !i.potion + && !i.GetPrefixCategories().Contains(PrefixCategory.Accessory) + && !i.GetPrefixCategories().Contains(PrefixCategory.AnyWeapon) + && i.type != ItemID.Torch + && i.type != ItemID.FallenStar + && !piggy.Contains(i.type)) + { + ichot++; + p.inventory[indexhot].TurnToAir(); + } else if (piggy.Contains(i.type) && config.CleanResearchedPiggyProtect) + { + pic++; + } + } + Main.NewText($"[tMx] Cleaned {ichot} item(s) from your hotbar.", Color.Brown); + if (pic == 1) + { + Main.NewText($"[tMx] {pic} item was protected for being in your piggy bank.", Color.Brown); + } else if (pic > 1) + { + Main.NewText($"[tMx] {pic} items were protected for being in your piggy bank.", Color.Brown); + } + ic = 0; + ichot = 0; + } + } + } +} diff --git a/NPCs/CustomLoot/FrozenTabletOnKill.cs b/NPCs/CustomLoot/FrozenTabletOnKill.cs new file mode 100644 index 0000000..f01aff3 --- /dev/null +++ b/NPCs/CustomLoot/FrozenTabletOnKill.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Terraria.ID; +using Terraria.ModLoader; +using Terraria; +using Terraria.ModLoader.IO; +using static Terraria.GameContent.Bestiary.IL_BestiaryDatabaseNPCsPopulator.CommonTags.SpawnConditions; +using Microsoft.Xna.Framework; + +namespace tMx.NPCs.CustomLoot +{ + public class FrozenTabletOnKill : GlobalNPC + { + public override void OnKill(NPC npc) + { + if (Main.rand.NextBool(3)) // ~33% + { + if (npc.type == NPCID.IceSlime + || npc.type == NPCID.IceBat) + { + int dropItemType = ModContent.ItemType(); + int newItem = Item.NewItem(npc.GetSource_FromThis(), npc.Hitbox, dropItemType); + + if (Main.netMode == NetmodeID.MultiplayerClient && newItem >= 0) + { + NetMessage.SendData(MessageID.SyncItem, -1, -1, null, newItem, 1f); + } + } + } + } + } +} diff --git a/NPCs/CustomLoot/MoltenTabletOnKill.cs b/NPCs/CustomLoot/MoltenTabletOnKill.cs new file mode 100644 index 0000000..52cecef --- /dev/null +++ b/NPCs/CustomLoot/MoltenTabletOnKill.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Terraria.ID; +using Terraria.ModLoader; +using Terraria; +using Terraria.ModLoader.IO; +using static Terraria.GameContent.Bestiary.IL_BestiaryDatabaseNPCsPopulator.CommonTags.SpawnConditions; +using Microsoft.Xna.Framework; + +namespace tMx.NPCs.CustomLoot +{ + public class MoltenTabletOnKill : GlobalNPC + { + public override void OnKill(NPC npc) + { + if (Main.rand.NextBool(3)) // ~33% + { + if (npc.type == NPCID.Hellbat + || npc.type == NPCID.Lavabat + || npc.type == NPCID.LavaSlime + || npc.type == NPCID.FireImp) + { + int dropItemType = ModContent.ItemType(); + int newItem = Item.NewItem(npc.GetSource_FromThis(), npc.Hitbox, dropItemType); + + if (Main.netMode == NetmodeID.MultiplayerClient && newItem >= 0) + { + NetMessage.SendData(MessageID.SyncItem, -1, -1, null, newItem, 1f); + } + } + } + } + } +} diff --git a/Properties/launchSettings.json b/Properties/launchSettings.json new file mode 100644 index 0000000..5aa5d42 --- /dev/null +++ b/Properties/launchSettings.json @@ -0,0 +1,16 @@ +{ + "profiles": { + "Terraria": { + "commandName": "Executable", + "executablePath": "$(DotNetName)", + "commandLineArgs": "$(tMLPath)", + "workingDirectory": "$(tMLSteamPath)" + }, + "TerrariaServer": { + "commandName": "Executable", + "executablePath": "$(DotNetName)", + "commandLineArgs": "$(tMLServerPath)", + "workingDirectory": "$(tMLSteamPath)" + } + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a3de293 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +## tMx + tMx is my official tModLoader mod containing all my modifications. \ No newline at end of file diff --git a/Tweaks/Potion/NoPotionDelay.cs b/Tweaks/Potion/NoPotionDelay.cs new file mode 100644 index 0000000..b31d4ea --- /dev/null +++ b/Tweaks/Potion/NoPotionDelay.cs @@ -0,0 +1,19 @@ +using Terraria; +using Terraria.ModLoader; + +namespace tMx.Tweaks.Potion +{ + public class NoPotionDelay : GlobalItem + { + public override void OnConsumeItem(Item item, Player player) + { + tMxConfigs config = ModContent.GetInstance(); + if (item.potion && config.NoPotionDelay) + { + player.ClearBuff(21); + player.potionDelay = 0; + player.potionDelayTime = 0; + } + } + } +} diff --git a/Tweaks/Potion/PotionLength.cs b/Tweaks/Potion/PotionLength.cs new file mode 100644 index 0000000..a89b1a4 --- /dev/null +++ b/Tweaks/Potion/PotionLength.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Terraria.ModLoader; +using Terraria; + +namespace tMx.Tweaks.Potion +{ + internal class PotionLength : GlobalItem + { + public override void OnConsumeItem(Item item, Player player) + { + tMxConfigs config = ModContent.GetInstance(); + if (item.potion) + { + + } + } + } +} diff --git a/build.txt b/build.txt new file mode 100644 index 0000000..6b5cf80 --- /dev/null +++ b/build.txt @@ -0,0 +1,3 @@ +displayName = tMx +author = mikx +version = 0.2.0 \ No newline at end of file diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..7529ca2 --- /dev/null +++ b/description.txt @@ -0,0 +1 @@ +tMx Server Official Mod \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd3990134085f22ddc2e4cba93e42e7d15891de GIT binary patch literal 8280 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 + + + + + + + + + + + + \ No newline at end of file diff --git a/tMx.sln b/tMx.sln new file mode 100644 index 0000000..b071b49 --- /dev/null +++ b/tMx.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35707.178 d17.12 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "tMx", "tMx.csproj", "{3A853CE7-F5D2-49BC-AD7E-2DBD49701C8B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3A853CE7-F5D2-49BC-AD7E-2DBD49701C8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3A853CE7-F5D2-49BC-AD7E-2DBD49701C8B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A853CE7-F5D2-49BC-AD7E-2DBD49701C8B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3A853CE7-F5D2-49BC-AD7E-2DBD49701C8B}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/tMxConfigs.cs b/tMxConfigs.cs new file mode 100644 index 0000000..abbcc64 --- /dev/null +++ b/tMxConfigs.cs @@ -0,0 +1,24 @@ +using System.ComponentModel; +using Terraria.ModLoader.Config; + +namespace tMx +{ + public class tMxConfigs : ModConfig + { + [Header("Tweaks")] + + [Label("No Potions Delay")] + [Tooltip("No delay between healing/mana potions use. Debuff = Off")] + [DefaultValue(false)] + public bool NoPotionDelay; + + [Header("Mechanics")] + + [Label("Protect item(s) from pig.")] + [Tooltip("The clean command will not delete researched item(s) present in your piggy bank.")] + [DefaultValue(false)] + public bool CleanResearchedPiggyProtect; + + public override ConfigScope Mode => (ConfigScope)0; + } +} \ No newline at end of file