Jump to content


Photo

Leopard love!


  • Please log in to reply
88 replies to this topic

#1 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 17 February 2010 - 01:06 AM

This mod is now hosted at TeamBG: Leopard Love

Hi, I'm Phobia, a new aspiring modder. :) An aspiring modder with an idea she can't get out of her head. I decided to toss it out here so it can get some feedback. Many aspects are not yet set in stone, and can easily be altered in order to make it work better, both in game and in coding. I know the topic title can be rather misleading. Although that was somewhat intentional ;), I'm honestly not suggesting any kind of beastiality/zoophile mod here.

What I'm getting at is a joinable, romanceable, cursed NPC. His name is Ezekiel, and he is a male human of 20 years old.

He has short light blonde hair, yellow human eyes, and is has a slender build. When encountered, he wears a leather sleeve over his left arm, black leather bracer with a broken chain on his right wrist, and a black leather collarpiece that covers a part of his neck, between his shoulders and upper part of his neck. It has a broken chain hooked at the front. He has a bare torso, and wears long cloth pants, a leather belt and leather boots. Oddly enough, the skin of his shoulders and neck has small patches of yellow and black on it, resembling several leopard spots.

His personality is rather calm, quiet, shy, and usually friendly, making it a bit more of a challenge to get him to loosen up and romance the PC.

-------------------------------------

In the game, this is his character sheet:

Posted Image <-> Posted Image

Name: Ezekiel Rodammon
Age: 20
Gender: Male
Race: Human
Class: Barbarian
Alignment: Chaotic Good

Strength: 16
Dexterity: 16
Constitution: 14
Intelligence: 12
Wisdom: 10
Charisma: 11

Biography: To be written

-------------------------------------

Ezekiel is a slave that is being held captive at the slaver compound in Athkatla. Upon his release, he offers to join the PC. In the conversations and encounters that follow, it is learned that this young man has been cursed with the ability to change into a leopard, an ability he does not control. He asks for the PC's help to find a way to dispel his curse, so he can remain human, or at least have his ability under control.

He is mainly in leopard form, unable to speak human tongue, and will revert back to human form once per day, so he can interact for a few hours, then it's back to leopard form. Cherish the time you can talk to him. ^_^ If you find him in the slaver compound as a leopard, you'll need Minsc, Cernd, or a PC that is ranger or druid. If not, wait. :)

Yes, there will be a romance, which can develop through talks when he is in human form. Gender or race doesn't matter to him, but he mainly falls for good kind Bhaalspawn. He will have plenty of talks with a non-romance PC, as well as the standard banters and interjections, and a flirt/chat pack. There will be some interaction with leopard Zeke as well.

Questions and feedback are welcome. I truly appreciate the help. :) I'll keep this post updated to reflect the changes that have been made.

Change 1: Removed "He is not a lycanthrope" line.
Change 2: Added character sheet! He has a name!
Change 3: Updated this post, and he has portraits now!

Edited by Phobia, 28 August 2010 - 11:43 PM.

Left the modding forums

#2 Jarno Mikkola

Jarno Mikkola

    The Imp in his pink raincoat.

  • Member
  • 10911 posts

Posted 17 February 2010 - 01:43 AM

Well, there's a Lion Warrior Kit for a Ranger... and also there Leopard Kit which could be used as the base... the Leopard kit has the limitation of not being able to speak human language in the form(and why it's companion mod)... so it's easier to look what the other modders did and ask then if you need help. Just note that the mods have their restrictions, but I believe they can be sorted out.
You could make the NPC script be able to first chance the form and then immediately fire the speech outside combat and various other states as others have done before.

Edited by Jarno Mikkola, 17 February 2010 - 01:43 AM.

Deactivated account. The user today is known as The Imp.


#3 Miloch

Miloch

    Barbarian

  • Modder
  • 6573 posts

Posted 17 February 2010 - 02:25 AM

it is learned that this young man has been cursed with the ability to change into a leopard, an ability he does not control. He asks for the PC's help to find a way to dispel his curse, so he can remain human, or at least have his ability under control. Note: He is not a lycanthrope.

Eh... how is this not lycanthropy? Sounds like a wereleopard to me.

Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"Infinity turns out to be the opposite of what people say it is. It is not 'that which has nothing beyond itself' that is infinite, but 'that which always has something beyond itself'." -Aristotle


