Author Topic: Totem Druids  (Read 1052 times)

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Totem Druids
« Reply #15 on: June 20, 2012, 09:38:57 pm »


               

Kingdom_Of_Hearts wrote...

I thik I may have found the issue. Not sure though. In the polymorph.2da, # 107 I gave it the same name as the regular bear polymorph. Would that be a problem? And if so would changing it to POLYMORPH_TYPE_BROWN_BEAR_TOTEM1 be a issue? (Currently set at just POLYMORPH_TYPE_BROWN_BEAR.

nope that has no meaning, name of the line is only for human readers

i found another issue in your script, try this:

#include "x2_inc_itemprop"
#include "x3_inc_horse"
void main()
{
    //Declare major variables
    int nSpell = GetSpellId();
    object oTarget = GetSpellTargetObject();
    effect eVis = EffectVisualEffect(VFX_IMP_POLYMORPH);
    effect ePoly;
    int nPoly;
    int nMetaMagic = GetMetaMagicFeat();
    int nDuration = GetLevelByclass(class_TYPE_DRUID);
    if (!GetLocalInt(GetModule(),"X3_NO_SHAPESHIFT_SPELL_CHECK"))
    { // check to see if abort due to being mounted
        if (HorseGetIsMounted(oTarget))
        { // abort
            if (GetIsPC(oTarget)) FloatingTextStrRefOnCreature(111982,oTarget,FALSE);
            return;
        } // abort
    } // check to see if abort due to being mounted
    //Enter Metamagic conditions
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
        nDuration = nDuration *2; //Duration is +100%
    }
    //Determine Polymorph subradial type
f ( GetLocalInt(oTarget, "beartotem") == 1 )
   {
       nPoly = 107;
   }
    else if ( GetLocalInt(oTarget, "beartotem") == 2 )
   {
       nPoly = 108;
   }
    else if ( GetLocalInt(oTarget, "beartotem") == 3 )
   {
       nPoly = 109;
   }
    else if(nSpell == 401)
    {
        nPoly = POLYMORPH_TYPE_BROWN_BEAR;
        if (nDuration >= 12)
        {
            nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR;
        }
    }
    else if (nSpell == 402)
    {
        nPoly = POLYMORPH_TYPE_PANTHER;
        if (nDuration >= 12)
        {
            nPoly = POLYMORPH_TYPE_DIRE_PANTHER;
        }
    }
    else if (nSpell == 403)
    {
        nPoly = POLYMORPH_TYPE_WOLF;
        if (nDuration >= 12)
        {
            nPoly = POLYMORPH_TYPE_DIRE_WOLF;
        }
    }
    else if (nSpell == 404)
    {
        nPoly = POLYMORPH_TYPE_BOAR;
        if (nDuration >= 12)
        {
            nPoly = POLYMORPH_TYPE_DIRE_BOAR;
        }
    }
    else if (nSpell == 405)
    {
        nPoly = POLYMORPH_TYPE_BADGER;
        if (nDuration >= 12)
        {
            nPoly = POLYMORPH_TYPE_DIRE_BADGER;
        }
    }
  //////////////////////////////////////////////////////  // Else, if the local int is exactly 1.
    else if (nSpell == 401)
    {
        nPoly = POLYMORPH_TYPE_BROWN_BEAR;
        if (nDuration >= 12)
        {
            nPoly = POLYMORPH_TYPE_DIRE_BROWN_BEAR;
        }
    }
    ePoly = EffectPolymorph(nPoly);
    ePoly = ExtraordinaryEffect(ePoly);
    //Fire cast spell at event for the specified target
    SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_WILD_SHAPE, FALSE));
    int bWeapon = StringToInt(Get2DAString("polymorph","MergeW",nPoly)) == 1;
    int bArmor  = StringToInt(Get2DAString("polymorph","MergeA",nPoly)) == 1;
    int bItems  = StringToInt(Get2DAString("polymorph","MergeI",nPoly)) == 1;
    object oWeaponOld = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF);
    object oArmorOld = GetItemInSlot(INVENTORY_SLOT_CHEST,OBJECT_SELF);
    object oRing1Old = GetItemInSlot(INVENTORY_SLOT_LEFTRING,OBJECT_SELF);
    object oRing2Old = GetItemInSlot(INVENTORY_SLOT_RIGHTRING,OBJECT_SELF);
    object oAmuletOld = GetItemInSlot(INVENTORY_SLOT_NECK,OBJECT_SELF);
    object oCloakOld  = GetItemInSlot(INVENTORY_SLOT_CLOAK,OBJECT_SELF);
    object oBootsOld  = GetItemInSlot(INVENTORY_SLOT_BOOTS,OBJECT_SELF);
    object oBeltOld = GetItemInSlot(INVENTORY_SLOT_BELT,OBJECT_SELF);
    object oHelmetOld = GetItemInSlot(INVENTORY_SLOT_HEAD,OBJECT_SELF);
    object oShield    = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,OBJECT_SELF);
    if (GetIsObjectValid(oShield))
    {
        if (GetBaseItemType(oShield) !=BASE_ITEM_LARGESHIELD &&
            GetBaseItemType(oShield) !=BASE_ITEM_SMALLSHIELD &&
            GetBaseItemType(oShield) !=BASE_ITEM_TOWERSHIELD)
        {
            oShield = OBJECT_INVALID;
        }
    }
 

    //Apply the VFX impact and effects
    ClearAllActions(); // prevents an exploit
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, OBJECT_SELF);
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePoly, OBJECT_SELF, HoursToSeconds(nDuration));
    object oWeaponNew = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,OBJECT_SELF);
    object oArmorNew = GetItemInSlot(INVENTORY_SLOT_CARMOUR,OBJECT_SELF);
    if (bWeapon)
    {
            IPWildShapeCopyItemProperties(oWeaponOld,oWeaponNew, TRUE);
    }
    if (bArmor)
    {
        IPWildShapeCopyItemProperties(oShield,oArmorNew);
        IPWildShapeCopyItemProperties(oHelmetOld,oArmorNew);
        IPWildShapeCopyItemProperties(oArmorOld,oArmorNew);
    }
    if (bItems)
    {
        IPWildShapeCopyItemProperties(oRing1Old,oArmorNew);
        IPWildShapeCopyItemProperties(oRing2Old,oArmorNew);
        IPWildShapeCopyItemProperties(oAmuletOld,oArmorNew);
        IPWildShapeCopyItemProperties(oCloakOld,oArmorNew);
        IPWildShapeCopyItemProperties(oBootsOld,oArmorNew);
        IPWildShapeCopyItemProperties(oBeltOld,oArmorNew);
    }
  }
}


               
               

               


                     Modifié par ShaDoOoW, 20 juin 2012 - 08:39 .
                     
                  


            

