Le Terre di Bretha

Reply
Trappole mortali
view post Posted on 2/11/2009, 15:43Quote
Avatar

Paladino Planare

Group: Administrator
Posts: 1567
Location: Da qualche parte nel multiverso


Status: Offline: ultima azione eseguita il 29/11/2009, 19:20


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 soffitto
OnEnter 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 esplosivo
Appena 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);}

image

Forziere con freccia avvelenata
Quando il forziere viene chiuso viene scoccata una freccia avvelenata dal muro 2 cariche
OnClose 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));}}

image

Trabocchetto 1
Quando 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 infinito
OnEnter 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;}}

image

Freccia scoccata dal muro
Una freccia viene scoccata dal muro colpo singolo
OnEnter 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));}}

image

Lame dal soffitto
Si 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 singolo
OnEnter 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;}}

image

Spettro dell'arma
Uno spettro si impossessa dell'arma del pg colpo singolo
OnEnter 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;}}

image

Masso cadente
Un pezzo di soffitto che cade addosso al pg effetto ogni 2 ore
OnExit 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;}}

image

Fumo magico
Una 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 illimitato
OnEnter 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));}

image

Trabocchetto 2
il pg cade in un altro punto o in un altra area effetto illimitato
OnEnter 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));}

image

Stanza Calda
dopo 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 singolo
OnExit 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;}}

image

Muro di fuoco sonico
Un 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 illimitato
OnEnter 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");}

image

Spechio copiante
lo spechio che fa una copia del pg malavagia effetto singolo
OnUsed 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));}}

image

Sfera fulminante
una 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;}}

image

il modulo test che richiede gli hak della trilogia
Download

Edited by Lord Ariall - 2/11/2009, 16:09

imageimage
image

When shadow comes to claim our souls some must rise - the light of old.
Names in stone, spirits of legend.
Deeds unknown, yet never forgotten.
These are the Duranin - of honor within and of fear without.
Remember them when in hope you doubt.
 
P_MSG P_EMAIL Top
view post Posted on 3/11/2009, 07:03Quote
Avatar

Millennium Member

Group: Member
Posts: 1702


Status: Offline: ultima azione eseguita il 1/12/2009, 01:23


:woot:

senza parole... :1155673_smile_happy2.gif:

Pagina appena linkata nella cartella di LOB. -_-

image

image

----------------------image---------------------
 
P_MSG P_EMAIL Top
1 replies since 2/11/2009, 15:43
 
Reply

load
Fast reply
 
 
 

Enable emoticons
Clickable Smilies
Show All


Nickname:      Email: