Terraria: Prepare To Die Edition

Faestus

Terrarian
If you're like me, you think Terraria is way to easy, that bosses deal too little damage and that monsters become really obsolete later on, and don't pose much of a threat anyway!
Well fear not, because I have the solution!

Terraria: Prepare To Die Edition
What this mod does is simple:
  • All non-Boss Monsters will now now have randomly assigned Attack Damage, Life, Defense and Knockback Resistance.
  • Monsters will have their total stats multiplied by a percentage, which is divided into two ratings: attack rating and defense rating
  • The higher the defense rating of a monster, the lower it's attack rating will be
  • Monster stats are multiplied by the attack and defense rating
  • The attack rating affects knockback and damage, and the defense rating affects Life and Defense
  • The scale of the monsters depends on the Defense and Offense rating combined
  • All monsters will have base stats, and their attacks or defenses cannot go to 0
  • Bosses After hardmode have double melee damage
Known "issues":
  • Green Slimes are not affected by stat changes.
  • However the Eater of the Worlds is
  • Certain summons/minions are also affected by these changes. This includes: Brain Minions, Queen Bee's Bees, Wall of Flesh minions.
Other than that, the game should be compatible with other mods. Enjoy!

Download:
!! PLEASE READ !! - Installation
-tAPI version is for tAPI 1.2.2 version of Terraria.
-If you want if you want to play the latest version (1.2.4.1), download the executable and place it in your Terraria folder (don't replace original).

Original Edition
-Monsters Attack and Defense Rating combined cannot go bellow 75% and above 300%
-This means you will encounter monsters with between 75% of their original stats and 300%
-Exe: http://www.mediafire.com/download/jjmkjeajp32r1cd/Terraria.PTD.o.exe
-tAPI: http://www.mediafire.com/download/59pa4jcva67ib4o/Original.tapi

Easy Edition
-Monsters Attack and Defense Rating combined cannot go bellow 50% and above 200%
-Exe: http://www.mediafire.com/download/yjdge8s2dtghan2/Terraria.PTD.e.exe
-tAPI: http://www.mediafire.com/download/t6a2psh2nq6ky8d/easy.tapi

Insane Edition
-Monsters Attack and Defense Rating combined cannot go bellow 1% and above 999%
-Exe: http://www.mediafire.com/download/9k55545egq9ccr4/Terraria.PTD.i.exe
-tAPI: http://www.mediafire.com/download/fsynb876vymf568/Insane.tapi
 
A nice, simple mod that is sure to spice up things!

However I must mention, tAPI supports mod options & automatic syncing of those from servers to clients, you can pack all three editions as 1 pack with the mod option to choose the difficulty~ (or even make it work with the built in sliders so players can adjust it to their liking!)
 
However I must mention, tAPI supports mod options & automatic syncing of those from servers to clients, you can pack all three editions as 1 pack with the mod option to choose the difficulty~ (or even make it work with the built in sliders so players can adjust it to their liking!)
Is there a place I can read more on that?
 
Is there a place I can read more on that?
Now that I think about it, not really, so I'll give a quick example...

  1. Start by making a "ModOptions.json" file in your mod's root folder (near modinfo.json)
  2. In it, start a JsonData array called "options", and open its brackets
  3. The "options" array takes jsondatas with numerous properties such as
  • "name" - string, the internal name of your mod option
  • "displayName" - string, the display name in the mod options menu
  • "type" - string, here you you can only use the following strings: "String", "Integer", "Float", "Keybinding", "List", "Boolean", "Dynamic". (which determine the type of the option)
  • "notify" - bool, this determines if your mod would get a hook call for 'option changed' when starting up the mod
  • "notifyOnChange" - bool, this determines if your mod would get a hook call for 'option changed' when changing the option
  • "sync" - bool, determines if servers override the client's value when the client joins
  • "default" - here you just type a value of your option's type which will be the starting value.
Here's a rough example of an option in one of my mods (I didn't ever release)
Code:
{
  "options":
  [
  {
  "name": "wireMenu",
  "displayName": "Rewire HUD",
  "type": "Keybinding",
  "notify": true,
  "notifyOnChange": true,
       "sync": false,
       "default": "C"
  }
  ]
}

After that we're moving to CS stuff, so make / open your MBase.cs (modbase) and add the following hook to it
Code:
     public override void OptionChanged(Option option)
     {
     }
  • This hook lets you check which option in your mod gets changed assuming notify / notifyOnChange are true
  • I suggest you put them both to true, and whenever your mod option changes , adjust a value that flicks the difficulty up or down as you wish