#4 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 17 February 2010 - 02:41 AM

it is learned that this young man has been cursed with the ability to change into a leopard, an ability he does not control. He asks for the PC's help to find a way to dispel his curse, so he can remain human, or at least have his ability under control. Note: He is not a lycanthrope.

Eh... how is this not lycanthropy? Sounds like a wereleopard to me.


The condition may be akin to lycanthropy, though the cause and nature are different. Now that I think of it, it's not a very good explanation, now is it? Granted, it doesn't really matter what his condition is called. What matters is that it's a fact for him, and he wants rid of it.

Oh, and Jarno, thank you. I was unaware of such kit mods, and I will check them out. Maybe they will be of some use.

Gods, I keep editing my posts when I think of something to add while I'm doing all my chores. :wacko: Scatterbrained soul here.

Edited by Phobia, 17 February 2010 - 03:30 AM.

Left the modding forums

#5 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 17 February 2010 - 08:28 AM

I'd look into the mod Every Mod and Dog for guidance on how to handle the creature transformations.

Spoiler


You can get Every Mod and Dog on the Gibberlings Three Downloads page. There is an error with the way the G3 server handles 7z files, though. They aren't corrupted, but they get saved to the wrong format. To download the mod, you should right-click on the link and choose "Save Target As". The extension shown will be .htm, but that'as incorrect. Save it with a .7z extension instead and you'll be good to go. We're hoping to hear back from Cliffette about whether or not it's acceptable to repackage her mod in a format the server can handle.

If it were my mod, I'd make the creature file as the human (barbarian would make the most sense, and there isn't a barbarian NPC that I know of), and then make two spells that would handle the transformation. I'd make the spells so that each set a toggle variable to show whether the human form was active or the leopard form, and then use that variable as a trigger for the dialogues so that he could only talk while he was human.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#6 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 17 February 2010 - 09:29 AM

I'd look into the mod Every Mod and Dog for guidance on how to handle the creature transformations.

Spoiler


You can get Every Mod and Dog on the Gibberlings Three Downloads page. There is an error with the way the G3 server handles 7z files, though. They aren't corrupted, but they get saved to the wrong format. To download the mod, you should right-click on the link and choose "Save Target As". The extension shown will be .htm, but that'as incorrect. Save it with a .7z extension instead and you'll be good to go. We're hoping to hear back from Cliffette about whether or not it's acceptable to repackage her mod in a format the server can handle.

If it were my mod, I'd make the creature file as the human (barbarian would make the most sense, and there isn't a barbarian NPC that I know of), and then make two spells that would handle the transformation. I'd make the spells so that each set a toggle variable to show whether the human form was active or the leopard form, and then use that variable as a trigger for the dialogues so that he could only talk while he was human.


Thank you very much for the EMaD linky. :) It sure sounds very useful. I'm so glad I'm not pioneering this area. ^_^ Ehehehe..
Yes, the barbarian+2 variable spells sounds logical to me, and simpler than a whole new kit. I'll go with whatever's easiest but still functional. Is it possible to make human form last for, say, a few hours in game time? So that normally, he is in leopard form, but you can reform him on command once a day, but once the few hours game time pass, he automatically changes back into leopard?

In the meantime, I'll get to work on some dialogue, so I'm actually doing something with the mod. :P

Edited by Phobia, 17 February 2010 - 09:31 AM.

Left the modding forums

#7 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 17 February 2010 - 10:00 AM

Yeah, you would just set up his script to do the second change so many hours after the first. If you were using ##Leopard=2 as your global variable to tell that he's in leopard form, you could just do a script block like this. ## is your prefix, by the way. You should register for one of those, if you haven't already.

IF
InParty(Myself)
Global("##Leopard","GLOBAL",0)
!StateCheck(Myself,CD_STATE_NOTVALID)
THEN
RESPONSE #100
SetGlobalTimer("##LeopardTime","GLOBAL",THREE_HOURS)
SetGlobal("##Leopard","GLOBAL",1)
END

