A question about TCC Reboot v2.04


#21

fixed bonus spellslots (Cleric) in the repo

@Aqvilinus - reagent lists are also case sensitive, with caps coming before lowercase


#22

Missing comma:

tcc_bug2

“NW_IT_GEM002cft_ess_water2” -> “NW_IT_GEM002,cft_ess_water2”


#23

thanks


#24

row #73 - ip #90 DamageReduction - iirc DR is bugged when applied as an itemproperty in Nwn2 (it works as an effect on a character, though, and might work if/when set directly on a blueprint)

/note

Edit - found this note in my notes

case ITEM_PROPERTY_DAMAGE_REDUCTION:                                    // 22 - JLR-OEI 04/03/06: NOW it is 85 (old one is deprecated!)
    ipRet = ItemPropertyDamageReduction(iPar1, iPar2, iPar3, iPar4);    // kevL: NOW it is 90!!! No it's not: in fact, itemproperty DamageReduction
    break;                                                              // cannot be scripted at all; it can be added in the toolset only.

#25

I just downloaded the latest crafting.2da and that fixed it. Thanks very much.


#26

Those recipes from the original game are missing in TCC:

Shadowy Armor: +5 competence bonus on Hide checks
Requires: Caster Level 5, Craft Magic Arms and Armor feat
Ingredients: Faint Water Essence + Fire Opal
Spell: Invisibility

Shadowy Armor (Improved): +10 competence bonus on Hide checks
Requires: Caster Level 10, Craft Magic Arms and Armor feat
Ingredients: Weak Water Essence + Star Sapphire
Spell: Invisibility

Shadowy Armor (Greater): +15 competence bonus on Hide checks
Requires: Caster Level 15, Craft Magic Arms and Armor feat
Ingredients: Glowing Water Essence + Blue Diamond
Spell: Invisibility

Silent Armor: +5 competence bonus on Move Silently checks
Requires: Caster Level 5, Craft Magic Arms and Armor feat
Ingredients: Faint Water Essence + Fire Opal
Spell: Silence

Silent Armor (Improved): +10 competence bonus on Move Silently checks
Requires: Caster Level 10, Craft Magic Arms and Armor feat
Ingredients: Weak Water Essence + Star Sapphire
Spell: Silence

Silent Armor (Greater): +15 competence bonus on Move Silently checks
Requires: Caster Level 15, Craft Magic Arms and Armor feat
Ingredients: Glowing Water Essence + Blue Diamond
Spell: Silence

TCC adds its own +skill enhancements (+4, +8, +12). So either remove the recipes above from recipe books and the text file with the list of all recipes OR return them back.


UPD: This recipe is labeled as a general on-hit property (ID 48) in the text file, but it’s actually a on-hit cast ‘Poison’ spell property (ID 82) with CL 4 (Large Scorpion Venom: 1d4 Con damage on primary and secondary hit, DC 14).

Poisoned Weapon: Poison (DC 14, 1d2 Con Damage)
Requires: Caster Level 10, Craft Magic Arms and Armor feat
Ingredients: Weak Earth Essence + Emerald
Spell: Poison


Slaying Weapon (Undead): Slay Undead (DC 14)
Requires: Caster Level 14, Craft Magic Arms and Armor feat
Ingredients: Glowing Water Essence + Glowing Power Essence + Jacinth
Spell: Undeath to Death

^ This recipe from the original game is still in crafting.2da, but not in the text file.

Should it be removed? Because TCC offers an ‘upgraded’ version of this enhancement:

Slaying Weapon (Undead): Slay Undead (DC 20)
Requires: Caster Level 18, Craft Magic Arms and Armor feat
Ingredients: Radiant Earth Essence + Radiant Fire Essence +
Radiant Power Essence + Radiant Water Essence + Rogue Stone
Spell: Undeath to Death


#27

The Spirit Shaman and Favored Soul don’t have Bonus Spell Slot enhancements (id 13).

13,55,1,0,0
13,55,2,0,0
13,55,3,0,0
13,55,4,0,0
13,55,5,0,0
13,58,1,0,0
13,58,2,0,0
13,58,3,0,0
13,58,4,0,0
13,58,5,0,0

The same with limitation enhancements for these classes (id 63):

63,55,0,0,0
63,58,0,0,0


An incorrect output blueprint (should be nw_wammbo001 instead of nw_wammbo002):


#28

Your forgot to add the following entries to crafting.2da:

