| Tutte le trappole viste sulla trilogia, sul pw pių qualcosa di nuovo, tutte riviste da zero, con tempi pių rapidi e le percentuali sui danni Effetto visivo detriti dal soffittoOnEnter dell'area CODICE void Detriti(float fTime=3.0f){ location lZero=Location(OBJECT_SELF,Vector(0.0f,0.0f,0.0f),0.0f); object oPG=GetNearestCreatureToLocation(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,lZero);//il pg if(GetIsObjectValid(oPG)==TRUE){ int i,x,y; vector vEff; for(i=0;i<10;i++){// numero di effetti 40 x=Random(150);//dimensioni dell'area asse X y=Random(140);//dimensioni dell'area asse Y vEff.x=IntToFloat(x); vEff.y=IntToFloat(y); vEff.z=10.0f; lZero=Location(OBJECT_SELF,vEff,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lZero); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(353),lZero);} DelayCommand(fTime,Detriti());} else{DeleteLocalInt(OBJECT_SELF,"detriti");}}
void main(){ object oEnter=GetEnteringObject(); int iPstat2=GetLocalInt(OBJECT_SELF,"detriti"); if((iPstat2==FALSE)&&(GetIsDM(oEnter)==FALSE)&&(GetIsPC(oEnter)==TRUE)){//altrimenti ogni volta che entra qualcuno avviene una moltiplicazioni di ricorsioni SetLocalInt(OBJECT_SELF,"detriti",TRUE); DelayCommand(3.0f,Detriti());} else{return;}} Forziere esplosivoAppena il pg apre il forziere esplode a colpo singolo OnOpen del forziere CODICE void main(){ location lLoc=GetLocation(OBJECT_SELF); object oT=GetFirstObjectInShape(SHAPE_SPHERE,4.0f,lLoc,TRUE,OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE); DelayCommand(1.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL),OBJECT_SELF)); while(GetIsObjectValid(oT)==TRUE){ int iDam=(50*GetMaxHitPoints(oT))/100; DelayCommand(1.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDam,DAMAGE_TYPE_FIRE),oT)); DelayCommand(1.2f,FloatingTextStringOnCreature("<cū >Il forziere esplode ferendoti</c>",oT)); oT=GetNextObjectInShape(SHAPE_SPHERE,4.0f,lLoc,TRUE,OBJECT_TYPE_CREATURE|OBJECT_TYPE_PLACEABLE);} DestroyObject(OBJECT_SELF,2.0f);} Forziere con freccia avvelenataQuando il forziere viene chiuso viene scoccata una freccia avvelenata dal muro 2 caricheOnClose del forziere, creo un place nei pressi con tag lanciadardi CODICE void main(){ object oPG=GetLastClosedBy(); int i=GetLocalInt(OBJECT_SELF,"dardo"); if(GetIsPC(oPG)==TRUE&&i<2){ i++; SetLocalInt(OBJECT_SELF,"dardo",i); i=(5*GetCurrentHitPoints(oPG))/100; object oDart=GetNearestObjectByTag("lanciadardi",OBJECT_SELF,1); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneImmobilize(),oPG,2.0f); DelayCommand(1.0f,AssignCommand(oDart,PlaySound("cb_ht_arrow1"))); DelayCommand(1.2f,AssignCommand(oDart,ActionCastFakeSpellAtObject(487,oPG,PROJECTILE_PATH_TYPE_HOMING))); DelayCommand(1.6f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(i,DAMAGE_TYPE_ACID),oPG)); DelayCommand(2.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectPoison(POISON_TERINAV_ROOT),oPG)); DelayCommand(2.5f,FloatingTextStringOnCreature("<cū >Una freccia acida avvelenata scoccata da un foro nel muro ti colpisce</c>",oPG));}} Trabocchetto 1Quando il pg passa sulla piastra a pressione fa scattare le lame del paviemento il pg ha un secondo per spostarsi oppure viene ferito, dopo le lame si ritirano e per un secondo la piastra rimane inattiva infinitoOnEnter di un attivatore e creo un place invisibile, segnare il tag e immetterlo nelle variabili dell'attivatore con tag traptag CODICE void Scatta(object o1,object o2){ float f=GetDistanceBetween(o1,o2); if(f<=1.25f){ int iDam=(30*GetCurrentHitPoints(o1))/100; ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDam,DAMAGE_TYPE_PIERCING),o1);} else{return;}}
void main(){ int i=GetLocalInt(OBJECT_SELF,"status"); if(i==FALSE){ SetLocalInt(OBJECT_SELF,"status",1); object oPG=GetEnteringObject(),oTrap=GetNearestObjectByTag(GetLocalString(OBJECT_SELF,"traptag"),OBJECT_SELF,1); AssignCommand(oTrap,PlaySound("as_sw_stonplate1")); DelayCommand(3.0,DeleteLocalInt(OBJECT_SELF,"status")); DelayCommand(2.4,AssignCommand(oTrap,PlaySound("as_cv_brickscrp1"))); DelayCommand(1.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(253),oTrap)); DelayCommand(1.0f,Scatta(oPG,oTrap));} else{return;}} Freccia scoccata dal muroUna freccia viene scoccata dal muro colpo singoloOnEnter di un attivatore creo un place nei pressi con tag lanciadardi CODICE void main(){ object oPG=GetExitingObject(); int i=GetLocalInt(OBJECT_SELF,"dardo"); if(GetIsPC(oPG)==TRUE&&i==FALSE){ SetLocalInt(OBJECT_SELF,"dardo",1); i=(8*GetCurrentHitPoints(oPG))/100; object oDart=GetNearestObjectByTag("lanciadardi",OBJECT_SELF,1); AssignCommand(oDart,PlaySound("cb_ht_arrow1")); AssignCommand(oDart,ActionCastFakeSpellAtObject(487,oPG,PROJECTILE_PATH_TYPE_HOMING)); DelayCommand(0.5f,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectParalyze(),oPG,20.0f)); //DelayCommand(1.5f,FloatingTextStringOnCreature("<cū >Una freccia scoccata da un foro nel muro ti colpisce</c>",oPG));}} DelayCommand(1.5f,FloatingTextStringOnCreature("<cū >Una freccia avvelenata scoccata da un foro nel muro ti colpisce</c>",oPG));}} Lame dal soffittoSi sente il suono di una corda che viene tirata e delle lame colpiscono il pg pių volte finchč l'effetto non si termina fino a che il pg rimane entro i 4 metri di effetto delle lame colpo singoloOnEnter di un attivatore segnare il tag e immetterlo nelle variabili dell'attivatore con tag traptag CODICE void Lame(object o1,object o2){ float f=GetDistanceBetween(o1,o2); if(f<=4.0f){ int iDam=(30*GetCurrentHitPoints(o1))/100; ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectKnockdown(),o1); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM),o1); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDam,DAMAGE_TYPE_SLASHING),o1);} else{return;}}
void main(){ int i=GetLocalInt(OBJECT_SELF,"status"); if(i==FALSE){ SetLocalInt(OBJECT_SELF,"status",1); object oPG=GetEnteringObject(),oTrap=GetNearestObjectByTag(GetLocalString(OBJECT_SELF,"traptag"),OBJECT_SELF,1); AssignCommand(oTrap,PlaySound("as_cv_ropecreak2")); DelayCommand(1.5f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SWINGING_BLADE),oTrap)); DelayCommand(1.5f,Lame(oPG,oTrap)); DelayCommand(3.0f,Lame(oPG,oTrap)); DelayCommand(5.0f,Lame(oPG,oTrap));} else{return;}} Spettro dell'armaUno spettro si impossessa dell'arma del pg colpo singoloOnEnter di un attivatore creo una tappa con tag / resref spiritoarma Creo una creatura, con aspetto nessun umano, con proprietā a piacere, la cretura deve poter impugnarequalunque tipo di arma CODICE void WeaponSpirit(object oPG,object oItem,location Spawn){ object oSpirit=CreateObject(OBJECT_TYPE_CREATURE,"spiritoarma",Spawn),oNewItem=CopyItem(oItem,oSpirit,TRUE); DestroyObject(oItem,1.5); DelayCommand(0.5f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_PWSTUN),oSpirit)); DelayCommand(0.6f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE),oSpirit)); DelayCommand(1.0,AssignCommand(oSpirit,ActionEquipItem(oNewItem,INVENTORY_SLOT_RIGHTHAND))); DelayCommand(3.0,AssignCommand(oSpirit,ActionAttack(oPG)));}
void main(){ object oPC=GetEnteringObject(); int i=GetLocalInt(OBJECT_SELF,"spiritoarma"); if(GetIsPC(oPC)==TRUE&&i==FALSE){ SetLocalInt(OBJECT_SELF,"spiritoarma",1); object oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC); if(GetIsObjectValid(oItem)==TRUE){ location lLoc=GetLocation(GetWaypointByTag("spiritoarma")); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneImmobilize(),oPC,6.0f); DelayCommand(1.0f,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_EVIL),lLoc)); DelayCommand(1.0f,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_EPIC_UNDEAD),lLoc)); DelayCommand(1.0f,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_RAISE_DEAD),lLoc)); DelayCommand(2.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_PWSTUN),oPC)); DelayCommand(1.5f,WeaponSpirit(oPC,oItem,lLoc));} else{return;}} else{return;}} Masso cadenteUn pezzo di soffitto che cade addosso al pg effetto ogni 2 oreOnExit di un attivatore , creo un place con aspetto di una roccia, utilizzabile CODICE void MassoCadente(object oPC){ vector vPos1,vPos=GetPosition(oPC); location lLoc; vPos1=vPos; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); CreateObject(OBJECT_TYPE_PLACEABLE,"macignodigranito",lLoc); vPos1.z=vPos1.z+8.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_MEDIUM),lLoc); vPos1=vPos; vPos1.y=vPos1.y+1.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,IntToFloat(Random(360))); CreateObject(OBJECT_TYPE_PLACEABLE,"macignodigranito",lLoc); vPos1.z=vPos1.z+6.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1.z=vPos1.z-2.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1=vPos; vPos1.y=vPos1.y-1.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,IntToFloat(Random(360))); CreateObject(OBJECT_TYPE_PLACEABLE,"macignodigranito",lLoc); vPos1.z=vPos1.z+6.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1.z=vPos1.z-2.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1=vPos; vPos1.x=vPos1.x-1.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,IntToFloat(Random(360))); CreateObject(OBJECT_TYPE_PLACEABLE,"macignodigranito",lLoc); vPos1.z=vPos1.z+6.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1.z=vPos1.z-2.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1=vPos; vPos1.x=vPos1.x+1.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,IntToFloat(Random(360))); CreateObject(OBJECT_TYPE_PLACEABLE,"macignodigranito",lLoc); vPos1.z=vPos1.z+6.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc); vPos1.z=vPos1.z-2.0f; lLoc=Location(GetArea(OBJECT_SELF),vPos1,0.0); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(137),lLoc);}
void main(){ object oPC=GetExitingObject(); if(GetIsPC(oPC)==TRUE){ int iM=GetLocalInt(OBJECT_SELF,"massocade"),iD=GetLocalInt(OBJECT_SELF,"tempoday"),iTHour=GetTimeHour(),iDay=GetCalendarDay(); if(iM<=iTHour){ int iDam=(80*GetMaxHitPoints(oPC))/100; SetLocalInt(OBJECT_SELF,"massocade",iTHour+2); SetLocalInt(OBJECT_SELF,"tempoday",iDay); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneImmobilize(),oPC,4.0f); AssignCommand(oPC,PlaySound("as_na_rockfallg2")); DelayCommand(3.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SCREEN_SHAKE),oPC)); DelayCommand(2.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDam,DAMAGE_TYPE_BLUDGEONING),oPC));//danni contundenti DelayCommand(0.5f,MassoCadente(oPC));} else if(iD!=iDay){ iM=iM>24?iM-24:0;//se fossero le 23 si riattiverebbe all'una sempre 2 ore dopo SetLocalInt(OBJECT_SELF,"massocade",iM); SetLocalInt(OBJECT_SELF,"tempoday",iDay);} else{return;}} else{return;}} Fumo magicoUna forma di vita fatta di fumo attacca il pg con la sua mano portandolo in punti random della stanza ferendolo (giā visto sulla trilogia e corretto in modo che le tre tappe random non siano ripetute ad esempio 1 2 2 ma sempre 1 3 1 o 1 2 1 o 2 1 3 effetto illimitatoOnEnter di un attivatore, creo 8 tappe con tag fumotap1.. 2.. 3.. CODICE int a;
int NotEncoresRandom(int r){ r=Random(4); if(r!=a){a=r;} else{while(r==a){r=Random(4);}a=r;} return r;}
void main(){ object oEnter=GetEnteringObject(); int i,d; float f; string sRand; location lLoc; ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneImmobilize(),oEnter,5.0f); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(318),oEnter); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_DEMON_HAND),oEnter); for(i=1;i<=3;i++){ f=IntToFloat(i); d=(15*GetMaxHitPoints(oEnter))/100;//controllare la vita dei mob sRand=IntToString(NotEncoresRandom(4)+1); lLoc=GetLocation(GetWaypointByTag("fumotap"+sRand)); DelayCommand(f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_MIND),oEnter)); DelayCommand(f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DESTRUCTION),oEnter)); DelayCommand(f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d,DAMAGE_TYPE_MAGICAL),oEnter)); DelayCommand(f,AssignCommand(oEnter,JumpToLocation(lLoc)));} f=4.0f; i=Random(4)+5; sRand=IntToString(i); lLoc=GetLocation(GetWaypointByTag("fumotap"+sRand)); DelayCommand(f,AssignCommand(oEnter,JumpToLocation(lLoc))); DelayCommand(f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_MIND ),oEnter)); DelayCommand(f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DESTRUCTION),oEnter)); DelayCommand(f,FloatingTextStringOnCreature("<cō ō>Appena entri nella nebbia una mano fatta di fumo magico ti prende e ti trasporta ferendoti</c>",oEnter));} Trabocchetto 2il pg cade in un altro punto o in un altra area effetto illimitatoOnEnter di un attivatore, creo una tappa con tag dentro le variabili CODICE void Trabocchetto(object oPC,effect Nasc){ int i=(80*GetCurrentHitPoints(oPC))/100; DelayCommand(1.4f,FadeFromBlack(oPC,FADE_SPEED_FAST)); DelayCommand(1.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectAppear(1),oPC)); DelayCommand(1.2f,RemoveEffect(oPC,Nasc)); DelayCommand(1.8f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectKnockdown(),oPC)); DelayCommand(2.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(i,DAMAGE_TYPE_BLUDGEONING),oPC)); DelayCommand(3.1f,AssignCommand(oPC,PlayVoiceChat(VOICE_CHAT_GATTACK1))); DelayCommand(3.2f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_RED_SMALL),oPC)); DelayCommand(3.2f,AssignCommand(oPC,PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT)));}
void main(){ object oPC=GetEnteringObject(); location lLoc=GetLocation(GetObjectByTag(GetLocalString(OBJECT_SELF,"traptag"))); effect Nasc=EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneImmobilize(),oPC,2.0f); AssignCommand(oPC,PlaySound("as_na_rockfallg2")); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(137),oPC); FloatingTextStringOnCreature("<cū >Il terreno frana sotto i tuoi piedi, cadi in un buco",oPC); DelayCommand(1.0f,ApplyEffectToObject(DURATION_TYPE_PERMANENT,Nasc,oPC)); DelayCommand(2.5f,FadeToBlack(oPC,FADE_SPEED_FAST)); DelayCommand(3.0f,AssignCommand(oPC,JumpToLocation(lLoc))); DelayCommand(3.5f,Trabocchetto(oPC,Nasc));} Stanza Caldadopo che il pg č entrato in una stanza la porta si chiude e viene riempita di uno strato d'acqua calda che diventa sempre pių calda il pg ha poco tempo per rompere la porta ed uscire colpo singoloOnExit di un attivatore, creo una porta e mi segno il tag portatrappola, creo un place invisibile e lo piazzo al centro della stanza con tag stanzacalda e creo un place inv in tavolozza con tag acquacalda CODICE int iA;
void DestroyAllfObject(string sTag){ int i; object oB=GetObjectByTag(sTag,i); while(GetIsObjectValid(oB)==TRUE){ i++; DestroyObject(oB); oB=GetObjectByTag(sTag,i);}}
void Surface(int xb,int yb,int x,int y,float z){ int i,a; object oPlace; vector vPos,vPosB=Vector(IntToFloat(xb),IntToFloat(yb)); location lLoc; vPos.z=z; vPos.x=vPosB.x+5.0; for(i=0;i<x;i++){ vPos.y=vPosB.y+5.0; for(a=0;a<y;a++){ lLoc=Location(GetArea(OBJECT_SELF),vPos,0.0); oPlace=CreateObject(OBJECT_TYPE_PLACEABLE,"acquacalda",lLoc); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectVisualEffect(401),oPlace); vPos.y=vPos.y+10.0;} vPos.x = vPos.x + 10.0;}}
void FireTrap(float fTime=2.0f){ location lF0=GetLocation(GetNearestObjectByTag("stanzacalda",OBJECT_SELF)); object oT=GetFirstObjectInShape(SHAPE_CUBE,12.0f,lF0,FALSE,OBJECT_TYPE_CREATURE); int i,iDam; while(GetIsObjectValid(oT)==TRUE){ i++; if(GetIsDead(oT)==FALSE){ iA+=10; iDam=(iA*GetMaxHitPoints(oT))/100;//danni aumentano del 10% ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDam,DAMAGE_TYPE_FIRE),oT); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF),oT);} oT=GetNextObjectInShape(SHAPE_CUBE,12.0f,lF0,FALSE,OBJECT_TYPE_CREATURE);} if(i>=TRUE){DelayCommand(fTime,FireTrap());} else{ DeleteLocalInt(OBJECT_SELF,"BRUCIAA"); DestroyAllfObject("acquacalda");}}
void main(){ object oEnter=GetExitingObject(); int iPstat2=GetLocalInt(OBJECT_SELF,"BRUCIAA"); if((iPstat2==FALSE)&&(GetIsDM(oEnter)==FALSE)&&(GetIsPC(oEnter)==TRUE)){ object oPorta=GetObjectByTag("portatrappola"),oPlace=GetObjectByTag("stanzacalda"); if(GetIsObjectValid(oPorta)==TRUE){ SetLocalInt(OBJECT_SELF,"BRUCIAA",TRUE); AssignCommand(oPorta,ActionCloseDoor(oPorta)); DelayCommand(0.2f,SetLocked(oPorta,TRUE)); DelayCommand(1.8f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIRESTORM),oPlace)); DelayCommand(1.2f,FloatingTextStringOnCreature("<cū >Dell'acqua inizia a ricoprire il pavimento diventando sempre pi calda</c>",oEnter)); DelayCommand(2.5f,AssignCommand(oEnter,PlaySound("as_cv_sewermisc3"))); DelayCommand(3.0f,Surface(40,0,3,3,1.1));//settare le x e y iniziali e la forma del rettangolo DelayCommand(5.0f,FireTrap());} else{return;}} else{return;}} Muro di fuoco sonicoUn muro di fuoco che random distrugge pezzi del equipaggiameto del pg (che vengono spostati in un place) e se si rimane sulle fiamme si prendono danni effetto illimitatoOnEnter di un attivatore, creo un placeable con tag tagforzdest CODICE void Burn(object oPG){ int i=GetLocalInt(oPG,"fuocbruc"); if(i==TRUE){ ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(Random(20)+1,DAMAGE_TYPE_FIRE),oPG); DelayCommand(1.0f,Burn(oPG));} else{return;}}
void main(){ object oEnter=GetEnteringObject(); if(GetIsPC(oEnter)==TRUE){ object oOgg,oForzs=GetObjectByTag("tagforzdest"); int i=Random(18)+1,a=(i*GetMaxHitPoints(oEnter))/100; ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(a,DAMAGE_TYPE_SONIC),oEnter); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_MAGBLUE),oEnter); AssignCommand(GetNearestObject(OBJECT_TYPE_PLACEABLE,OBJECT_SELF,1),PlaySound("sff_expddevil10")); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_STONE_SMALL),oEnter); oOgg=GetItemInSlot(i,oEnter); i=GetLocalInt(oEnter,"fuocbruc"); if(i==FALSE){ SetLocalInt(oEnter,"fuocbruc",1); DelayCommand(1.0f,Burn(oEnter));} if(GetIsObjectValid(oOgg)==TRUE){ FloatingTextStringOnCreature("<cū >La vibrazione sonora e' cosi forte da distruggere alcune delle tue armi",oEnter); CopyItem(oOgg,oForzs,FALSE); DestroyObject(oOgg);} else{return;}} else{return;}} OnExit CODICE void main(){ object oExit=GetExitingObject(); DeleteLocalInt(oExit,"fuocbruc");} Spechio copiantelo spechio che fa una copia del pg malavagia effetto singoloOnUsed di un placeable a forma di specchio con nome Specchio Nero, creo una tappa con tag tappaspecchio CODICE void Copia(object oPG){ location lLoc=GetLocation(GetWaypointByTag("tappaspecchio")); object oCopy=CopyObject(oPG,lLoc); DelayCommand(0.1f,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY),oCopy,1.5)); DelayCommand(0.2f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oCopy)),oCopy)); DelayCommand(0.5f,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SOUND_BURST_SILENT),lLoc)); DelayCommand(1.2f,AssignCommand(oCopy,SetIsDestroyable(FALSE,FALSE,TRUE))); DelayCommand(1.6f,AssignCommand(oCopy,ChangeToStandardFaction(oCopy,STANDARD_FACTION_HOSTILE))); DelayCommand(2.0f,AssignCommand(oCopy,ActionAttack(oPG,FALSE)));}
void main(){ int i=GetLocalInt(OBJECT_SELF,"specchioco"); if(i==FALSE){ object oPG=GetLastUsedBy(); SetLocalInt(OBJECT_SELF,"specchioco",TRUE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_GLOW_WHITE),OBJECT_SELF,4.0f); PlaySound("sim_mentfear"); DelayCommand(1.0f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_SPELL_MANTLE_USE),oPG)); DelayCommand(1.5f,SetName(OBJECT_SELF,"Specchio Bianco")); DelayCommand(2.0f,Copia(oPG));}} Sfera fulminanteuna sfera lancia dei raggi di elettricitā contro il pg l'effetto dura finchč la sfera non viene distutta o ci si allontana OnEnter di un attivatore, creo un place con tag Sfera CODICE void Sphere(float fTime=2.0f){ int i,d; object oSphera=GetObjectByTag("Sfera"); location lZero=GetLocation(oSphera); object oT=GetFirstObjectInShape(SHAPE_SPHERE,20.0f,lZero,FALSE,OBJECT_TYPE_CREATURE); while(GetIsObjectValid(oT)==TRUE){ if(GetIsPC(oT)==TRUE&&GetIsDead(oT)==FALSE){ i++; d=Random(5)+5; d=(d*GetCurrentHitPoints(oT))/100; ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBeam(VFX_BEAM_LIGHTNING,oSphera,BODY_NODE_CHEST),oT,1.5); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL),oT); DelayCommand(0.5f,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d,DAMAGE_TYPE_ELECTRICAL),oT));} oT=GetNextObjectInShape(SHAPE_SPHERE,20.0f,lZero,FALSE,OBJECT_TYPE_CREATURE);} if(i>=TRUE){DelayCommand(fTime,Sphere());} else{DeleteLocalInt(OBJECT_SELF,"sfera");}}
void main(){ object oEnter=GetEnteringObject(); int iPstat2=GetLocalInt(OBJECT_SELF,"sfera"); if((iPstat2==FALSE)&&(GetIsDM(oEnter)==FALSE)&&(GetIsPC(oEnter)==TRUE)){ SetLocalInt(OBJECT_SELF,"sfera",TRUE); DelayCommand(2.0f,Sphere());} else{return;}}  il modulo test che richiede gli hak della trilogia DownloadEdited by Lord Ariall - 2/11/2009, 16:09 

|