// hos_equip item void fnDoChange(string sID,int nApp,object oPC) { // change PC to appearance and make faction friendly object oWP=GetWaypointByTag(sID+"_RESOURCES"); object oCr; SetCreatureAppearanceType(oPC,nApp); SendMessageToPC(oPC,"You feel a change take place."); if (sID!=GetLocalString(oPC,"sTeamID")) { // adjust reputation oCr=CreateObject(OBJECT_TYPE_CREATURE,sID+"0",GetLocation(oWP)); AdjustReputation(oPC,oCr,100); } // adjust reputation } // fnDoChange() void main() { object oPC=GetPCItemLastEquippedBy(); object oItem=GetPCItemLastEquipped(); object oMod=GetModule(); int nDay=GetLocalInt(oMod,"nLastUsed"+GetResRef(oItem)); string sTag=GetTag(oItem); int nN; effect eVFX; if (GetLocalInt(oPC,"bShiftNoEquip")) { // shape shifted - do not allow equipping - unless item is bShiftOK if (!GetLocalInt(oItem,"bShiftOK")) { // not allowed while equipped SendMessageToPC(oPC,"You cannot equip that item while shape shifted."); AssignCommand(oPC,ClearAllActions()); AssignCommand(oPC,ActionUnequipItem(oItem)); } // not allowed while equipped } // shape shifted - do not allow equipping - unless item is bShiftOK if (sTag=="rts_it_op6"||sTag=="rts_it_op7"||sTag=="rts_it_op8"||sTag=="rts_it_op9") { // equip an infiltrator cloak if (GetCalendarDay()!=nDay||nDay==0) { // okay to do the change SetLocalInt(oMod,"nLastUsed"+GetResRef(oItem),GetCalendarDay()); SetLocalInt(oPC,"nMyAppearance",GetAppearanceType(oPC)); sTag=GetStringRight(sTag,1); if (sTag=="6") fnDoChange("UNC",APPEARANCE_TYPE_BUGBEAR_A,oPC); else if (sTag=="7") fnDoChange("UND",APPEARANCE_TYPE_WIGHT,oPC); else if (sTag=="8") fnDoChange("SPID",APPEARANCE_TYPE_ETTERCAP,oPC); else if (sTag=="9") fnDoChange("DWF",APPEARANCE_TYPE_DWARF,oPC); } // okay to do the change else { SendMessageToPC(oPC,"The cloak has already done its magic for the day."); } } // equip an infiltrator cloak if (sTag=="rts_it_op10"&&GetLocalObject(oMod,"oSoulLeech")!=oPC) { // equipped the soul leech ring ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_FNF_SCREEN_SHAKE),oPC,5.0); SetLocalObject(oMod,"oSoulLeech",oPC); SetLocalInt(oMod,"nSoulLeechSouls",0); ExecuteScript("rts_it_op10_d",oMod); SendMessageToPC(oPC,"Seering pain shoots through your hand and into your body. You feel different."); } // equipped the soul leech ring else if (sTag=="rts_it_srb"||sTag=="rts_it_sra") { // equipped a symbiotic ring oMod=GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC); sTag=GetTag(oMod); nN=0; if (sTag=="rts_it_srb"||sTag=="rts_it_sra") nN++; oMod=GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC); sTag=GetTag(oMod); if (sTag=="rts_it_srb"||sTag=="rts_it_sra") nN++; if (nN==2) { // both rings equipped - bad things happen DestroyObject(GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC)); DelayCommand(0.5,DestroyObject(GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC))); oItem=CreateObject(OBJECT_TYPE_ITEM,"rts_it_srb",GetLocation(oPC)); oItem=CreateObject(OBJECT_TYPE_ITEM,"rts_it_sra",GetLocation(oPC)); eVFX=EffectVisualEffect(VFX_COM_CHUNK_RED_LARGE); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eVFX,GetLocation(oPC)); eVFX=EffectDamage(GetMaxHitPoints(oPC)); DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,eVFX,oPC)); } // both rings equipped - bad things happen else { // one ring equipped sTag=GetTag(oItem); if (sTag=="rts_it_srb") eVFX=EffectVisualEffect(VFX_IMP_HEAD_NATURE); else { eVFX=EffectVisualEffect(VFX_IMP_HEAD_HOLY); } ApplyEffectToObject(DURATION_TYPE_INSTANT,eVFX,oPC); SendMessageToPC(oPC,"You feel a momentary humming in your body."); } // one ring equipped } // equipped a symbiotic ring else if (sTag=="rts_it_op18") { // spell reflector shield SetLocalString(oPC,"sWAZOOONSPELLCASTAT","s3_spellreflect"); } // spell reflector shield DelayCommand(1.0,ExecuteScript("hos_acp",oPC)); }