My problem sort of hangs in a grey area between scripting and custom content. I've tried the latter and been directed here, so now I'm posting in this section with a request for help. I am asking for a favor, I know, and yes, I could figure this out on my own given sufficient time, but I am hoping a member of our still-awesome-after-all-these-years community might be willing to help me out.
In a nutshell, my problem is that the 1.69 horse scripts (x3_horse_inc, I believe) reverts PCs to their default appearance by racial type to avoid the old "Help, I'm stuck on a horse!" or "Help, I'm a dwarf!" problems.
The problem arises when I try to use LETO (the exe., not LETO script) to change a PCs appearance. For example, when I change a PC's appearance to a Treant and set the PC race to "plant" the race change "sticks" but the appearance reverts to a Myconind. I know others have faced this same problem and I know Axe Murderer (bless him) has a relatively untested workaround for this (a change to the x3_horse_inc) but I am wondering if someone else has found or might suggest a simple and reliable fix for this problem.
I would prefer not to make extensive changes to my OnClientEnter event because it already handles a lot of the module's basic custom functions. Please fine my OnClientEnter even scrip below for reference. If someone can suggest a change to the x3_mod_def_enter or OnClientEnter script I would be willing to experiment with that (with the advice or guidance or someone more learned in scripting than I).
My scripting knowledge is rudimentary at best, and while my summer project will be to learn more scripting I simply do not have the time to learn much at the present. I'd like to get custom appearances working on my server before this summer though, so if anyone would be gracious enough to help me find a solution I would be extremely grateful.
This topic has been discussed a bit in the dead forums, but I can find no definitive answer there.
//::///////////////////////////////////////////////
//:: DMFI - OnClientEnter event handler
//:: dmfi_onclienter
//:://////////////////////////////////////////////
/*
Event handler for the module-level OnClientEnter event. Initializes DMFI system.
*/
//:://////////////////////////////////////////////
//:: 2008.08.02 tsunami282 - created.
#include "dmfi_init_inc"
////////////////////////////////////////////////////////////////////////
void main()
{
object oUser = GetEnteringObject();
// do any other module OnClientEnter work here
ExecuteScript("x3_mod_def_enter", OBJECT_SELF);
// initialize DMFI
dmfiInitialize(oUser);
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------
And here is my modified x3_mod_def_enter script
//::///////////////////////////////////////////////
//:: Default On Enter for Module
//:: x3_mod_def_enter
//:: Copyright © 2008 Bioware Corp.
//:://////////////////////////////////////////////
/*
This script adds the horse menus to the PCs.
*/
//:://////////////////////////////////////////////
//:: Created By: Deva B. Winblood
//:: Created On: Dec 30th, 2007
//:: Last Update: April 21th, 2008
//:://////////////////////////////////////////////
#include "_kds1_inc"
#include "se_new_player"
#include "pqj_inc"
#include "x3_inc_horse"
void main()
{
RebuildJournalQuestEntries(GetEnteringObject());
KDS1OnClientEnter();
object oPC=GetEnteringObject();
SirElrics_SimplePlayerSetUp(oPC);
RebuildJournalQuestEntries(GetEnteringObject());
ExecuteScript("x3_mod_pre_enter",OBJECT_SELF); // Override for other skin systems
if ((GetIsPC(oPC)||GetIsDM(oPC))&&!GetHasFeat(FEAT_HORSE_MENU,oPC))
{ // add horse menu
HorseAddHorseMenu(oPC);
if (GetLocalInt(GetModule(),"X3_ENABLE_MOUNT_DB"))
{ // restore PC horse status from database
DelayCommand(2.0,HorseReloadFromDatabase(oPC,X3_HORSE_DATABASE));
} // restore PC horse status from database
} // add horse menu
if (GetIsPC(oPC))
{ // more details
// restore appearance in case you export your character in mounted form, etc.
if (!GetSkinInt(oPC,"bX3_IS_MOUNTED")) HorseIfNotDefaultAppearanceChange(oPC);
// pre-cache horse animations for player as attaching a tail to the model
HorsePreloadAnimations(oPC);
DelayCommand(3.0,HorseRestoreHenchmenLocations(oPC));
}
}