//////////////////////////////////////////////////////////////// // Sacrifice to Evil Altar // By Deva Bryson Winblood. 12/29/2003 //////////////////////////////////////////////////////////////// #include "rtsh_multiplay" #include "hos_alignment" void fnDoSacrifice(object oT,object oA) { // make oT walk to oA and be sacrificed effect eVisBlood=EffectVisualEffect(VFX_COM_BLOOD_LRG_RED); effect eDie=EffectDeath(TRUE); AssignCommand(oT,ClearAllActions(TRUE)); AssignCommand(oT,ActionMoveToObject(oA,FALSE,1.0)); AssignCommand(oT,ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,eVisBlood,oT,1.0))); AssignCommand(oT,ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,eDie,oT,1.0))); DelayCommand(5.0,DestroyObject(oT)); } // fnDoSacrifice() void fnAttractFiend(location lLoc,string sResRef,string sTID) { // attract a fiend object oWP=GetWaypointByTag(sTID+"_RESOURCES"); object oTemp=GetObjectByTag(sTID+"_PROXY"); object oNew=CreateObject(OBJECT_TYPE_CREATURE,sResRef,lLoc); SetLocalString(oNew,"sTeamID",sTID); ChangeFaction(oNew,oTemp); } // fnAttractFiend() void main() { object oPC=GetPCSpeaker(); object oTarget=GetLocalObject(oPC,"oTarget"); int nMode=GetLocalInt(oPC,"nParm"); object oAltar=GetNearestObjectByTag("ALTAR"); object oMod=GetModule(); int nEvilPower=GetLocalInt(oMod,"nEvilPower"); int nMana; int nR; string sRes; string sID=GetLocalString(oPC,"sTeamID"); effect eGate=EffectVisualEffect(VFX_FNF_SUMMON_GATE); fnDoSacrifice(oTarget,oAltar); AdjustAlignmentPartyProtected(oPC,ALIGNMENT_EVIL,10); nEvilPower=nEvilPower+5; SetLocalInt(oMod,"nEvilPower",nEvilPower); ExecuteScript("rise_of_evil",oMod); if (nMode==1) { // sacrifice for mana nMana=fnGetTeamMana(oPC); nMana=nMana+50; fnSetTeamMana(oPC,nMana); SendMessageToPC(oPC,"Your team has gained 50 mana."); } // sacrifice for mana else if (nMode==2) { // sacrifice for fiend attraction nR=d100(); SendMessageToPC(oPC,"Rolled a "+IntToString(nR)+"% needed 10 or less."); if (nR<11) { // attract nR=d100(); if (nR<71) { // lesser sRes="hellhound001"; if (sID=="SPID") sRes="dmsucubus002"; } // lesser else if (nR<96) { // mid sRes="erinyes002"; if (sID=="SPID"||sID=="UNC") sRes="dmvrock002"; } // mid else { // major sRes="devil004"; if (sID=="SPID") sRes="spiderdemo003"; } // major SendMessageToPC(oPC,"Something comes."); DelayCommand(20.0,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,eGate,GetLocation(oPC),1.0)); DelayCommand(21.0,fnAttractFiend(GetLocation(oPC),sRes,sID)); } // attract else { // nothing SendMessageToPC(oPC,"No fiend is attracted."); } // nothing } // sacrifice for fiend attraction }