void ModifyClone(object oClone) { AssignCommand(oClone, SetIsDestroyable(FALSE, FALSE, FALSE)); int nHP = GetMaxHitPoints(oClone); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHP), oClone); object oItem = GetFirstItemInInventory(oClone); while (GetIsObjectValid(oItem) == TRUE) { DestroyObject(oItem); oItem = GetNextItemInInventory(oClone); } } #include "NW_I0_GENERIC" void CommandClone(object oClone,object oTarget) { SetIsTemporaryEnemy(oTarget,oClone); AdjustReputation(oTarget,oClone, -100); DelayCommand(0.5,AssignCommand(oClone,PlayVoiceChat(VOICE_CHAT_TAUNT, oClone))); DelayCommand(1.5,AssignCommand(oClone,ActionAttack(oTarget,FALSE))); AssignCommand(oClone,DetermineCombatRound(oTarget)); } void DestroyClone(object oClone) { effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2); int nHealth = GetMaxHitPoints(oClone); effect eDeath = EffectDamage(nHealth,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_ENERGY); location lClone = GetLocation(oClone); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eVis,lClone); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eDeath,oClone); } #include "x2_inc_switches" void main() { int nEvent =GetUserDefinedItemEventNumber(); if (nEvent ==X2_ITEM_EVENT_UNEQUIP) return; if (nEvent ==X2_ITEM_EVENT_EQUIP) return; if (GetTag(GetItemActivated()) == "clone_test_ring3") { object oTarget = GetItemActivatedTarget(); object oPC = GetItemActivator(); if ((GetObjectType(GetItemActivatedTarget())!=OBJECT_TYPE_CREATURE)) { SendMessageToPC(oPC, "Improper use of item!"); return; } location lWp = GetLocation(oTarget); object oClone = CopyObject(oPC, lWp); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_MYSTICAL_EXPLOSION),lWp); ModifyClone(oClone); CommandClone(oClone,oTarget); DelayCommand(150.0,DestroyClone(oClone)); } }