///////////////////////////////////////////////////////// // // Craftable Natural Resources (CNR) by Festyx // // Name: cnr_minbath_ou // // Desc: This is the OnUsed handler for Mineral Baths. // Mystery minerals found in its inventory are // converted to known gem minerals. // // This OnUsed handler is meant to fix a Bioware // bug that sometimes prevents placeables from // getting OnOpen or OnClose events. This OnUsed // handler in coordination with the OnDisturbed // ("cnr_device_od") handler work around the bug. // // Author: David Bobeck 07Apr03 // ///////////////////////////////////////////////////////// #include "cnr_language_inc" #include "hc_inc" #include "anph_inc" #include "eye_scalp_inc" void main() { // Note: A placeable will receive events in the following order... // OnOpen, OnUsed, OnDisturbed, OnClose, OnUsed. if (GetLocalInt(OBJECT_SELF, "bCnrDisturbed") != TRUE) { // Skip if the contents have not been altered. return; } SetLocalInt(OBJECT_SELF, "bCnrDisturbed", FALSE); // If the Bioware bug is in effect, simulate the closing if (GetIsOpen(OBJECT_SELF)) { AssignCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_PLACEABLE_CLOSE)); } object oUser = GetLastUsedBy(); string sScalpTag; string sScalpResRef; string sFloat; object oItem = GetFirstItemInInventory(OBJECT_SELF); while (oItem != OBJECT_INVALID) { if (GetStringLowerCase(GetStringLeft(GetTag(oItem), 3)) == "scp") { if (GetScalpLevel(oItem) >= 10) { if (GetScalpFaction(oItem) != AnphGetPlayerTeam(oUser)) { if (GetScalpAlignment(oItem) == ALIGNMENT_GOOD) { sScalpResRef = "cnrscalpgood"; sFloat = "You prepared the scalp of a good person!"; } else if (GetScalpAlignment(oItem) == ALIGNMENT_EVIL) { sScalpResRef = "cnrscalpevil"; sFloat = "You prepared the scalp of an evil person!"; } else { sScalpResRef = "cnrscalpneut"; sFloat = "You prepared the scalp of a neutral person!"; } // Scalps do not stack DestroyObject(oItem); object oScalp = CreateItemOnObject(sScalpResRef, oUser, 1); FloatingTextStringOnCreature(sFloat, oUser, FALSE); } else { FloatingTextStringOnCreature("You can't prepare scalps from your own faction.", oUser, FALSE); } } else { FloatingTextStringOnCreature("The person this scalp is from is not powerful enough.", oUser, FALSE); } } oItem = GetNextItemInInventory(OBJECT_SELF); } }