Jump to content

MyNPC [CD_STATE_NOTVALID]


Harutsune

Recommended Posts

You're pretty quick ;) , thought I could edit with this:

 

Oops that was a quick one - all the other spells were garbage like Golem-Haste and they all did not appear under F12. The only one available was 'Gate' which casts four Golem-eating Glabrezu - not a good gift for a CG Fighter/Assassin.. ;)

 

So it seems I'll have to turn for the selfmade innates - I know how to make spells (got one working already), but could you please explain in detail how to make that second spell that brings the first one into play?

 

Hm, said that levels don't matter I could research the innates again, cause I only wrote down those with level 0 or 1. Maybe I find what I need on higher levels.

Link to comment
All the other spells were garbage like Golem-Haste and they all did not appear under F12. The only one available was 'Gate' which casts four Golem-eating Glabrezu - not a good gift for a CG Fighter/Assassin.. ;)

 

So it seems I'll have to turn for the selfmade innates - I know how to make spells (got one working already), but could you please explain in detail how to make that second spell that brings the first one into play?

 

Hm, said that levels don't matter I could research the innates again, cause I only wrote down those with level 0 or 1. Maybe I find what I need on higher levels.

Whether or not the ability appears under F12 menu depends on the extended headers of the spell. There is a "location" field which defines where it appears regardless of its type, that field must be set to 4-Innate. I suggest you use DLTCEP for making spells, now the easiest way is to find a working one, edit what you must and save under a different name (but be careful not to over-write the existing one).

 

Also, the abilities you create yourself can also be granted using AddSpecialAbility() as the function uses a resource reference (the name of your .spl file), so for now there's no real need to bother with two spell files, you can leave that for later if you need it.

 

I'm sure there are plenty of existing innates which do work however, skim through the SPCL* and SPIN* files and see if any of them are okay to use for your NPC. Their level is of no consequence since you're not using your script to detect spells so you can freely search for abilities of any level. You're making a big deal out of something simple ;)

 

If you'll still be having much trouble after this we can set up a meeting somewhere (msn, mirc, etc.) and I'll send you some generic files or point you to a tutorial so you can have a better look at the workings of what you're trying to do.

Link to comment

If I had known that before I could have saved five hours of work searching for possibly working spells, so here they are (only searched for spells that fit for this NPC, there are more of course):

 

AddSpecialAbility("SPIN118") // Invisiblity

AddSpecialAbility("SPIN201") // Neutralize Poison

AddSpecialAbility("SPIN828") // Haste

AddSpecialAbility("SPIN698") // Improved Invisibility

AddSpecialAbility("SPIN112") // Ban Magic

AddSpecialAbility("SPCL222") // Ban Fear

AddSpecialAbility("SPCL233") // Protection from Evil 5m Radius

// Fighter HLAs

AddSpecialAbility("SPcl900") // Whirlwind

AddSpecialAbility("SPcl901") // Mighty Whirlwind

AddSpecialAbility("SPcl904") // Resist Magic

// For Evil Versions

AddSpecialAbility("SPIN105") // Horror

AddSpecialAbility("SPIN106") // Vampiric Touch

 

There's just one left to make: Improved Haste, which made me a sleepless night - but if it's as simple as you say I'll just make and install it like the other one, that's sweet.. ;)

 

..almost done with this, there are only two things left: how would I give him a THAC0/AC-improvement? In the CLAB-file they use SPCL332,412,421,423 (Backstab-bonus, set trap, attack damage bonus?, poison weapon?) via GA- + AP-prefix. How would I manage to do the same with my script?

 