IF
InParty(Myself)
GlobalTimerExpired("##LeopardTime","GLOBAL")
Global("##Leopard","GLOBAL",1)
!StateCheck(Myself,CD_STATE_NOTVALID)
THEN
RESPONSE #100
DisplayStringHead(Myself,~The curse! I feel the change upon me!~)
ApplySpell(Myself,##LEP1)
END

You'd have to append spell.ids with your two spells, and you'd have to figure out the syntax for ApplySpell(), whether it uses quotes or no quotes, in this case, but it's doable.

Just set it up so ##LEP1, the spell you're using to change him to a leopard, sets ##Leopard to 2, and that ##LEP2, the spell you're using to change him back into a human, sets ##Leopard to 0. When you've played with scripting and dialogue a bit more, that will make more sense.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#8 Miloch

Miloch

    Barbarian

  • Modder
  • 6573 posts

Posted 17 February 2010 - 10:47 AM

Yeah, you would just set up his script to do the second change so many hours after the first.

You wouldn't even have to do that. Just set the duration of the spell effects to three hours (timing mode=0, duration=900 or so IIRC). Possibly you could also some sort of detectable stat (such as Polymorph) to see which shape he's in, rather than a variable. Don't even need to turn to mods for examples either, since lycanthropy is handled similarly in the unmodded game (see spcl643.spl for Shapeshifts Werewolf, the creatures on Balduran's/Werewolf Isle in BG1, etc.).

Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"Infinity turns out to be the opposite of what people say it is. It is not 'that which has nothing beyond itself' that is infinite, but 'that which always has something beyond itself'." -Aristotle


#9 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 17 February 2010 - 11:10 AM

Though my knowledge of coding is limited, that block of code actually makes some sense. Like I said, I'll pick whichever's easiest and works best. ^_^ I really appreciate the help. Gond knows I'll need lots of it, ehehehe..
Left the modding forums

#10 cmorgan

cmorgan
  • Modder
  • 2301 posts

Posted 17 February 2010 - 06:18 PM

Miloch, you are right, but Berelinde is thinking ahead - the problem with the shapechange is detecting it from a dialog-enabling standpoint. The use of variable toggles means all the dialog can be set up, but nothing will run or be triggered while he is in leopard form. Then you don't have to look/script for anything else - just like the shutdown of BG content in BGT games when the player is in BG2. Might also be useful for combat scripting, etc.

#11 Miloch

Miloch

    Barbarian

  • Modder
  • 6573 posts

Posted 17 February 2010 - 07:56 PM

Miloch, you are right, but Berelinde is thinking ahead - the problem with the shapechange is detecting it from a dialog-enabling standpoint. The use of variable toggles means all the dialog can be set up, but nothing will run or be triggered while he is in leopard form. Then you don't have to look/script for anything else - just like the shutdown of BG content in BGT games when the player is in BG2. Might also be useful for combat scripting, etc.

All of that can be addressed by the means I suggested too:

Possibly you could also some sort of detectable stat (such as Polymorph) to see which shape he's in, rather than a variable.

And you can do that in dialogues as well as scripts. The only difference would be, instead of something like:
Global("##Leopard","GLOBAL",1)
You'd have:
CheckStatGT("##MyNPC",0,POLYMORPH)
With the latter, you could also ignore all the variable/timer-setting and checking, because the stat and its duration are handled by the spell.