CATEGORY REAGENTS TAGS EFFECTS OUTPUT SKILL LEVEL EXCLUDE XP GP DISABLE
n2_crft_mold_tcc_gloves “N2_CRFT_DIST037,N2_CRFT_DIST037,n2_crft_mold_tcc_gloves” 0 **** tcc_gloves_wwf_001 25 13 **** 0 0 0
n2_crft_mold_tcc_gloves “n2_crft_hidesalam,n2_crft_hidesalam,n2_crft_mold_tcc_gloves” 0 **** tcc_gloves_sal_001 25 13 **** 0 0 0
n2_crft_mold_tcc_rnsl “n2_crft_hideleather,n2_crft_mold_tcc_rnsl” 0 **** nw_wbwsl001 26 2 **** 0 0 0
n2_crft_mold_tcc_rnsl “N2_CRFT_DIST037,n2_crft_mold_tcc_rnsl” 0 **** tcc_rnsl_wwf_001 26 14 **** 0 0 0
n2_crft_mold_tcc_rnsl “n2_crft_hidesalam,n2_crft_mold_tcc_rnsl” 0 **** tcc_rnsl_sal_001 26 17 **** 0 0 0

#29

As I work through these, some responses:

  1. Slay Living enhancements - I’ll put those in. Saving for later because when you add or remove recipes you have to renumber the 2DA and that generates painful diffs for all involved.
  2. I am still unsure about the Unlimited Ammo enhancements. WHat happens when you use them with magical ammunition? The damage bonuses should not stack. Can someone confirm this?
  3. Gnarlthorn’s Essence: Since this item cannot be found ingame, I don’t know where the Natures Rage recipes come from. I would be in favour of deleting them.
  4. You have correctly pointed out that for Level 4 OnHit Divine Spells, the Armor versions are using Air instead of Earth essences. I will fix this.
  5. “Completely Useless enhancements that should be removed” - actually these are mistakes. They should be the “Shield of Faith” version of the “Mage Armor” spells, which grant Deflection bonuses to Glvoes and Weapons. Their Tags should be 11,1, and not 2. I will fix.
  6. Becoming compatible with Kaedrin’s PrC pack sounds like it could be trickier than you suggest but worth investigating.
  7. “Weirdness with encoded IPs” - those are special-case recipes for set creation. Those Effects are caught and diverted from the usual behaviour by the script.

More to come.


#30

Yes, Kaedrin also changed baseitems.2da (added spiked/bladed gloves and switched stats for light and heavy flails). In ginc_crafting.nss he added ability to create several ammo stacks (see CreateListOfItemsInInventory()):

Row 6 AmmoStacksToCreate 1

This option defaults to 1.
The PnP compliant version is 1.
The valid ranges of this option are 1 to 5.

This option allows for more than stack of ammo to be crafted per attempt.

http://nwn2customcontent.wikidot.com/cmi-options-documentation

  • Light Flail is now a Heavy Flail, damage increased to d10, description updated.

http://nwn2customcontent.wikidot.com/update-history-and-documentation

Besides from that, there’s no other changes.

Ahh, he also changed itemprops.2da to enable some enhancements for ranged weapons:

Bows, Crossbows, Darts, Shurikens, and Throwing Axes can now be enchanted with the following properties (their recipes are the same as for melee weapons): Damage Bonus (all flavors), Enhance Bonus (all flavors), Keen, Holy Avenger, and Visual Effect.

http://nwn2customcontent.wikidot.com/crafting

I thought so, but decided to write about it just in case.


#31

I know adding compatibility with Kaedrin’s PrC Pack isn’t the top priority. But I just doing it for sport.

Updated CreateListOfItemsInInventory():