(Since english is not my mother's language I'm way too slow for chatting, but there's not really much of a problem imho, and my learning-curve is pretty high atm, getting this closer and closer to its goal is best fun ever.. thank you for considering ;) )

Link to comment
..almost done with this, there are only two things left: how would I give him a THAC0/AC-improvement? In the CLAB-file they use SPCL332,412,421,423 (Backstab-bonus, set trap, attack damage bonus?, poison weapon?) via GA- + AP-prefix. How would I manage to do the same with my script?
If you only need to apply it permanently then do it with ApplySpellRES(), make sure the spell you are applying is actually permanent in duration.

 

(Since english is not my mother's language I'm way too slow for chatting, but there's not really much of a problem imho, and my learning-curve is pretty high atm, getting this closer and closer to its goal is best fun ever.. thank you for considering ;) )
Well I understand a fair ammount of German, so if you change your mind let me know, I'm always willing to help. ;)
Link to comment

..is it really that easy..?? I would never have thought about trying it this way... ;)

Remember I said this will not be a complicated one? So he has a nice plot and his extra-spells-progression, I'm ready to go give this 'batch-of-bytes with a pic' a life in Amn. I'd suggest you feel like you witnessed (and helped) the birth of somebody.. Cheers!!! :D

 

[CaseClosed]

 

So what may follow will be questions concerning his plot and how to realize things. Since he's a CHA:8-guy (like me) he'll not interject into every convo, but being an ex-pitfighter-slave he will make (partly rude) interjections where players won't expect them :D , i.e. around Hendak, that property in temple-quarter.

My plan now is to finish ;) his main-setup, start a brandnew game and play thru it (with custom NPCs like Kelsey + Yasraena of course). Everytime I encounter a situation worth interjecting/acting I close the game and make the script/dialogue, run the game from a prev. save, test the new one and so on. And if one day I'm around the whole game (in 80 days? ;) ) I should hopefully leveled up a bit in coding, so I can script a nice little quest around Hendak and that property...

 

+++

 

Ok, first question: should I edit the topics title again? :)

 

+++

 

There are two situations where I let people say something AND note a valid soundfile, but if they speak there only plays 'SelectCommon1-6', which is annoying cause the spoken word supports the written one, but he just says 'yes'. btw. he has a really nice full soundset with tons of words left, so this will become quite urgent for me.

 

(Skye has entered the credits) :):):)

Link to comment
Ok, first question: should I edit the topics title again?
It might be a good idea, or perhaps create a new thread somewhere else. This perhaps isn't the right place for questions about artistic content, General Mod Discussion might be better.

 

There are two situations where I let people say something AND note a valid soundfile, but if they speak there only plays 'SelectCommon1-6', which is annoying cause the spoken word supports the written one, but he just says 'yes'. btw. he has a really nice full soundset with tons of words left, so this will become quite urgent for me.
Sound files are defined in brackets when compiling with WeiDU and without the .wav extension. For example: SAY ~Something.~ [snd001]. Is that what you wanted to know?
Link to comment

Ok, I'll rename it and try not to ask artistical questions.. ;)

 

The sounds are well setup via WeiDU, as the soundset itself works, but I got none of the two to work which I assigned to a textbox.

 

Lurking thru the CLAB-files, there seems to be no THAC0-progression noted, the assassin gets just one at level one, that's it. So there must be another file or is it just the rule? In other words: what's the regular THAC0-progression of a thief resp. assassin?

Link to comment
The sounds are well setup via WeiDU, as the soundset itself works, but I got none of the two to work which I assigned to a textbox.
I'm not sure what you're aiming at, define textbox. If you're refering to dialogues it probably works in exactly the same way, when writing strings in your .D file just put the sound file in brackets next to the string. For instance: IF ~~ THEN REPLY ~Something.~ [snd001]

 

Lurking thru the CLAB-files, there seems to be no THAC0-progression noted, the assassin gets just one at level one, that's it. So there must be another file or is it just the rule? In other words: what's the regular THAC0-progression of a thief resp. assassin?
Assassins gain the same THAC0 progression as normal thief with an additional +1 bonus at first level. THAC0 is defined in THAC0.2da for each base class, if you want a different progression you'll have to use a dur-9 permanent spells with bonuses/penalties applied through your script the same way as abilities. Also CLAB* file only defines abilities recieved by the class, statistics such as THAC0, spells per day, lore, etc. each have their own .2da files.
Link to comment

I made a test-run with ASA SPCL421+143 (THAC0+Att/rd), no THAC0 dealt but half an attack added, but two empty innate-slots - absolutely unacceptable. So I tried AddSpellRes which WeiDU refuses to compile - is this the point with the two files..??

