PDA

View Full Version : envirosuits and sonic emitters


jinger
05-24-2006, 05:42 PM
i want a party in the underwater manaan modules, leaving behind only wookies and droids if any of them are in the party, i need some help :P though it's a cool idea to have a whole party in envsuits i want this because of Carth, Bastila, Canderous and Jolee: they have some dialog lines down there. i figured i'll have to mod the uti's for the sonic emitter and the envsuit (stack size : 3), the airlock dialog too. i still don't know however how do i get my party equipped with sonic emitters and envsuits, i gathered from the bytecode of the script loading the module that no ActionEquipItem is performed, the envsuit is a disguise but the sonic emitter?

OB1-KeNOOBIE
05-24-2006, 06:53 PM
Have you tried Manaan "Fish Fest" by messkell post at http://www.pcgamemods.com/mod/7075.html (http://)? I haven't gotten far enough to play it but it sounds pretty close to what you want....maybe you could experiment with it as some of the things you like to do could be contained within. Hope it helps.

edit: This mod (I believe) makes it so you don't wear the environmental suits and can use your real weapons underwater, the opposite of what you wanted. Still you might take a look b/c it also permits you to take ?some? party members with you.

jinger
05-24-2006, 07:15 PM
it doesn't seem to help, but thanks :) …talking about sonic emitters i'm guessing they work like stims, you don't have to equip'em. now i only have to figure out what does that manm28aa/k_pman_airlock11.ncs do besides saving the party: looks like the script provides for each airlock the correct starting waypoint for the module to load but i can't figure out how, and other things too, it seems.

stoffe
05-24-2006, 07:31 PM
If I'm not mistaken the source code for the airlock scripts are available in scripts.bif for KotOR1. Some module-specific scripts were placed in the global game data in that game. At least these scripts looks like they could be the ones used, or similar enough to give some idea:


k_pman_airlock01.nss
k_pman_airlock02.nss
k_pman_airlock03.nss
k_inc_man.nss

jinger
05-24-2006, 07:57 PM
not the one i need: manm28aa/k_pman_airlock11.ncs (the one that actually loads the underwater modules), looks like it does something with these strings: "man27_visstm0" and "man26_repdip", maybe it's nothing, i don't know, i took a look at k_inc_man.nss though and i found out what they should be:string STEAM_PLACEABLE = "man27_visstm0";
string ROLAND_TAG = "man26_repdip";at this point i have a question :) when you #include k_inc_man.nss you get the whole thing in your .ncs (even what you don't actually need in the script) or just "what you need"? i mean maybe the script does nothing with that stuff.

EDIT: damn it, they're just globals :D i checked out the .ncs for the other airlock scripts, same there. thanks a lot Stoffe!

stoffe
05-24-2006, 11:05 PM
when you #include k_inc_man.nss you get the whole thing in your .ncs (even what you don't actually need in the script) or just "what you need"? i mean maybe the script does nothing with that stuff.


When you add an include file to a script, all global variables within will be compiled into the script even if they are not used. Only the functions that are called directly or indirectly are added though. Constants (if you use a script compiler that supports them) get substituted for their values before the script is compiled and as such would only end up in the places they were used.

jinger
05-25-2006, 03:40 AM
yes i should've known better than get stuck on that :D the script should be no less than this: void StoreNPC(int nNPC, string sTag);
void DonSuits();

int nNPC1 = -1;
int nNPC2 = -1;

void main()
{

if(IsNPCPartyMember(NPC_HK_47)) StoreNPC(NPC_HK_47,"HK47");
if(IsNPCPartyMember(NPC_T3_M4)) StoreNPC(NPC_T3_M4,"T3M4");
if(IsNPCPartyMember(NPC_ZAALBAR)) StoreNPC(NPC_ZAALBAR,"Zaalbar");
if(nNPC1>=0)
{
SetGlobalNumber("K_PARTY_STORE1",nNPC1);
if(nNPC2>=0) SetGlobalNumber("K_PARTY_STORE2",nNPC2);
SetGlobalBoolean("K_PARTY_STORED",TRUE);
}
DonSuits();
if(GetTag(OBJECT_SELF) == "28d")
{
StartNewModule("manm28ad","from" + GetTag(OBJECT_SELF));
}
else
{
StartNewModule("manm28ab","from" + GetTag(OBJECT_SELF));
}
}

void StoreNPC(int nNPC, string sTag)
{
if(nNPC1<0) nNPC1=nNPC; else nNPC2=nNPC;
SaveNPCState(nNPC);
RemovePartyMember(nNPC);
DestroyObject(GetObjectByTag(sTag));
}

void DonSuits()
{
object oPC;
int nMax = GetPartyMemberCount();
int nIdx;
effect eChange = EffectDisguise(DISGUISE_TYPE_ENVIRONMENTSUIT);
for(nIdx = 0;nIdx < nMax; nIdx++)
{
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eChang e,GetPartyMemberByIndex(nIdx));
}
}
i guess now i know why they decided to leave the party behind: when they talk in their envsuits their voice should sound different, like the merc you find underwater. still on the Leviathan, while wearing the spacesuits it didn't bother them :) anyway it's cool to see my party underwater now