97 lines
2.5 KiB
Plaintext
97 lines
2.5 KiB
Plaintext
|
/////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Craftable Natural Resources (CNR) by Festyx
|
||
|
//
|
||
|
// Name: cnr_skin_onused
|
||
|
//
|
||
|
// Desc: The OnUsed handler for skinnable corpses.
|
||
|
//
|
||
|
// Author: David Bobeck 18Feb03
|
||
|
//
|
||
|
/////////////////////////////////////////////////////////
|
||
|
#include "cnr_config_inc"
|
||
|
#include "cnr_language_inc"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
string sCorpseType = GetLocalString(OBJECT_SELF, "CnrCorpseType");
|
||
|
location locCorpse = GetLocation(OBJECT_SELF);
|
||
|
|
||
|
// prevent rapid-clicks from getting multiple skins!
|
||
|
if (sCorpseType == "") return;
|
||
|
|
||
|
object oUser = GetLastUsedBy();
|
||
|
if (!GetIsPC(oUser)) return;
|
||
|
|
||
|
// Player must have a skinning knife equipped
|
||
|
int bHasKnife = FALSE;
|
||
|
object oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oUser);
|
||
|
if (GetIsObjectValid(oItem))
|
||
|
{
|
||
|
if (GetTag(oItem) == "cnrSkinningKnife")
|
||
|
{
|
||
|
bHasKnife = TRUE;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (bHasKnife == FALSE)
|
||
|
{
|
||
|
oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oUser);
|
||
|
if (GetIsObjectValid(oItem))
|
||
|
{
|
||
|
if (GetTag(oItem) == "cnrSkinningKnife")
|
||
|
{
|
||
|
bHasKnife = TRUE;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (bHasKnife == FALSE)
|
||
|
{
|
||
|
FloatingTextStringOnCreature(CNR_TEXT_YOU_MUST_HOLD_A_SKINNING_KNIFE, oUser, FALSE);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
DeleteLocalString(OBJECT_SELF, "CnrCorpseType");
|
||
|
|
||
|
// sCorpseType will have a format of cnraXXXX where XXXX is the animal name
|
||
|
string sAnimalName = GetStringRight(sCorpseType, GetStringLength(sCorpseType)-4);
|
||
|
string sSkinTag = "cnrSkin" + sAnimalName;
|
||
|
|
||
|
int bCreateMeat = TRUE;
|
||
|
if (sAnimalName == "Rat") bCreateMeat = FALSE;
|
||
|
if (sAnimalName == "Bat") bCreateMeat = FALSE;
|
||
|
if (sAnimalName == "Badger") bCreateMeat = FALSE;
|
||
|
|
||
|
if (sSkinTag != "TAG_UNKNOWN")
|
||
|
{
|
||
|
object oSkin = CreateObject(OBJECT_TYPE_ITEM, sSkinTag, locCorpse);
|
||
|
AssignCommand(oUser, ActionPickUpItem(oSkin));
|
||
|
FloatingTextStringOnCreature(CNR_TEXT_YOU_ACQUIRED_A_SKIN, oUser, FALSE);
|
||
|
|
||
|
if (bCreateMeat)
|
||
|
{
|
||
|
object oMeat;
|
||
|
if (CNR_BOOL_ENABLE_HCR_ITEM_CRAFTING)
|
||
|
{
|
||
|
oMeat = CreateObject(OBJECT_TYPE_ITEM, "it_mmidmisc006", locCorpse);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
oMeat = CreateObject(OBJECT_TYPE_ITEM, "cnranimalmeat", locCorpse);
|
||
|
}
|
||
|
AssignCommand(oUser, ActionPickUpItem(oMeat));
|
||
|
FloatingTextStringOnCreature(CNR_TEXT_YOU_ACQUIRED_SOME_MEAT, oUser, FALSE);
|
||
|
}
|
||
|
|
||
|
object oBones = GetLocalObject(OBJECT_SELF, "CnrCorpseBones");
|
||
|
if (GetIsObjectValid(oBones))
|
||
|
{
|
||
|
DeleteLocalObject(OBJECT_SELF, "CnrCorpseBones");
|
||
|
DestroyObject(oBones);
|
||
|
}
|
||
|
DestroyObject(OBJECT_SELF);
|
||
|
}
|
||
|
}
|
||
|
|