// Creates the items of sResrefList in the inventory of oContainer.
// - bIdentify : -1 leave default
//				  0 set not identified
//				  1 set identified
void CreateListOfItemsInInventory(string sResrefList,
								  object oContainer = OBJECT_SELF,
								  int bIdentify = TRUE,
								  int bMasterwork = FALSE,
								  int bFullStack = FALSE)
{
	//TellCraft("CreateListOfItemsInInventory() ( " + sResrefList + " )");
	object oCreate;

	string sResrefMstrwork;

	int i = 0;
	string sResref = GetStringParam(sResrefList, i);
	while (sResref != "")
	{
		//TellCraft(". resref= " + sResref);
		oCreate = OBJECT_INVALID;

		if (bMasterwork)
		{
			sResrefMstrwork = sResref + TCC_MASTER_TAG;
			oCreate = CreateItemOnObject(sResrefMstrwork, oContainer);
			TellCraft(". . masterwork ! ( " + sResrefMstrwork + " )" + (!GetIsObjectValid(oCreate) ? " WARNING : no masterwork resref" : ""));
		}

		if (!GetIsObjectValid(oCreate))
		{
			//TellCraft(". creating : " + sResref);
			oCreate = CreateItemOnObject(sResref, oContainer);
		}

		if (GetIsObjectValid(oCreate))
		{
			if (GetTccType(oCreate) != TCC_TYPE_AMMO)
			{
				if (bMasterwork) // set Masterwork flag whether or not item was created w/ a Masterwork-resref.
					SetLocalInt(oCreate, TCC_VAR_MASTERWORK, TRUE);

				if (bIdentify != -1)
					SetIdentified(oCreate, bIdentify);

				if (bFullStack)
					SetItemStackSize(oCreate,
									 StringToInt(Get2DAString("baseitems", "Stacking", GetBaseItemType(oCreate))));
			}
			else
			{
				if (bMasterwork) // set Masterwork flag whether or not item was created w/ a Masterwork-resref.
					SetLocalInt(oCreate, TCC_VAR_MASTERWORK, TRUE);

				if (bIdentify != -1)
					SetIdentified(oCreate, bIdentify);

				if (bFullStack)
				{
					int iStackSize = StringToInt(Get2DAString("baseitems", "Stacking", GetBaseItemType(oCreate)));
					int iAmmoStacks = StringToInt(Get2DAString("cmi_options", "Value", 6)); //CMI_OPTIONS_AmmoStacksToCreate

					if (iAmmoStacks > 5)
						iAmmoStacks = 5;
					if (iAmmoStacks < 1)
						iAmmoStacks = 1;

					SetItemStackSize(oCreate, iStackSize);

					int iCount = 1;
					for (iCount = 1; iCount < iAmmoStacks; iCount++)
					{
						if (bMasterwork)
						{
							sResrefMstrwork = sResref + TCC_MASTER_TAG;
							oCreate = CreateItemOnObject(sResrefMstrwork, oContainer);
							TellCraft(". . masterwork ! ( " + sResrefMstrwork + " )" + (!GetIsObjectValid(oCreate) ? " WARNING : no masterwork resref" : ""));
						}

						if (!GetIsObjectValid(oCreate))
						{
							oCreate = CreateItemOnObject(sResref, oContainer);
						}

						if (GetIsObjectValid(oCreate))
						{
							SetItemStackSize(oCreate, iStackSize);

							if (bMasterwork) // set Masterwork flag whether or not item was created w/ a Masterwork-resref.
								SetLocalInt(oCreate, TCC_VAR_MASTERWORK, TRUE);

							if (bIdentify != -1)
								SetIdentified(oCreate, bIdentify);
						}
					}
				}
			}
		}
		//else TellCraft(". . ERROR : failed to create ( " + sResref + " )");

		sResref = GetStringParam(sResrefList, ++i);
	}
}

In DoMagicCrafting() there’s a caster level check.

	// Check if caster is of sufficient level
	int iCasterLevel = GetCasterLevel(oCrafter);
	int iCasterLevel2 = 0;
	if (GetLevelByClass(CLASS_TYPE_WARLOCK, oCrafter) > 0)
	{
		iCasterLevel2 = GetWarlockCasterLevel(oCrafter);
	}
	if (GetLevelByClass(CLASS_TYPE_RANGER, oCrafter) > 0 || GetLevelByClass(CLASS_TYPE_PALADIN, oCrafter) > 0)
	{
		iCasterLevel2 = GetPalRngCasterLevel(oCrafter);
	}

	if (iCasterLevel2 > iCasterLevel)
		iCasterLevel = iCasterLevel2;

Don’t know why, but it looks kinda strange for me…


#32

Missing templates (they have masterwork versions *_mast, but don’t have the ordinary ones):

  • tcc_arrow_cld_001
  • tcc_arrow_slv_001
  • tcc_bolt_cld_001
  • tcc_bolt_slv_001
  • tcc_bullet_cld_001
  • tcc_bullet_slv_001
  • tcc_ring_001
  • tcc_ring_ada_001

This one doesn’t have a masterwork version:

  • nw_wbwsl001_mast

All new ammo templates use incorrect icons. There’re appropriate icons for adamantine, silver, mithril arrows, bolts, bullets in the stock game. Just use them.


#33

perhaps because if a char has levels in Ranger/Paladin AND Warlock, the former will overrule the latter even if the latter is higher


#34

I was joking :slight_smile: Yeah, exactly…

Can GetLastSpellCastClass() be used here?


#35

probly. Better test it tho


#36

Tcc 1.175 and PRC were merged by Red Rover old Vault ID 58. Of course it also merged Tony K’s c&m ai, Reron’s spell fixes, Tomb of battle, Races of Faerun, and Light emiters sfx. That is if I remember everything that was in it. The ID is correct. You may want to look at that to see if it is worth doing. I hope this helps and good luck if you decide to tackle this project.


#37

Is this what you are referring to? Double click index to see the old ign page or download the 7z and maybe the ncs or maybe all of it. Found in rolovault (hak paks combined!!! Really?).

TR


#38

Just a curiousity, how to write a custom recipe?

The terms custom recipe keep returning custom items instead.


#39


Kaedrin’s PrC + TCC + Spell Fixes + Tome of Battle + Races of Faerun + Light Emitting Spell Effects
This is it Tarot_Redhand. I’m currently using it. It’s not perfect but most of it does what it says it will.


#40

this is what i mentioned to V. in pm: