Files
Anphillia_PRC8/_module/nss/x3_dm_tool09.nss
Jaysyn904 28cdb617b3 Initial commit
Adding all of the current content for Anphillia Unlimited.
2024-01-04 07:49:38 -05:00

69 lines
2.5 KiB
Plaintext

#include "anph_inc"
#include "nwnx_time"
void main()
{
object oUser = OBJECT_SELF;
object oTarget = GetSpellTargetObject();
if (oTarget == oUser)
{
SendMessageToPC(oUser, "Cloning tool disarmed. Use it again to pick an object to clone (select ground for areas)");
DeleteLocalObject(oUser, "DMTOOL_CLONE_OBJECT");
return;
}
object oToClone = GetLocalObject(oUser, "DMTOOL_CLONE_OBJECT");
if (!GetIsObjectValid(oToClone))
{
if (oTarget == OBJECT_INVALID)
{
oTarget = GetAreaFromLocation(GetSpellTargetLocation());
}
else if (GetObjectType(oTarget) != OBJECT_TYPE_CREATURE && GetObjectType(oTarget) != OBJECT_TYPE_ITEM)
{
SendMessageToPC(oUser, "Only creatures, items and ground (areas) can be cloned with this tool.");
return;
}
SetLocalObject(oUser, "DMTOOL_CLONE_OBJECT", oTarget);
SendMessageToPC(oUser, "Cloning " + GetName(oTarget) + ". Use the tool again and select the location.");
SendMessageToPC(oUser, "If you're cloning an area, select any location.");
return;
}
else
{
if (GetObjectType(oToClone) == OBJECT_TYPE_CREATURE)
{
CopyObject(oToClone, GetSpellTargetLocation());
}
if (GetObjectType(oToClone) == OBJECT_TYPE_ITEM)
{
if (GetIsObjectValid(oTarget))
{
CopyItem(oToClone, oTarget, TRUE);
SendMessageToPC(oUser, GetName(oToClone) + " cloned into " + GetName(oTarget) + "'s inventory.");
}
else
CopyObject(oToClone, GetSpellTargetLocation());
}
else if (GetIsAreaNatural(oToClone) != AREA_INVALID)
{
string sName = GetName(oToClone);
if (sName == "Axfell" || sName == "Fort Cleaven" || sName == "Ranzington")
{
SendMessageToPC(oUser, "Bad! Don't use this to clone fort areas, other systems might get messed");
SendMessageToPC(oUser, "(if you really know what you're doing, you know how to bypass this)");
return;
}
CreateArea(GetResRef(oToClone), "", " Clone - " + GetName(oToClone));
SendMessageToPC(oUser, "Area cloned as ' Clone - "+ GetName(oToClone)+"', find it in the Chooser");
}
SendMessageToPC(oUser, "Note that your tool is still armed, and you can create more clones. Use on self to disarm.");
}
}