The shortcoming in this approach is that the POLYMORPH stat might measure any sort of polymorph, unless you can set it manually to a given value (and you might be able to do that). In which case you might want to add a custom race for the NPC when he shapechanges (using Taimon's method if necessary). In which case, your check is even easier and pretty much failsafe:
Race("##MyNPC",LEOPARD)
The spell sets his race to leopard while the shapechange is in effect. This isn't entirely theoretical because I've used something very similar in Fishing For Trouble (seems to work in internal testing). Plus, it looks cool on the character screen ;D.

Obviously you will need to use variables for an NPC mod but if you don't *need to* for something, then why bother? I would avoid them for the same reason I'd avoid adding to the global script (baldur.bcs) because too many of them can, if not lag the game, then at least be hard to keep track of (as both of you know from BG1 NPC). And the second-to-last thing you mentioned is a wildcard I'm not sure of (variables carrying over from BG1 to BG2 in BGT in all cases) but in any case, the race/stat check is again a failsafe method that doesn't have to guess about that.

All of that may seem pretty complex for a beginning modder, but my point is it's quite simpler than pages of code and variables, and you shouldn't worry about any of that too much in the early stages. Just write the dialogue without focusing on the technical details, or it'll never get done :).

Infinity Engine Contributions
Aurora * BG1 NPC * BG1 Fixpack * Haiass * Infinity Animations * Level 1 NPCs * P5Tweaks
PnP Free Action * Thrown Hammers * Unique Containers * BG:EE * BGII:EE * IWD:EE
================================================================
Player & Modder Resources
BAM Batcher * Creature Lister * Creature Checker * Creature Fixer * Tutu/BGT Area Map & List * Tutu Mod List
================================================================
"Infinity turns out to be the opposite of what people say it is. It is not 'that which has nothing beyond itself' that is infinite, but 'that which always has something beyond itself'." -Aristotle


#12 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 17 February 2010 - 11:15 PM

All of that may seem pretty complex for a beginning modder, but my point is it's quite simpler than pages of code and variables, and you shouldn't worry about any of that too much in the early stages. Just write the dialogue without focusing on the technical details, or it'll never get done :).


Ahahaha, well said! :lol: My brain hurts. :P Still, I greatly appreciate the technical help and tinkering, for that is my current weakness. I'm just happy that it's all possible. I would've hated to change the idea in order to make it work.

So...it is possible for him to be in leopard form most of the time, and being able to polymorph back into his human form that lasts for a few hours before he is polymorphed back. It is possible for him to be unable to interact verbally with other NPC's and the PC while in leopard form.

How would it work when you first encounter him? Would he always be human when you first meet him (until he joins the party, which would start the polymorph cycle), or would he possibly polymorph back into leopard form even before you get the chance to meet him? The second option is more in the spirit of the theme, not to mention the interesting dialogue the PC would have with the leopard. Perhaps requiring Cernd and/or Minsc to get him to join then.

Another important thing to ask is whether or not the polymorph cycle can be removed/disabled altogether? Later in the game, I might want to include the option to let him have his wish, which is to be fully human again, without the leopard thing.

Okay, my brain has fried for now, so I'll serve it with some chips later today. I'll get working on dialogue as you suggest. I can do that, at least. I have my trusty Quill Of Rapid Writing +2 ready. ;) Now all I need to do is write stuff that makes sense. One little mistake turns Aerie into an ogre. Oh wait, she is. :blink:

I need coffee. <_<

Edited by Phobia, 17 February 2010 - 11:37 PM.

Left the modding forums

#13 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 18 February 2010 - 07:01 AM

So...it is possible for him to be in leopard form most of the time, and being able to polymorph back into his human form that lasts for a few hours before he is polymorphed back. It is possible for him to be unable to interact verbally with other NPC's and the PC while in leopard form.

Yes, to both.

How would it work when you first encounter him? Would he always be human when you first meet him (until he joins the party, which would start the polymorph cycle), or would he possibly polymorph back into leopard form even before you get the chance to meet him? The second option is more in the spirit of the theme, not to mention the interesting dialogue the PC would have with the leopard. Perhaps requiring Cernd and/or Minsc to get him to join then.

Yes, it's possible to do it the second way, no matter whether you opt to follow Miloch's suggestion or mine. And don't forget that Jahiera is also a druid, or that Valygar is also a ranger. Neither really shows much inclination to commune with animals, however, so if you wanted to limit help of that kind to Cernd and/or Minsc, you could do that. You could also make it possible for any PC or NPC with a druid/ranger class/kit to speak with him in leopard form. Entirely up to you.

I will make this one small suggestion, however. It might seem fun from a certain perspective to add that element of realism, but when you're sitting there staring at a complex dialogue file and trying to figure out what went wrong, it won't seem so fun. Doing things the easy way might, at times, seem like you're sacrificing truth for convenience, and perhaps you are. Whether you ultimately decide to simplify or not will depend on a balance between the amount of time you want to devote to the project, your coding knowledge, and your desire to inconvenience players as little as necessary. Where the balance lies is up to you to discover.

Another important thing to ask is whether or not the polymorph cycle can be removed/disabled altogether? Later in the game, I might want to include the option to let him have his wish, which is to be fully human again, without the leopard thing.

