Jump to content

Battle is not the place for flirting...


plainab

Recommended Posts

I recently (2-3 days ago) downloaded and installed Gavin for Easytutu non-totsc. Anywho things are going great between Sasha and Gavin with the exception that on occasion he likes to stop what he's doing (no matter where or what's going on) and flirt/chat with the pc. Now Sasha is a pretty forgiving girl (totally unlike me :)that would be the girl part), but she just doesn't think that being surrounded by hobgoblins is a good place for Gavin to want to touch her face. Sure the game pauses while they talk, but it's the principle of the thing....

 

That said, is there anyway that some combat checks could be put in place so that the various talks don't fire in the middle of pitched battle? but perhaps after it is done when all the other checks are true....

Link to comment

Yeah, I'd call that bad timing!

 

I use both CombatCounter(0) and !See([ENEMY]) in the script for all the flirts (just rechecked the script), so he shouldn't flirt if the party is engaged in melee, but there are limitations to those checks. See() has a range limit, which is actually less than the fog of war, so if enemies are outside that limit, then the check won't work. Sorry about that, but there really isn't a check I can use that would work better. !InMyArea([ENEMY]) might work, but then he wouldn't flirt at all until all spawn points were cleared, which is usually about three seconds before the party moves on to the next area.

 

So, you might get the odd "combat flirt," but it shouldn't happen regularly.

 

Some of the BioWare banters and lovetalks don't have those checks at all. When I was playing BG2, and when the party was just engaging in melee, I used to joke "Hey, look, Anomen! Vampires! Time for a lovetalk." The funniest was when I got the "These pathetic skirmishes of ours aren't worth the time I spend cleaning my weapons after the battle" banter while we were getting our butts kicked trying to rescue Amber. Everybody in the party, except Anomen, of course, was down to about 1/3 of their max hp. I was like "If you're bored, I could use some help over here!"

Link to comment
Ha! I recall reading a post somewhere where some guy wound up with Aerie delivering her baby in a dragon's lair.
But that has to happen when it has to happen.. Actually well thought from the BioWare group. :)

 

But if all those enemy checks don't prevent flirts from firing I don't know what a modder can do.

Link to comment

From my experience, CombatCounter() and See() or Detect() should work like a clock. And judging by the fact it's the first report in the whole year Gavin's been active, they fail very and very rarely. I think.

Link to comment

They fail all the time, actually, during ranged combat and when enemies go invisible whether because of a spell, an innate ability, stealth, or potion use. If the enemies are out of visual range, which in a dungeon is 30', despite what the fog of war shows, or if they're invisible (and the NPC has no way to detect invisible creatures), or if the NPC is blinded (mephits, anyone?), the checks will fail. Many players are used to it, though, or we'd probably all see it reported more often.

 

It's a limitation of the game engine, though, and there really isn't much we can do about it besides use those CombatCounter() and !See()/!Detect() checks to make it as infrequent as possible.

 

It's still useful for players to report it when it does happen, though, because it's an opportunity for the modder to go back and make sure all the checks are in place.

Link to comment
They fail all the time, actually, during ranged combat and when enemies go invisible whether because of a spell, an innate ability, stealth, or potion use. If the enemies are out of visual range, which in a dungeon is 30', despite what the fog of war shows, or if they're invisible (and the NPC has no way to detect invisible creatures), or if the NPC is blinded (mephits, anyone?), the checks will fail.

 

That's why Detect() is King. It accounts for all these situations.

Link to comment

Does !Detect() catch invisible/out of range creatures, even if the NPC is blinded? Neat trick.

 

This is what the IESDP has to say about it:

0x4074 Detect(O:Object*)

Returns true if the the specified object is detected by the active CRE in any way (hearing or sight) .

 

 

I guess as long as the creature was making noise.

Link to comment

Do we think we need a mass replace of

 

See() and !See()

 

with

 

Detect() and !Detect(),

 

for BG1NPC? (and other stuff)

 

There are few banters which actually requite the See() condition, and most of those are better served by InMy Area. But if Detect() is a looser restriction, it would allow more content to be available for the player. ActuallyInCombat() seems to fail if CombatCounter(0) fails, but that one is better left for expert advice by devSin, igi, Avenger, Nythrun, et al...

Link to comment

See() and !See() are going to catch it 99% of the time.

 

Don't forget that a mass replace of *anything* is bound to be disastrous. Also, I don't know how folks feel about having a companion start chatting away when the listener is supposed to be hidden, but I think it's really jarring. Here's Liiya, the superthief, hidden in shadows and starting to approach the doorway, when suddenly, Coran chimes in with a flirt. I'd clobber him on the ear. Using a See(Player1) check prevents that.

Link to comment

I think this is the point where I remind you about Mass Variable Replace and Branwen romance being inactive for nearly half a year now as a result(well, "inactive" part, not "half a year part").

 

Yes, you can tell I'm unhappy about that. :)

Link to comment

Thanks, aVENGER_(RR)!

 

It sounds like the only "win" for using Detect() vs See() is for the possibility of invisible .cres not contributing. And InMyArea() works for that as a better "universal" call anyways.

 

For Gavin, it sounds like your best bet is to simply leave the code as is. For BG1NPC it sounds like standardization efforts in-project with InMyArea() handle things as is, albeit not to some folk's tastes. On any joint work we do, berelinde, we need to remember to agree up front (I think more in terms of "allow the interjection to play under any possible ok circumstances", especially with people who use Thief Scripts which keep them hiding for 99% of the game...) but it sounds like Detect() might be something for us to play around with - as my standardization is

 

InParty() InMyArea() !SC(x,CD_S_NV)

countered

OR(3) !InParty() !InMyArea() SC(x,CD_S_NV)

 

and it sounds like yours is

 

InParty() See() !SC(x,CD_S_NV)

countered

OR(3) !InParty() !See() SC(x,CD_S_NV)

 

with an enemy check for

 

CombatCounter(0)

!See([ENEMY])

 

which we might move to

 

!ActuallyInCombat() // might be ToB only

CombatCounter(0)

!Detect([ENEMY])

Link to comment

Interjections already use InMyArea(), not See(), for both Gavin and BG1 NPC, so nothing more to do there. The question isn't about interjections, it's about banters, lovetalks, etc.

 

For joint projects, let's take it offline and talk about it when BG1 NPC is done.

Link to comment

Archived

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

×
×
  • Create New...