// HardCore Module Destruction of dropped object // Archaegeo 2002 Jun 24th // 28 June 2002 Now also works with the drag corpse system to move players about // Update: No Drop Script added for the subrace spell-like ability items // - Panduh #include "hc_inc" #include "hc_inc_transfer" #include "hc_text_unacq" #include "i_tagtests" #include "anph_inc" void main() { object oDropped = GetModuleItemLost(); string sDTag=GetTag(oDropped); object oPC=GetModuleItemLostBy(); // If someone drops a corpse, move the Death Corpse (item container) to where // the PC Token was dropped, and then put the PC Token back in it if (sDTag=="PlayerCorpse") { object oPoss=GetItemPossessor(oDropped); if(oPoss==OBJECT_INVALID && GetTag(GetArea(oDropped))=="") { return; } object oDC=GetLocalObject(oDropped,"DeathCorpse"); object oOwner=GetLocalObject(oDropped,"Owner"); string sName=GetLocalString(oDropped,"Name"); string sCDK=GetLocalString(oDropped,"Key"); // If a Death Corpse exits, move all the stuff from the old one to the new one // at the new location object oDeadMan; object oDeathCorpse; if(GetIsObjectValid(oDC)) { oDeathCorpse=CreateObject(OBJECT_TYPE_PLACEABLE, "DeathCorpse", GetLocation(oDropped)); } // Otherwise make a Death Corpse to put the new Player Corpse Token on else { oDeathCorpse=CreateObject(OBJECT_TYPE_PLACEABLE, "DeathCorpse", GetLocation(oDropped)); } // Make a new PC Token to put on the new Death Corpse oDeadMan=CreateItemOnObject("PlayerCorpse", oDeathCorpse); SetLocalObject(oDeadMan,"Owner",oOwner); SetLocalString(oDeadMan,"Name",sName); SetLocalString(oDeadMan,"Key", sCDK); SetLocalObject(oDeadMan,"DeathCorpse",oDeathCorpse); SetLocalInt(oDeadMan,"Alignment",GetLocalInt(oDropped,"Alignment")); SetLocalString(oDeadMan,"Deity",GetLocalString(oDropped,"Deity")); SetLocalObject(oMod,"DeathCorpse"+sName+sCDK,oDeathCorpse); SetLocalObject(oMod,"PlayerCorpse"+sName+sCDK,oDeadMan); SetLocalObject(oDeathCorpse,"Owner",oOwner); SetLocalString(oDeathCorpse,"Name",sName); SetLocalString(oDeathCorpse,"Key",sCDK); SetLocalObject(oDeathCorpse,"PlayerCorpse",oDeadMan); // Destroy the old dropped PC Token DestroyObject(oDropped); hcTransferObjects(oDC, oDeathCorpse); DestroyObject(oDC); } }