public static void Dismount(CLRScriptBase script, uint Character, uint Cloak, NWLocation Location)
{
string resRef = "";
if (script.GetLocalInt(Cloak, ACR_IS_WARHORSE) == 1)
{
resRef = "abr_cr_an_horse_pal_";
int nPalLevel = script.GetLevelByClass(CLRScriptBase.CLASS_TYPE_PALADIN, Character);
if (nPalLevel >= 15) resRef += "15";
else if (nPalLevel >= 11) resRef += "11";
else if (nPalLevel >= 8) resRef += "8";
else if (nPalLevel >= 5) resRef += "5";
else resRef = "abr_cr_an_horse03";
}
else
{
switch (script.GetTag(Cloak))
{
case "acr_ooc_horse01":
resRef = "abr_cr_an_horse01";
break;
case "acr_ooc_horse02":
resRef = "abr_cr_an_horse02";
break;
case "acr_ooc_horse03":
resRef = "abr_cr_an_horse03";
break;
default:
// Looks like we're not actually dismounting a horse.
return;
}
}
uint Horse = script.CreateObject(CLRScriptBase.OBJECT_TYPE_CREATURE, resRef, Location, CLRScriptBase.FALSE, "");
script.SetLocalInt(Horse, ACR_HORSE_OWNER, script.GetLocalInt(Character, ACR_CID));
script.SetLocalInt(Horse, ACR_HORSE_ID, script.GetLocalInt(Cloak, ACR_HORSE_ID));
int damage = script.GetCurrentHitPoints(Horse) - script.GetLocalInt(Cloak, ACR_HORSE_HP);
if(damage > 0)
{
script.ApplyEffectToObject(CLRScriptBase.DURATION_TYPE_INSTANT, script.EffectDamage(damage, CLRScriptBase.DAMAGE_TYPE_MAGICAL, CLRScriptBase.DAMAGE_POWER_PLUS_TWENTY, CLRScriptBase.TRUE), Horse, 0.0f);
}
if (script.GetLocalInt(Cloak, ACR_IS_WARHORSE) == 1)
{
script.AddHenchman(Character, Horse);
script.SetLocalInt(Horse, ACR_IS_WARHORSE, 1);
script.SetLocalObject(Character, ACR_PAL_WARHORSE, Horse);
}
uint Item = GetOwnershipItemById(script, Character, script.GetLocalInt(Cloak, ACR_HORSE_ID));
script.SetLocalObject(Item , ACR_HORSE_OBJECT, Horse);
script.SetLocalObject(Horse, ACR_HORSE_OBJECT, Character);
script.SetLocalString(Item, ACR_HORSE_PERS_LOC_AREA, script.GetTag(script.GetArea(Horse)));
script.SetLocalFloat(Item, ACR_HORSE_PERS_LOC_X, script.GetPosition(Horse).x);
script.SetLocalFloat(Item, ACR_HORSE_PERS_LOC_Y, script.GetPosition(Horse).y);
script.SetLocalFloat(Item, ACR_HORSE_PERS_LOC_Z, script.GetPosition(Horse).z);
script.SetPlotFlag(Cloak, CLRScriptBase.FALSE);
script.DestroyObject(Cloak, 0.0f, CLRScriptBase.FALSE);
isWarhorse.Remove(Character);
}