I didn't cheat! The remote is a genuine puppet, genuinely attached to my genuine Bao-Dur player. Technically Bao-Dur is still an NPC, so the puppet recognizes him as its owner. I'm still working out all the kinks. Switching characters has a tendency to crash the game, and as always puppets complicate the matter. I've filtered out most of the problems. I think the only one left is that doing anything, and I mean anything, while it's switching characters will cause the game to crash immediately. I'd say it happens around 5% of the time, maybe less. I can usually avoid it if I'm careful. It might just be how I'm firing it, though (through a computer screen).

While trying to keep the party members between switches, I didn't properly account for the number of party members - two would get kept while one would be thrown out, turning the whole thing into the most boring game of musical chairs.

Nope, still has to be an NPC - believe me, I tried. However, this might interest you:

YouTube Video

Player as a party member, yes, that's correct. And only 10 party members? Rubbish! The new player NPC is in Hanharr's slot, and Mira remains unaffected - though the GUI becomes buggy (additionally, the character with the higher NPC ID number is always shown) Using this method, I've managed to get a party with Mira and Hanharr, Handmaiden and Disciple, and the rest - all 12.

So I do believe it would be possible to functionally give the player a puppet, at least temporarily - maybe even permanently with a lot of work.

EDIT: Just a brief update...

Good news: Strangely enough, though, my player NPC can use the party selection screen, while other NPCs cannot. That's a good thing, though. Well, good that the player NPC can still use it, bad that the others can't, but I already knew that. And I did manage to give myself the remote, and it worked perfectly.

Bad news: Entering the Ebon Hawk as anyone other yourself crashes the game (even without the complicated player switching - simply warping there while you're controlling a party member will do it). And I can now confirm a player NPC is no different. I thought it might be because of the party selection oddity, but no such luck. So something would have to be done about that.

And just some musing: When I tried to assign the remote to my PC, it would not follow me around, nor would it automatically spawn I entered a new module. However, when I assigned my player NPC a puppet without the proper heartbeat script required to make it follow me around, it still automatically spawned when I entered a new module. This leads me to believe that the AssignPUP function, which assigns the puppet to the NPC, must not include -1 as a possible puppet owner, thus making it impossible to give a puppet to the PC, whose NPC integer is -1. The party selection screen, on the other hand, must work by object tag or something else that the other NPCs don't have and not the NPC integer, or else my player NPC wouldn't be able to use it. Now, I believe both of these elements are hard coded, but perhaps there is some way around it.

Gotta say though I had a feeling about the party members. They each have their own index so you could essentially add everyone to your party, but of course only certain ones would show up in the GUI. Might be some handy stuff to be learned from all this here, but who knows? I wonder if the Party indexes are hardcoded or if... for instance, they're represented in some 2da file? Should the latter be true, we might have an interesting concept at hand here... Imagine spawning additional custom party members via some sort of wristband console. Not as elegant as control panel GUIs, but a novel idea at least I'd say.

I honestly don't see why one couldn't just spawn whatever NPC and have a follow script in its heartbeat slot? The effects are almost the same, although one would have to modify every onEnter and onExit script in every module...

... but there are some fields in the module.ifo for each module that support this capability - and the good news is most are currently empty so, modifying these fields hopefully wouldn't cause too many issues, if they work at all. I've used mod_OnPlrLvlUp before and it actually worked! (though only for the PC).

So if you have time, play with these fields in module.ifo for your choice area

mod_OnClientEntr
mod_OnClientLeave
mod_OnModLoad
mod_OnModStart

If it works, I'd think it'd be a lot cleaner than what you're experimenting with

I wonder if the Party indexes are hardcoded or if... for instance, they're represented in some 2da file? Should the latter be true, we might have an interesting concept at hand here... Imagine spawning additional custom party members via some sort of wristband console. Not as elegant as control panel GUIs, but a novel idea at least I'd say.

No luck - they're defined in NWScript. Can't add any.

Quote:

I honestly don't see why one couldn't just spawn whatever NPC and have a follow script in its heartbeat slot? The effects are almost the same, although one would have to modify every onEnter and onExit script in every module...

Well, the problem is, you can do a lot more with party members - level them up, change their equipment, and so on. And the only way to save that information is with the party table. It seems to be impossible to move a character to another module by any other means.

So yeah, it could be done, maybe. But there's a lot of messy work involved and it wouldn't be nearly as functional as the real thing.

I actually was working on this, and transferring information was precisely the problem. Basically, I wanted to spawn a copy of a party member but be able to give them different dialogue (to go back to the ship, switch weapons, etc) and still follow you. So a new UTC would be necessary, but there's no way to set certain stats with a script. Yes, you can change appearance, give powers and feats, and (in K2 at least) adjust skills and attributes, but you can't change a character's level or class... and even so, writing a script to do all this would be tedious work.

Okay, got it to actually work, pretty much akin to the movie at the top.
Now just to see it wont give issues down the line, like Bao-Dur having 2 remotes

EDIT: Crashes when loading a save, crashes when changing a level. Not a good idea. Works fine adding it to another NPC though, sadly enough, they will stick around with it forever... hmmm...
EDIT2: Figured I could be clever, destroying the NPC, then re-adding them to the roster. Alas, it still re-added remote upon loading a save/adding to party.

Okay, got it to actually work, pretty much akin to the movie at the top.
Now just to see it wont give issues down the line, like Bao-Dur having 2 remotes

EDIT: Crashes when loading a save, crashes when changing a level. Not a good idea. Works fine adding it to another NPC though, sadly enough, they will stick around with it forever... hmmm...
EDIT2: Figured I could be clever, destroying the NPC, then re-adding them to the roster. Alas, it still re-added remote upon loading a save/adding to party.

I think I will just give up then 0_o

Simple, HH. From what it sounds like, you made the Remote spawn and be assigned when it's owner was spawned, in the OnSpawn event right? Then do an if check for a global boolean, and if it's 0, don't assign the puppet. That way, you can set the boolean to 1 at the end of Duxn...

Yeah, it does seem to crash when loading a save. Considering you only need it for two modules, it might be easier to edit the modules' heartbeat scripts to spawn a remote NPC if Bao-Dur is in the module, give it the puppet faction, and give that NPC a different script to make it follow Bao-Dur. Functionally it should be close enough. Only problem is copying the remote's stats, with the restored upgrade scenes considered.