(here's an example related to my json example)
Code:
     public override void OptionChanged(Option option)
     {
       if (option.name == "wireMenu")
         wireMenuKey = (Keys)option.Value;
     }

This is basically it , you can use any option type you wish and experiment with it, I think using an integer or list option would be best for your mod.

(including an example from another mod for reference)
Code:
{
  "options": [
  {
  "name": "selectedColor",
  "displayName": "Character Aura",
  "type": "List",
  "notify": true,
  "sync": true,
  "list": [
  "White",
  "Green",
  "Yellow",
  "Red",
  "Blue"
  ]
  }
  ]
}
+
Code:
     public override void OptionChanged(Option option)
     {
       if (option.name == "selectedColor")
       {
       string col = (string)option.Value;
       switch (col)
       {
         case "White":
      
         .............you get the idea


Good luck & Happy modding!
 
Sometimes I think to myself. I would like to make a mod, Something that was either useful or just an add on that would be fun. But then I see what you post Yoraiz0r. I'm 26 and with no coding experience. Its like a foreign language. Where do you even begin haha
 
This looks like it would be awesome to try out for some extra challenge.
I think it would be interesting to add a variation of the amount of money dropped according to how much stronger or weaker an enemy is. You could also consider adding a feature which makes it so that stronger enemies have a higher chance of dropping rare items. Example: Skeleton Commando with 200% original stats has 10% chance of dropping the rocket launcher instead of 5%.
I have no idea of how difficult it would be to implement these, but I'm sure that if you have any trouble you can ask around.
 
Sometimes I think to myself. I would like to make a mod, Something that was either useful or just an add on that would be fun. But then I see what you post Yoraiz0r. I'm 26 and with no coding experience. Its like a foreign language. Where do you even begin haha
When I started, I had 0 experience too. I just started modding a game and learn on my own. No tutorials until I started making games in Flash...
This looks like it would be awesome to try out for some extra challenge.
I think it would be interesting to add a variation of the amount of money dropped according to how much stronger or weaker an enemy is. You could also consider adding a feature which makes it so that stronger enemies have a higher chance of dropping rare items. Example: Skeleton Commando with 200% original stats has 10% chance of dropping the rocket launcher instead of 5%.
I have no idea of how difficult it would be to implement these, but I'm sure that if you have any trouble you can ask around.

Isn't that what "Monster.value" does?
 
When I started, I had 0 experience too. I just started modding a game and learn on my own. No tutorials until I started making games in Flash...


Isn't that what "Monster.value" does?
For money drop, yup!
You can modify it with 'public override bool PreNPCLoot() { return true; }'.

For the actual item drops, I'm afraid you're out of luck unless you want to make it call NPC Loot twice for a total double chance...
The drop randoms are hardcoded =P
 
Isn't that what "Monster.value" does?
The only thing I know is that value is a float which tells you how much an enemy drops or alternatively how much an item would be sold for by an NPC.
So if you had:
value = 12345678f;
Then that enemy would drop 12 Platinum Coins, 34 Gold Coins, 56 Silver Coins and 78 Copper Coins.
 
Loved it! I gonna try right now, and hey, what about some sugestions?

"Normal" Suggestions
Note: I think you can make this things with buffs upon respawn

*When you die, you cannot recover health from potions, nurse, etc (5 Minutes Pre-Hardmode) 10 minutes (Post-Hardmode).
*When you die, you lose you recovering rate for 1 Minutes (Pre-Hardmode) 3 minutes(Post-Hardmode).
*When you die, you lose 20 mana permantently (Pre-Hardmode) 40 (Post-Hardmode).
*When you die FROM FALL DAMAGE, you lose 50% of your movespeed and jump height. 10 Minutes.
*When you die DROWNING, you lose 50% of your defense. 10 Minutes.

Insane Sugestions

*Double the spawn rate of ores/trees, but also double the time needed for mine/cut down trees.
*The mobs should have increased drop rates, based on their "Level".
*Npcs need better houses, with more furniture, etc.
*Make the Grappling Hook harder to get!
*When you die, you lose ALL of your coins.

If you like, later i can post some more suggestions :)
For a better and hardcore terraria!
 
So basically it only changes the stats of monsters? can be solved by kiting, and that isn't hard in Terraria.
What you should do (if you can) is make the mobs smarter or have new attack patterns rather then just buffing their stats.

But still, you did a pretty good job there, and the mod is great if you don't want the game to be too challenging! ^^
 
"type" - string, here you you can only use the following strings: "String", "Integer", "Float", "Keybinding", "List", "Boolean", "Dynamic". (which determine the type of the option)
If I want to make a float/int, can I set the max value one can modify?
 
If I want to make a float/int, can I set the max value one can modify?
yup , you can add a "minimum": something, and a "maximum": something, in your option and these would be the limits.
Also , for floats there's "step": something, which controls how much up or down the value goes per ticking in the options menu , and "precision": something, which you can use to set the amount of fractional digits displayed in the options menu for that option.

so to speak of an example...
Code:
"minimum": 0,
"maximum": 5.5,
"step": 0.25,
"precision": 2,
 
Really can't get this mod to work. I am putting the exe file in the steam terraria folder, launching the game from steam but the mobs are just regular vanilla mobs. Am I putting it in the wrong spot ?
 
Last edited:
*gets pummeled by Smough's hammer*

DAMNIT!

That reference aside , awesome work!

Terraria with a touch of souls. All that's needed now is monsters teleporting behind you and stabbing you to death , spamming spells (Bloody WotG) and the ever-so obvious "YOU DIED" message.
 
Back
Top Bottom