If you go the variable route, you could do that very easily by simply creating a "stop variable" in the dialogue where he loses his curse. You wouldn't need to create another variable for this purpose. Supppose you're using ##Leopard=0 for his human form before the timer gets set, ##Leopard=1 for his human form with his change timer set, ##Leopard=2 for his leopard form before the change timer is set (one game day before he can change back into a human again), and ##Leopard=3 for leopard form with his change timer set. Now, as long as he's human (##Leopard=0 or 1) when the talk that keeps him human occurs, you could advance ##Leopard to something outside that range, like ##Leopard=9, and the timer for him to change back into a leopard.

This is hard to explain without examples. Since it's easier for me to explain using the variable/timer method, I'll use that route. It should be possible to remove a spell from a creature during the course of the game, whether by changing his kit or just removing the spell, but I never got into spell modding beyond the most basic applications (item creation, portrait changes, that kind of thing), so if you opted to go that route, somebody else would have to explain how to remove the spells.

Anyway, let's start with his regular script. If you wanted to have him change into a leopard involuntarily if his timer expires once he's talked to but before he's actually recruited, you'd put this in the area script where you want him to spawn.

IF 
    Exists("##MyDV")                         // ## is your prefix, here and elsewhere, MyDV is your NPC's death variable ('script name' in NI)
    Global("##MyNPCTalkedTo","ARxxxx",1)     // set this the first time he speaks to the party, ARxxxx is the area 
    Global("##Leopard","GLOBAL",0) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        SetGlobalTimer("##LeopardTime","GLOBAL",THREE_HOURS) 
        SetGlobal("##Leopard","GLOBAL",1) 
END 

