From: Laszlo T. <ave...@us...> - 2010-06-26 09:51:37
|
gemrb: Infinity Engine emulator The branch master has been updated via a3e0935c26a776f8e8bb24d912dae2cb0aeaffb8 (commit) Summary of changes: gemrb/core/Projectile.cpp | 29 +++++++++++++++++++---------- gemrb/core/Projectile.h | 4 +++- 2 files changed, 22 insertions(+), 11 deletions(-) from 07a32b9010a06557fcc94b7f5a09af4ec817b6f6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://gemrb.git.sourceforge.net/git/gitweb.cgi?p=gemrb/gemrb;a=commitdiff;h=a3e0935c26a776f8e8bb24d912dae2cb0aeaffb8 commit a3e0935c26a776f8e8bb24d912dae2cb0aeaffb8 Author: Avenger <ave...@so...> Date: Sat Jun 26 11:51:01 2010 +0200 added another aoe flag diff --git a/gemrb/core/Projectile.cpp b/gemrb/core/Projectile.cpp index 2dcc1af..4e85802 100644 --- a/gemrb/core/Projectile.cpp +++ b/gemrb/core/Projectile.cpp @@ -774,17 +774,26 @@ int Projectile::CalculateTargetFlag() //get actors covered in area of trigger radius void Projectile::CheckTrigger(unsigned int radius) { - if (area->GetActorInRadius(Pos, CalculateTargetFlag(), radius)) { - if (phase == P_TRIGGER) { + if (phase == P_TRIGGER) { + //special trigger flag, explode only if the trigger animation has + //passed a hardcoded sequence number + if (Extension->AFlags&PAF_TRIGGER_D) { + if (travel[Orientation]) { + int anim = travel[Orientation]->GetCurrentFrame(); + if (anim<30) + return; + } + } + if (area->GetActorInRadius(Pos, CalculateTargetFlag(), radius)) { phase = P_EXPLODING1; extension_delay = Extension->Delay; } - } else { - if (phase == P_EXPLODING1) { - //the explosion is revoked - if (Extension->AFlags&PAF_SYNC) { - phase = P_TRIGGER; - } + return; + } + if (phase == P_EXPLODING1) { + //the explosion is revoked + if (Extension->AFlags&PAF_SYNC) { + phase = P_TRIGGER; } } } @@ -1100,7 +1109,7 @@ void Projectile::DrawExplosion(const Region &screen) if (apflags&APF_FILL) child_size*=2; if (apflags&APF_SPREAD) child_size*=2; if (apflags&APF_BOTH) child_size/=2; //intentionally decreases - if (apflags&APF_MORE) child_size*=2; + if (apflags&APF_MORE) child_size*=2; children = (Projectile **) calloc(sizeof(Projectile *), child_size); } @@ -1159,7 +1168,7 @@ void Projectile::DrawExplosion(const Region &screen) //a bit of difference in case crowding is needed //make this a separate flag if speed difference - //is not always wanted + //is not always wanted pro->Speed-=rand()&7; delay = Extension->Delay*extension_explosioncount; diff --git a/gemrb/core/Projectile.h b/gemrb/core/Projectile.h index 9cb6e6a..9a7838f 100644 --- a/gemrb/core/Projectile.h +++ b/gemrb/core/Projectile.h @@ -103,7 +103,9 @@ #define PAF_LEV_MAGE 256 #define PAF_LEV_CLERIC 512 #define PAF_VVC 1024 // -#define PAF_CONE 2048 // +#define PAF_CONE 2048 //enable cone shape +#define PAF_NO_WALL 0x1000 //pass through walls +#define PAF_TRIGGER_D 0x2000 //delayed trigger (only if animation is over 30) #define PAF_DELAY 0x4000 // #define PAF_AFFECT_ONE 0x8000 // ----------------------------------------------------------------------- This is an automated email from the git hooks/post-receive script. -- gemrb: Infinity Engine emulator |