Link to comment
I made a test-run with ASA SPCL421+143 (THAC0+Att/rd), no THAC0 dealt but half an attack added, but two empty innate-slots - absolutely unacceptable. So I tried AddSpellRes which WeiDU refuses to compile - is this the point with the two files..??
I've told you before, AddSpellRES() does not exist. If you want a usable ability use AddSpecialAbility(), if you need a static bonus use ApplySpellRES(). Also that sentence made no sense, take your time with the grammar, it's serious business. ;)
Link to comment

RL can be pretty annoying sometimes - now I've nailed my door close... ;)

 

I've redone his spell-progression-script to something less overwhelming, but there's still work left. Neither THAC0 nor Attacks per round get applied the way I script it (ApplySpellRES("SPCL143",Myself)). It's ok for testing and looking for situations. So I made a brandnew game, picked him up and started lurking thru Athkatla. ;)

 

First situation I decided to 'interject' was the first meeting with Tolgerias. He autocasts a special-version of 'know alignment' and displaystringheads (what's the max. length of each line?) a comment, works perfectly, with the only flaw that the assigned soundfile doesn't play (PlaySound("haru_tg1")).

 

Next situation is Viconia-shall-not-burn. No need to know alignment(), easy to display... something again. But how would I make him 'use' the stake (which normally the player should do, but you never know)? ;)

Link to comment
First situation I decided to 'interject' was the first meeting with Tolgerias. He autocasts a special-version of 'know alignment' and displaystringheads (what's the max. length of each line?) a comment, works perfectly, with the only flaw that the assigned soundfile doesn't play (PlaySound("haru_tg1")).
The sound file should be assigned directly to the string in dialog.tlk, I believe PlaySound() requires the sound files to be in ACM format, not plain WAV. As for the max length, I don't know. Test it with a long string.

 

Next situation is Viconia-shall-not-burn. No need to know alignment(), easy to display... something again. But how would I make him 'use' the stake (which normally the player should do, but you never know)? ;)
I'm not really sure what kind of object it is, first what you should do is MoveToObject() after there you could try one of the functions dealing with objects but I'm not sure if the NPC can actually trigger it as the player would, I believe ClickLButtonObject() doesn't do anything. If was trying to do it, I would copy the actions that the script triggered on activation executes and then disable the trigger with TriggerActivation().
Link to comment

When I first read your post yesterday eve I thought I'd have to leave this for later, but as I tried it this morning it took me just one hour to succeed: ;)

 

IF

AreaCheck("AR1000")

Global("HaruVicciBurn","LOCALS",0)

Global("ViconiaStake","AR1000",0)

Global("ViconiaDeath","AR1000",0)

See("Viconia")

THEN

RESPONSE #100

DisplayStringHead("Haru",~Rassistische Barbaren..!!~)

Wait(1)

MoveToObject("Viconia")

FadeToColor([20.0],0)

ActionOverride("Viconia",JumpToPoint([1824.1141]))

FadeFromColor([20.0],0)

SetGlobal("ViconiaStake","AR1000",2)

SetGlobal("ViconiaFree","AR1000",1)

DisplayStringHead("Haru",~Harutsune geht ohne zu Zögern zum Pfahl und befreit die dunkelhäutige Frau.~)

SetGlobal("HaruVicciBurn","LOCALS",1)

END

 

Works absolutely smooth no matter what the mob says, he just keeps on moving after any interruption of a text-box. The hint 'copying the actions' was worth 'my weight' in gold, thank you very much again!!! :D;);)

 

But I'll have to leave the sound-issues for later, maybe I'll make them all in one rush as soon as I know howto; never mind, there's two or three movies I'll have to cut anyways.

Link to comment

Dialogues and their cases seem to be more complicated than german grammars sometimes.. or confusing at least. ;)

I simply want to cut off a certain dialogue (entry to CC cellblock) I interjected into, so I use INTERJECT since I_C_T has been invented to prevent injectors from taking over the action - wrong thought it seems to me..: ;)

 

INTERJECT GUARD3 0 zellentrakt

== HaruJ IF ~IsValidForPartyDialogue("Haru")~ THEN

~Aus dem Weg, dreckiger Sklavenhalter!!~ DO ~EquipMostDamagingMelee()Attack("guard3")~

END

 

With his interjection comes the wellknown bunch of replies instead of an instant attack - why would I have to do it, and ;) why?

Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...