IF 
    GlobalTimerExpired("##LeopardTime","GLOBAL") 
    Global("##Leopard","GLOBAL",1) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        ApplySpell("##MyDV",##LEP1)           // Check syntax, ##LEP1 changes him to a leopard 
        SetGlobal("##Leopard","GLOBAL",2) 
END 

IF 
    Exists("##MyDV")                         // ## is your prefix, here and elsewhere, MyDV is your NPC's death variable ('script name' in NI)
    Global("##MyNPCTalkedTo","ARxxxx",1)     // set this the first time he speaks to the party, ARxxxx is the area 
    Global("##Leopard","GLOBAL",2) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        SetGlobalTimer("##LeopardTime","GLOBAL",ONE_DAY) 
        SetGlobal("##Leopard","GLOBAL",3) 
END 

IF 
    GlobalTimerExpired("##LeopardTime","GLOBAL") 
    Global("##Leopard","GLOBAL",3) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        ApplySpell("##MyDV",##LEP2)           // Check syntax, ##LEP2 changes him back into a human 
        SetGlobal("##Leopard","GLOBAL",0) 
END 


Easy enough?

So let's move on to his override script. Let's call it ##MyNPCS.baf
IF 
    InParty(Myself)                         // ## is your prefix, here and elsewhere, MyDV is your NPC's death variable ('script name' in NI)
    Global("##Leopard","GLOBAL",0) 
    !StateCheck(Myself,CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        SetGlobalTimer("##LeopardTime","GLOBAL",THREE_HOURS) 
        SetGlobal("##Leopard","GLOBAL",1) 
END 

IF 
    GlobalTimerExpired("##LeopardTime","GLOBAL") 
    Global("##Leopard","GLOBAL",1) 
    !StateCheck(Myself,CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        ApplySpell(Myself,##LEP1)           // Check syntax, ##LEP1 changes him to a leopard 
        SetGlobal("##Leopard","GLOBAL",2) 
END 

IF 
    InParty(Myself)                         // ## is your prefix, here and elsewhere, MyDV is your NPC's death variable ('script name' in NI)
    Global("##Leopard","GLOBAL",2) 
    !StateCheck(Myself,CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        SetGlobalTimer("##LeopardTime","GLOBAL",ONE_DAY) 
        SetGlobal("##Leopard","GLOBAL",3) 
END 

IF 
    GlobalTimerExpired("##LeopardTime","GLOBAL") 
    Global("##Leopard","GLOBAL",3) 
    !StateCheck(Myself,CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        ApplySpell(Myself,##LEP2)           // Check syntax, ##LEP2 changes him back into a human 
        SetGlobal("##Leopard","GLOBAL",0) 
END 


So, what happens if he's kicked out? Wouldn't he stay in whatever form he was last in? Not if you didn't want him to.

You're going to have to send him somewhere. I don't know if he'd really want to go back to the Guarded Compound to hang out, but if he's going to be changing back and forth between a leopard and a human, he's going to have to go someplace safe, yet someplace he could potentially buy supplies, while human. So let's say he goes to the Umar Hills. That's AR1100. I'll leave it to you to find the coordinates.

You'd put this in the area script for the Umar Hills, AR1100.bcs
IF 
    Exists("##MyDV")                         // ## is your prefix, here and elsewhere, MyDV is your NPC's death variable ('script name' in NI)
    !InParty("##MyDV")                       // he's already been in the party once, but now he's not 
    Global("##Leopard","GLOBAL",0) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        SetGlobalTimer("##LeopardTime","GLOBAL",THREE_HOURS) 
        SetGlobal("##Leopard","GLOBAL",1) 
END 

IF 
    GlobalTimerExpired("##LeopardTime","GLOBAL") 
    Global("##Leopard","GLOBAL",1) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        ApplySpell("##MyDV",##LEP1)           // Check syntax, ##LEP1 changes him to a leopard 
        SetGlobal("##Leopard","GLOBAL",2) 
END 

IF 
    Exists("##MyDV")                         // ## is your prefix, here and elsewhere, MyDV is your NPC's death variable ('script name' in NI)
    !InParty("##MyDV")                       // he's alredy been in the party once, but now he's not  
    Global("##Leopard","GLOBAL",2) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        SetGlobalTimer("##LeopardTime","GLOBAL",ONE_DAY) 
        SetGlobal("##Leopard","GLOBAL",3) 
END 

IF 
    GlobalTimerExpired("##LeopardTime","GLOBAL") 
    Global("##Leopard","GLOBAL",3) 
    !StateCheck("##MyDV",CD_STATE_NOTVALID) 
THEN 
    RESPONSE #100 
        ApplySpell("##MyDV",##LEP2)           // Check syntax, ##LEP2 changes him back into a human 
        SetGlobal("##Leopard","GLOBAL",0) 
END 


So, how about disabling that shape change? That will be the easiest thing I've had to explain so far. This is the dialogue state where the curse is removed. It will be somewhere in somebody's dialogue file. Since we're using a global variable for this, it won't matter whose dialogue file or where. It could even be in ToB, since variables are carried over.


IF ~~ over_at_last 
SAY ~At last, I am free of that curse, now and forever.~ 
IF ~~ THEN DO ~SetGlobal("##Leopard","GLOBAL",9)~ EXIT 
END 


And that's it. You never have to think about spell durations or timers expiring or anything else with regards to shape change ever again. And the spell will be simple, too, since all you're going to have to do is make the ##LEP1 change his animation to a leopard and make ##LEP2 remove the animation change. Just be sure to set the timing mode to 9-permanent after death, or he'll change back to a human if he dies or if somebody uses CTRL-R on him. And you'll probably want to set it for no dispell/bypass resistance, too. You'll see all about that when you actually make the spell.

Okay, my brain has fried for now, so I'll serve it with some chips later today. I'll get working on dialogue as you suggest. I can do that, at least. I have my trusty Quill Of Rapid Writing +2 ready. Now all I need to do is write stuff that makes sense. One little mistake turns Aerie into an ogre. Oh wait, she is.

That sense of humor will serve you well. NPC modding has its ups and downs, and a wide variety of headaches. Get the basics down first, and the rest will come later.

Edited by berelinde, 18 February 2010 - 07:02 AM.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#14 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 18 February 2010 - 07:45 AM

Oh wow, such a big post! :o It will be of tremendous help. I owe you now. Thank you very much.
Quote quote, where be ye quote button...? ..AHA! Hiding from me, were you? <_< Naughty.

Yes, it's possible to do it the second way, no matter whether you opt to follow Miloch's suggestion or mine. And don't forget that Jahiera is also a druid, or that Valygar is also a ranger. Neither really shows much inclination to commune with animals, however, so if you wanted to limit help of that kind to Cernd and/or Minsc, you could do that. You could also make it possible for any PC or NPC with a druid/ranger class/kit to speak with him in leopard form. Entirely up to you.


I'll think about that. I completely forgot about the PC also being able to handle it. You hit the nail on the head with Jaheira and Valygar, too.

I will make this one small suggestion, however. It might seem fun from a certain perspective to add that element of realism, but when you're sitting there staring at a complex dialogue file and trying to figure out what went wrong, it won't seem so fun. Doing things the easy way might, at times, seem like you're sacrificing truth for convenience, and perhaps you are. Whether you ultimately decide to simplify or not will depend on a balance between the amount of time you want to devote to the project, your coding knowledge, and your desire to inconvenience players as little as necessary. Where the balance lies is up to you to discover.


Good point you have there. It was merely an idea that occured to me as I was writing that post. I'll give that some thought, too.

That sense of humor will serve you well. NPC modding has its ups and downs, and a wide variety of headaches. Get the basics down first, and the rest will come later.


Hehehe, thank you. Speaking of the basics, I've given him a name. He'll be called Ezekiel now. I also gave him a character sheet in the first post, one that probably needs some tweaking, as I'm not very good at creating decent fitting stats for characters. My 17 year-old mage girl always has 16 or 17 Intelligence, and she's not even a bookworm!
Left the modding forums

#15 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 19 February 2010 - 02:18 AM

This morning I had some free time while waking up, so I wrote the first encounter with human Zeke, plus a couple of Zeke/NPC banters. Additionally, I've tried finding a good soundtrack for his lovetalks, but I haven't had much luck so far. Listening to lots of Skinny Puppy lately probably isn't doing much to help, either. :doh: :D I'm also thinking on getting a portrait commissioned.
Left the modding forums

#16 berelinde

berelinde

    Troublemaker

  • Modder
  • 4916 posts

Posted 19 February 2010 - 06:11 AM

I like the idea of swapping the portrait, depending on which form he's in. For that, you would have to include another effect in your spell, but that part is dead easy.

"Imagination is given to man to console him for what he is not; a sense of humor, for what he is." - Oscar Wilde

berelinde's mods
TolkienAcrossTheWater website
TolkienAcrossTheWater Forum


#17 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 20 February 2010 - 07:46 AM

Thank you. Edwin Romance gave me that idea. :) Yes, I figured it wouldn't be as hard as the other coding fragments.
Left the modding forums

#18 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 21 February 2010 - 01:03 AM

I'm dead beat after last night. Woozle-raahh...

I wrote some more dialogue, though. A couple of banters again. I wonder how many I should put in? Seeing how he'll be unable to converse for the most part, I wouldn't want 5 banters to trigger when he's morphed to human form, in addition to a LoveTalk. That goes even more for interjections. He won't be able to interject while in leopard form, so many interjections might (will?) be missed during the first playthrough.

So the question is, how much is enough?
Left the modding forums

#19 vilkacis

vilkacis

    Rashemen REPRESENT! Word to yo hamsta!

  • Modder
  • 1571 posts

Posted 21 February 2010 - 06:15 AM

I think two with each character is usually seen as the "standard" for mod npcs, but as long as you don't have enough content to drown out the original characters, I doubt anyone is going to complain if you add more. Likewise, if he only has one talk with characters he doesn't get along with or has nothing to talk to about, you can easily get away with just a single talk. So basically, it's up to how much you feel like writing.

...and also, I think it would rather make sense to have people crowd around for a "so you were a leopard five minutes ago, how's that working out for you" talk when he changes. But that's Earth logic, so it may not apply here in magical unicorn land.

#20 Phobia

Phobia

    Zeke's everything

  • Member
  • 87 posts

Posted 22 February 2010 - 12:09 AM

I think two with each character is usually seen as the "standard" for mod npcs, but as long as you don't have enough content to drown out the original characters, I doubt anyone is going to complain if you add more. Likewise, if he only has one talk with characters he doesn't get along with or has nothing to talk to about, you can easily get away with just a single talk. So basically, it's up to how much you feel like writing.


Two sounds good to begin with, in SoA at least. Thank you for letting me know! :D

...and also, I think it would rather make sense to have people crowd around for a "so you were a leopard five minutes ago, how's that working out for you" talk when he changes. But that's Earth logic, so it may not apply here in magical unicorn land.


Although stranger things have happened in the Realms, it is still an unusual condition. I imagine it would indeed be a subject of much conversation. However, I plan to give Zeke more dimensions than just "He's a leopard boy", and not just during LoveTalks. :)
Left the modding forums