From: <ave...@us...> - 2008-06-02 15:57:19
|
Revision: 5161 http://gemrb.svn.sourceforge.net/gemrb/?rev=5161&view=rev Author: avenger_teambg Date: 2008-06-02 08:56:52 -0700 (Mon, 02 Jun 2008) Log Message: ----------- added raw code for area effects Modified Paths: -------------- gemrb/trunk/gemrb/plugins/Core/Projectile.cpp gemrb/trunk/gemrb/plugins/Core/Projectile.h Modified: gemrb/trunk/gemrb/plugins/Core/Projectile.cpp =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Projectile.cpp 2008-06-01 17:31:57 UTC (rev 5160) +++ gemrb/trunk/gemrb/plugins/Core/Projectile.cpp 2008-06-02 15:56:52 UTC (rev 5161) @@ -409,7 +409,7 @@ step = NULL; } -//get actors covered in area of effect radius +//get actors covered in area of trigger radius void Projectile::CheckTrigger(unsigned int radius) { //if there are any, then change phase to exploding @@ -418,6 +418,20 @@ } } +//secondary projectiles target all in the explosion radius +void Projectile::SecondaryTarget() +{ + int radius = Extension->ExplosionRadius; + Actor **actors = area->GetAllActorsInRadius(Pos, 0, radius); + Actor **poi=actors; + while(*poi) { + Projectile *pro = core->GetProjectileServer()->GetProjectileByIndex(Extension->ExplProjIdx); + pro->SetEffects(effects); + pro->SetCaster(Caster); + area->AddProjectile(pro, Pos, (*poi)->GetGlobalID()); + } +} + int Projectile::Update() { //if reached target explode @@ -483,7 +497,16 @@ //there is a secondary projectile if (Extension->AFlags&PAF_SECONDARY) { //the secondary projectile will target everyone in the area of effect + SecondaryTarget(); } + + if (Extension->AFlags&PAF_FRAGMENT) { + //there is a character animation in the center of the explosion + //which will go towards the edges (flames, etc) + //Extension->ExplColor fake color for single shades (blue,green,red flames) + //Extension->FragAnimID the animation id for the character animation + } + //the center of the explosion could be another projectile played over the target if (Extension->FragProjIdx) { Projectile *pro = core->GetProjectileServer()->GetProjectileByIndex(Extension->FragProjIdx); Modified: gemrb/trunk/gemrb/plugins/Core/Projectile.h =================================================================== --- gemrb/trunk/gemrb/plugins/Core/Projectile.h 2008-06-01 17:31:57 UTC (rev 5160) +++ gemrb/trunk/gemrb/plugins/Core/Projectile.h 2008-06-02 15:56:52 UTC (rev 5161) @@ -224,6 +224,7 @@ private: void GetPaletteCopy(Animation *anim[], Palette *&pal); void SetBlend(); + void SecondaryTarget(); void CheckTrigger(unsigned int radius); void DrawTravel(Region &screen); void DrawExplosion(Region &screen); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |