Odd item creation
Moderator: Event DM
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
Another two questions Doug. I need this to evade Avlis spellhooking (it may not even be added to Avlis, but it would be nice) as it is supposed to change the person into a Red Dragon, and only a Red Dragon (I won't go into all the details, as it is very long, and very complicated).
Second, I have modified the 2da file, but now the script wont let me use my modified thing, i.e. I have made a young with the name "POLYMORPH_TYPE_RED_DRAGON_Y" but the script won't let me put that as the creature to polymorph into. What do I need to do there?
Thanks again.
Second, I have modified the 2da file, but now the script wont let me use my modified thing, i.e. I have made a young with the name "POLYMORPH_TYPE_RED_DRAGON_Y" but the script won't let me put that as the creature to polymorph into. What do I need to do there?
Thanks again.
Serineth "Wildmane" Swiftpaw
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
I'm trying this now, but I can't ever get it to have more than one use. also, regardless of if I use Unique Power, or Unique Power Self Only, it never gives me a targetter... Any ideas?dougnoel wrote:Fire breathing is implemented in polymorph.2da. The only other way to do it is the way we did races, or use an inventory item with a special ability. You could probably make a plot potion that would do this.Serineth Swiftpaw wrote:hmm, that gets me a Young Dragon, but I'd need to use the Adult Dragon as a base model (as the Ancient's abilities that it's hide gives aren't mentioned in there, it says it uses the same hide as the adult, but that is impossible) so I still have the problem of the Adult not being able to breathe fire... and the Young one wouldn't be able to either.
Any ideas how I can implement the fire breathing? That is the main concern right now...
Serineth "Wildmane" Swiftpaw
-
- Team Member; Retired with Honors
- Posts: 6261
- Joined: Fri May 14, 2004 4:59 pm
- Location: VA (GMT -4)
- Contact:
No. Avlis has it's own, which is where the Tlincalli, Lupin and Avlis dragon entries are.Serineth Swiftpaw wrote:I'm using the 2da from the HotU dat, is there a COPAP one?
If you mean you want it to avoid the avlis-specific forms, then you will have to add completely new entries. I overwrote all the chromatic dragon entries for Avlis.Serineth Swiftpaw wrote:Another two questions Doug. I need this to evade Avlis spellhooking (it may not even be added to Avlis, but it would be nice) as it is supposed to change the person into a Red Dragon, and only a Red Dragon (I won't go into all the details, as it is very long, and very complicated).
You need to create a constant value for it.Serineth Swiftpaw wrote:Second, I have modified the 2da file, but now the script wont let me use my modified thing, i.e. I have made a young with the name "POLYMORPH_TYPE_RED_DRAGON_Y" but the script won't let me put that as the creature to polymorph into. What do I need to do there?
const int POLYMORPH_TYPE_RED_DRAGON_Y = 344;
Where 344 is the line number that POLYMORPH_TYPE_RED_DRAGON_Y occupies.
The const should be delcared ideally in an include file. Alternately you can put it before your main() statement in the file - or just use the number instead of POLYMORPH_TYPE_RED_DRAGON_Y.
I would take a look at the fire breath code for wyrmlings and dragons. Basically, you get the direction the character is facing and spew the breath out in that direction. No need to target at all.Serineth Swiftpaw wrote:I'm trying this now, but I can't ever get it to have more than one use. also, regardless of if I use Unique Power, or Unique Power Self Only, it never gives me a targetter... Any ideas?
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
Right, but if I go modifying the 2da, and would like it to be implemented universaly, what is the best thing to do? I couldn't use the Avlis one because then other worlds would end up with their people changing into the wrong things, and I cant use a standard one as that would mean the Avlis one would stop changing people to rocks and such. Thoughts? Anyway, I may as well scrap the idea of a young one, so I just need to figure out how to get our Adult Red to breathe fire 

Serineth "Wildmane" Swiftpaw
-
- Team Member; Retired with Honors
- Posts: 6261
- Joined: Fri May 14, 2004 4:59 pm
- Location: VA (GMT -4)
- Contact:
Just make a post on the CoPaP dev board stating your intent to add a few lines to the 2da and why. Themi is the gatekeeper there. We can discuss the issue there. Then you can just add in your breath weapon to the 2da and be done. It's Avlis' responsibility to update our modified 2das. You don't have to worry about it. We may nerf or change the lines you add for Avlis, but again that's completely Avlis-sepcific. As long as you're clear on your intentions you don't have to worry about it.Serineth Swiftpaw wrote:Right, but if I go modifying the 2da, and would like it to be implemented universaly, what is the best thing to do? I couldn't use the Avlis one because then other worlds would end up with their people changing into the wrong things, and I cant use a standard one as that would mean the Avlis one would stop changing people to rocks and such. Thoughts? Anyway, I may as well scrap the idea of a young one, so I just need to figure out how to get our Adult Red to breathe fire
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
-
- Team Member; Retired with Honors
- Posts: 6261
- Joined: Fri May 14, 2004 4:59 pm
- Location: VA (GMT -4)
- Contact:
We haven't added any new lines. You should however, go to Bioware's site and make sure that you pad the 2da file accroding to their guidelines. I believe that info can also be found in the CEP docs somewhere.Serineth Swiftpaw wrote:One last question Doug, are lines 107 and 108 free in Avlis'ss's... Polymorph.2da?
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
Rgr. For anyone that wonders what that means, for future reference: http://nwn.bioware.com/forums/viewtopic ... 8&forum=48
Padding to line 150...
Padding to line 150...
Serineth "Wildmane" Swiftpaw
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am
Ok, hit a wall Doug, the Fire Breath doesn't seem to work properly on either form. The DC seems stuck at 11 and the fire itself seemed to max out at 20. Now according to the Bioware script, it should scale...
Now I haven't done anything, the Ancient is still using the default code, so any idea why Firebreath would not be picking up the characters HD properly? ( tried leveling the character, is was doing a max of 4 damage at level 1 and around 20 at level 40...)
Code: Select all
//::///////////////////////////////////////////////
//:: Dragon Breath Fire
//:: NW_S1_DragFire
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Calculates the proper damage and DC Save for the
breath weapon based on the HD of the dragon.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: May 9, 2001
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
void main()
{
//Declare major variables
int nAge = GetHitDice(OBJECT_SELF);
int nDamage, nDC, nDamStrike;
float fDelay;
object oTarget;
effect eVis, eBreath;
//Use the HD of the creature to determine damage and save DC
if (nAge <= 6) //Wyrmling
{
nDamage = d10(2);
nDC = 15;
}
else if (nAge >= 7 && nAge <= 9) //Very Young
{
nDamage = d10(4);
nDC = 18;
}
else if (nAge >= 10 && nAge <= 12) //Young
{
nDamage = d10(6);
nDC = 19;
}
else if (nAge >= 13 && nAge <= 15) //Juvenile
{
nDamage = d10(8);
nDC = 22;
}
else if (nAge >= 16 && nAge <= 18) //Young Adult
{
nDamage = d10(10);
nDC = 24;
}
else if (nAge >= 19 && nAge <= 22) //Adult
{
nDamage = d10(12);
nDC = 25;
}
else if (nAge >= 23 && nAge <= 24) //Mature Adult
{
nDamage = d10(14);
nDC = 28;
}
else if (nAge >= 25 && nAge <= 27) //Old
{
nDamage = d10(16);
nDC = 30;
}
else if (nAge >= 28 && nAge <= 30) //Very Old
{
nDamage = d10(18);
nDC = 33;
}
else if (nAge >= 31 && nAge <= 33) //Ancient
{
nDamage = d10(20);
nDC = 35;
}
else if (nAge >= 34 && nAge <= 37) //Wyrm
{
nDamage = d10(22);
nDC = 38;
}
else if (nAge > 37) //Great Wyrm
{
nDamage = d10(24);
nDC = 40;
}
PlayDragonBattleCry();
//Get first target in spell area
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE);
while(GetIsObjectValid(oTarget))
{
if(oTarget != OBJECT_SELF && !GetIsReactionTypeFriendly(oTarget))
{
//Reset the damage to full
nDamStrike = nDamage;
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_DRAGON_BREATH_FIRE));
//Adjust the damage based on the Reflex Save, Evasion and Improved Evasion.
if(MySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE))
{
nDamStrike = nDamStrike/2;
if(GetHasFeat(FEAT_EVASION, oTarget) || GetHasFeat(FEAT_IMPROVED_EVASION, oTarget))
{
nDamStrike = 0;
}
}
else if(GetHasFeat(FEAT_IMPROVED_EVASION, oTarget))
{
nDamStrike = nDamStrike/2;
}
if (nDamStrike > 0)
{
//Set Damage and VFX
eBreath = EffectDamage(nDamStrike, DAMAGE_TYPE_FIRE);
eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
//Determine effect delay
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
//Apply the VFX impact and effects
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreath, oTarget));
}
}
//Get next target in spell area
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 14.0, GetSpellTargetLocation(), TRUE);
}
}
Serineth "Wildmane" Swiftpaw
- Serineth Swiftpaw
- Apprentice Scholar
- Posts: 914
- Joined: Tue Dec 28, 2004 2:13 am