public static void MountHorse(CLRScriptBase script, uint Character, uint Horse)
{
if (!isWarhorse.ContainsKey(Character)) isWarhorse.Add(Character, true);
string cloakResRef;
switch(script.GetTag(Horse))
{
case "abr_cr_an_horse01":
cloakResRef = "acr_ooc_horse01";
isWarhorse[Character] = true;
break;
case "abr_cr_an_horse02":
cloakResRef = "acr_ooc_horse02";
isWarhorse[Character] = true;
break;
case "abr_cr_an_horse03":
cloakResRef = "acr_ooc_horse03";
isWarhorse[Character] = true;
break;
default:
cloakResRef = "acr_ooc_horse03";
isWarhorse[Character] = true;
break;
}
uint horseCloak = script.CreateItemOnObject(cloakResRef, Character, 1, "", CLRScriptBase.FALSE);
if (script.GetLocalInt(Horse, ACR_IS_WARHORSE) == 1)
{
script.RemoveHenchman(Character, Horse);
script.SetLocalInt(horseCloak, ACR_IS_WARHORSE, 1);
}
script.SetLocalInt(horseCloak, ACR_HORSE_ID, script.GetLocalInt(Horse, ACR_HORSE_ID));
script.SetLocalInt(horseCloak, ACR_HORSE_HP, script.GetCurrentHitPoints(Horse));
uint equippedCloak = script.GetItemInSlot(CLRScriptBase.INVENTORY_SLOT_CLOAK, Character);
if (script.GetIsObjectValid(equippedCloak) == CLRScriptBase.TRUE)
{
foreach (NWItemProperty prop in script.GetItemPropertiesOnItem(equippedCloak))
{
// copying property duration type prevents us from turning temporary properties into
// permanent ones. But because we don't know how long the non-permanent ones have left,
// we pretty much have to assign them with the expectation that they immediately expire.
script.AddItemProperty(script.GetItemPropertyDurationType(prop), prop, horseCloak, 0.0f);
}
script.SetFirstName(horseCloak, script.GetName(equippedCloak) + "(( Horse Appearance ))");
script.AddItemProperty(CLRScriptBase.DURATION_TYPE_PERMANENT, script.ItemPropertyWeightReduction(CLRScriptBase.IP_CONST_REDUCEDWEIGHT_80_PERCENT), horseCloak, 0.0f);
}
script.SetPlotFlag(horseCloak, CLRScriptBase.TRUE);
script.SetPlotFlag(Horse, CLRScriptBase.FALSE);
script.AssignCommand(Horse, delegate { script.SetIsDestroyable(CLRScriptBase.TRUE, CLRScriptBase.FALSE, CLRScriptBase.FALSE); });
script.AssignCommand(Horse, delegate { script.DestroyObject(Horse, 0.0f, CLRScriptBase.FALSE); });
script.AssignCommand(Character, delegate { script.ActionEquipItem(horseCloak, CLRScriptBase.INVENTORY_SLOT_CLOAK); });
if (!isWarhorse[Character]) script.DelayCommand(6.0f, delegate { RidingHeartbeat(script, Character); });
}