Legacy_Kingdom_Of_Hearts

  • Full Member
  • ***
  • Posts: 142
  • Karma: +0/-0
Totem Druids
« Reply #16 on: June 20, 2012, 09:46:52 pm »


               Okay, lol. I think its getting somewhere, except it turned me into the appearance I was before I polymorphed. (halfling) and didn't change any stats. Hmm..
               
               

               
            

Legacy_Shadooow

  • Hero Member
  • *****
  • Posts: 7698
  • Karma: +0/-0
Totem Druids
« Reply #17 on: June 20, 2012, 09:49:59 pm »


               that seems to be an error of wrong setup polymorph - do you have your polymorph.2da placed in your override? does your module uses any haks? do they contain polymorph.2da? If so you need to place your modified polymorph.2da into the top hak.
               
               

               
            

Legacy_Kingdom_Of_Hearts

  • Full Member
  • ***
  • Posts: 142
  • Karma: +0/-0
Totem Druids
« Reply #18 on: June 20, 2012, 09:54:34 pm »


               Its not in the override folder, its in 2da.. And no haks. Is it supposed to be in the override? -->Fail
               
               

               
            

Legacy_henesua

  • Hero Member
  • *****
  • Posts: 6519
  • Karma: +0/-0
Totem Druids
« Reply #19 on: June 20, 2012, 10:25:36 pm »


               As ShaDoOoW said, polymorph.2da should be placed in one of your haks. And in the topmost one. You should not place anything inside the 2da folder. Just leave that alone.

A HAK is treated with the highest priority for custom content which is why that is recommended. And the topmost HAK receives the highest priority of all. If you put a file in your override, but a file with a similar name is already in a HAK that the module is using, the HAK version will be used and the override ignored.
               
               

               
            

Legacy_Kingdom_Of_Hearts

  • Full Member
  • ***
  • Posts: 142
  • Karma: +0/-0
Totem Druids
« Reply #20 on: June 20, 2012, 11:03:19 pm »


               Haks are the last thing I want. I'll try the override.
               
               

               
            

Legacy_Kingdom_Of_Hearts

  • Full Member
  • ***
  • Posts: 142
  • Karma: +0/-0
Totem Druids
« Reply #21 on: June 20, 2012, 11:14:01 pm »


               Well, dang. Whenever I have the override in the override folder, NWN won't play the mdoule in the nwserver or when I go into the actual game to play it. Any solutions besides haks?
               
               

               
            

Legacy_henesua

  • Hero Member
  • *****
  • Posts: 6519
  • Karma: +0/-0
Totem Druids
« Reply #22 on: June 20, 2012, 11:26:31 pm »


                Something seems to be wrong if it prevents the module from loading. I've got a polymorph.2da and no matter whethere I place it in the override or a hak the module loads fine.
Step one, place the polymorph.2da file in the override.
Step two, download this module from the vault (my jumping spiders demo)
Step Three, load the module (I assume that you know to put the moule in the module folder even though I skipped that step '<img'> )

Does the module load?

If not, you did something funky to your 2da file.
If it does, then the problem is not the 2da but your module.
               
               

               


                     Modifié par henesua, 20 juin 2012 - 10:27 .
                     
                  


            

Legacy_Kingdom_Of_Hearts

  • Full Member
  • ***
  • Posts: 142
  • Karma: +0/-0
Totem Druids
« Reply #23 on: June 20, 2012, 11:57:30 pm »


               For nwserver your worked, got to running log in at will. But for mine I instantly get a message saying that the program stopped working. All of this with the 2da.