Index: ScriptMgr.cpp===================================================================--- ScriptMgr.cpp (revision 116)+++ ScriptMgr.cpp (working copy)@@ -261,6 +261,7 @@ extern void AddSC_skorn_whitecloud(); //Nagrand+extern void AddSC_mob_shattered_rumbler(); //Naxxramas extern void AddSC_boss_anubrekhan(); extern void AddSC_boss_maexxna();@@ -315,15 +316,21 @@ extern void AddSC_npc_lothos_riftwalker(); //Shadowfang keep+//Shadowmoon Valley+extern void AddSC_neltharaku(); //Silithus extern void AddSC_npcs_captains_blackanvil_and_skullsplit(); extern void AddSC_npcs_rutgar_and_frankal();+//Silvermoon City+extern void AddSC_npc_blood_knight_stillblade();+ //Silverpine forest //Stockade //Stonetalon mountains //Stormwind City extern void AddSC_npc_bartleby();+extern void AddSC_npc_dashel_stonefist(); //Stratholme extern void AddSC_boss_fras_siabi();@@ -654,6 +661,7 @@ AddSC_skorn_whitecloud(); //Nagrand+ AddSC_mob_shattered_rumbler(); //Naxxramas AddSC_boss_anubrekhan(); AddSC_boss_maexxna();@@ -708,15 +716,22 @@ //Searing gorge AddSC_npc_lothos_riftwalker(); //Shadowfang keep+ //shadowmoon Valley+ AddSC_neltharaku(); //Silithus AddSC_npcs_captains_blackanvil_and_skullsplit(); AddSC_npcs_rutgar_and_frankal();+ //Silvermoon City+ AddSC_npc_blood_knight_stillblade();++ //Silverpine forest //Stockade //Stonetalon mountains //Stormwind City AddSC_npc_bartleby();+ AddSC_npc_dashel_stonefist(); //Stratholme AddSC_boss_fras_siabi(); //Make sure that this spell applies an auraIndex: scripts/zone/elwynn_forest/npc_henze_faulk.cpp===================================================================--- scripts/zone/elwynn_forest/npc_henze_faulk.cpp (revision 116)+++ scripts/zone/elwynn_forest/npc_henze_faulk.cpp (working copy)@@ -80,7 +80,7 @@ void SpellHit(Unit *Hitter, const SpellEntry *Spellkind) {- if(Spellkind->Id == 2050)+ if(Spellkind->Id == 8593) { DoCast(m_creature,32343); m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);Index: scripts/zone/nagrand/mob_shattered_rumbler.cpp===================================================================--- scripts/zone/nagrand/mob_shattered_rumbler.cpp (revision 0)+++ scripts/zone/nagrand/mob_shattered_rumbler.cpp (revision 0)@@ -0,0 +1,68 @@+/* Copyright (C) 2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>+* This program is free software; you can redistribute it and/or modify+* it under the terms of the GNU General Public License as published by+* the Free Software Foundation; either version 2 of the License, or+* (at your option) any later version.+*+* This program is distributed in the hope that it will be useful,+* but WITHOUT ANY WARRANTY; without even the implied warranty of+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+* GNU General Public License for more details.+*+* You should have received a copy of the GNU General Public License+* along with this program; if not, write to the Free Software+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+*/++#include "../../sc_defines.h"+#include "../../../../../game/Player.h"++struct MANGOS_DLL_DECL mob_shattered_rumblerAI : public ScriptedAI+{+ bool Spawn;+ Creature* tSpawn0;+ Creature* tSpawn1;+ Creature* tSpawn2;++ mob_shattered_rumblerAI(Creature *c) : ScriptedAI(c) {EnterEvadeMode();}++ void EnterEvadeMode()+ {+ Spawn = false;+ m_creature->RemoveAllAuras();+ m_creature->DeleteThreatList();+ DoGoHome();+ }++ void SpellHit(Unit *Hitter, const SpellEntry *Spellkind)+ {+ if(Spellkind->Id == 32001 && !Spawn)+ {+ float x = m_creature->GetPositionX();+ float y = m_creature->GetPositionY();+ float z = m_creature->GetPositionZ();++ tSpawn0 = Hitter->SummonCreature(18181,x+(0.7 * (rand()%30)),y+(rand()%5),z,0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000);+ tSpawn1 = Hitter->SummonCreature(18181,x+(rand()%5),y-(rand()%5),z,0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000);+ tSpawn2 = Hitter->SummonCreature(18181,x-(rand()%5),y+(0.5 *(rand()%60)),z,0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,60000);+ m_creature->setDeathState(CORPSE);+ Spawn = true;+ }+ return;+ }++};+CreatureAI* GetAI_mob_shattered_rumbler(Creature *_Creature)+{+ return new mob_shattered_rumblerAI (_Creature);+}+++void AddSC_mob_shattered_rumbler()+{+ Script *newscript;+ newscript = new Script;+ newscript->Name="shattered_rumbler";+ newscript->GetAI = GetAI_mob_shattered_rumbler;+ m_scripts[nrscripts++] = newscript;+}Index: scripts/zone/shadowmoon_valley/npc_neltharaku.cpp===================================================================--- scripts/zone/shadowmoon_valley/npc_neltharaku.cpp (revision 0)+++ scripts/zone/shadowmoon_valley/npc_neltharaku.cpp (revision 0)@@ -0,0 +1,144 @@+/* Copyright (C) 2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>+* This program is free software; you can redistribute it and/or modify+* it under the terms of the GNU General Public License as published by+* the Free Software Foundation; either version 2 of the License, or+* (at your option) any later version.+*+* This program is distributed in the hope that it will be useful,+* but WITHOUT ANY WARRANTY; without even the implied warranty of+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+* GNU General Public License for more details.+*+* You should have received a copy of the GNU General Public License+* along with this program; if not, write to the Free Software+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+*/++#include "../../sc_defines.h"+#include "../../../../../game/Player.h"++#define SAY_NELTHARAKU1 "In the eastern reaches of the Netherwing fields lies Dragonmaw Fortress. It is there that the cruel Dragonmaw orc clan tortures teh drakes that they capture in an attempt to bend them to their will. Many have given up hope, choosing instead to do the bidding of Dragonmaw. The others... They refuse to land for fear of Dragonmaw war parties capturing them and taking them back to the fortress."+#define SAY_NELTHARAKU2 "I... We are powerless. Illidan found and delivered unto the Dragonmaw their leader - Zuluhed. This orc was the one responsible for the capture and incarceration of Alexstrasza. How could we fight against such power? He captured an Aspect! And just as easily, he took my mate. "+#define SAY_NELTHARAKU3 "Karynaku... She is held prisoner atop Dragonmaw Fortress. I have made many attempts to free her. All have failed... You have battled these beasts before, have you not? "++#define SAY_PLAYER1 "But you are dragons! How could orcs do this to you?"+#define SAY_PLAYER2 "Your mate?"+#define SAY_PLAYER3 "I have battled many beasts, dragon. I will help you."++struct MANGOS_DLL_DECL neltharakuAI : public ScriptedAI+{+ uint32 SayingTimer;+ uint32 SayingTimer2;+ Player* PlayerHolder;+ bool StartSay;+ int i;+ int ii;++ neltharakuAI(Creature *c) : ScriptedAI(c) {EnterEvadeMode();}++ void EnterEvadeMode()+ {+ SayingTimer = 0;+ SayingTimer2 = 30000;+ i = 1;+ ii = 1;+ StartSay = false;+ m_creature->RemoveAllAuras();+ m_creature->DeleteThreatList();+ DoGoHome();+ }++ void AttackStart(Unit *who)+ {+ return; //ignore all attackstart commands+ }++ void MoveInLineOfSight(Unit *who)+ {+ return; //ignore everyone around them (won't aggro anything)+ }++ void UpdateAI(const uint32 diff)+ {+ if(StartSay)+ {+ if(SayingTimer < diff)+ {+ switch(i)//Mob Saying Switch+ {+ case 1:+ DoSay(SAY_NELTHARAKU1,LANG_UNIVERSAL,NULL);+ SayingTimer = 35000;+ m_creature->SetUInt32Value(UNIT_NPC_FLAGS,0); //set npcflag to 0 would not allow other players to do that quest in same time!+ i++;+ break;+ case 2:+ DoSay(SAY_NELTHARAKU2,LANG_UNIVERSAL,NULL);+ SayingTimer = 35000;+ i++;+ break;+ case 3:+ DoSay(SAY_NELTHARAKU3,LANG_UNIVERSAL,NULL);+ SayingTimer = 90000;+ i++;+ break;+ }+ }else SayingTimer -= diff;++ if(SayingTimer2 < diff)+ {+ switch(ii)//Player Saying Switch+ {+ case 1:+ PlayerHolder->Say(SAY_PLAYER1,LANG_UNIVERSAL);+ SayingTimer2 = 35000;+ ii++;+ break;+ case 2:+ PlayerHolder->Say(SAY_PLAYER2,LANG_UNIVERSAL);+ SayingTimer2 = 20000;+ ii++;+ break;+ case 3:+ PlayerHolder->Say(SAY_PLAYER3,LANG_UNIVERSAL);+ SayingTimer2 = 8000;+ ii++;+ break;+ case 4:+ m_creature->SetUInt32Value(UNIT_NPC_FLAGS,3);+ PlayerHolder->CompleteQuest(10814);+ EnterEvadeMode();+ }+ }else SayingTimer2 -= diff;+ }++ return;+ }+};++CreatureAI* GetAI_neltharaku(Creature *_Creature)+{+ return new neltharakuAI (_Creature);+}++bool QuestAccept_neltharaku(Player *player, Creature *creature, Quest *quest )+{+ if(quest->GetQuestId() == 10814)+ {+ ((neltharakuAI*)creature->AI())->PlayerHolder = player;+ ((neltharakuAI*)creature->AI())->StartSay = true;+ return true;+ }+ return false;+}+++void AddSC_neltharaku()+{+ Script *newscript;+ newscript = new Script;+ newscript->Name="neltharaku";+ newscript->GetAI = GetAI_neltharaku;+ newscript->pQuestAccept = &QuestAccept_neltharaku;+ m_scripts[nrscripts++] = newscript;+}Index: scripts/zone/silvermoon/npc_blood_knight_stillblade.cpp===================================================================--- scripts/zone/silvermoon/npc_blood_knight_stillblade.cpp (revision 0)+++ scripts/zone/silvermoon/npc_blood_knight_stillblade.cpp (revision 0)@@ -0,0 +1,90 @@+/* Copyright (C) 2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>+* This program is free software; you can redistribute it and/or modify+* it under the terms of the GNU General Public License as published by+* the Free Software Foundation; either version 2 of the License, or+* (at your option) any later version.+*+* This program is distributed in the hope that it will be useful,+* but WITHOUT ANY WARRANTY; without even the implied warranty of+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+* GNU General Public License for more details.+*+* You should have received a copy of the GNU General Public License+* along with this program; if not, write to the Free Software+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+*/++#include "../../sc_defines.h"+#include "../../../../../game/Player.h"++// **** This script is still under Developement ****++#define SAY_HEAL "Thank you, dear Paladin, you just saved my life."++struct MANGOS_DLL_DECL npc_blood_knight_stillbladeAI : public ScriptedAI+{+ uint32 lifeTimer;+ bool spellHit;++ npc_blood_knight_stillbladeAI(Creature *c) : ScriptedAI(c) {EnterEvadeMode();}++ void EnterEvadeMode()+ {+ lifeTimer = 120000;+ m_creature->RemoveAllAuras();+ m_creature->DeleteThreatList();+ DoGoHome();+ m_creature->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 32);+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,7); // lay down+ spellHit = false;+ }++ void AttackStart(Unit *who)+ {+ return; //ignore all attackstart commands+ }++ void MoveInLineOfSight(Unit *who)+ {+ return;+ }++ void UpdateAI(const uint32 diff)+ {+ if (!m_creature->GetUInt32Value(UNIT_FIELD_BYTES_1))+ {+ if(lifeTimer < diff)+ m_creature->AI()->EnterEvadeMode();+ else + lifeTimer -= diff;+ }+ }++ void SpellHit(Unit *Hitter, const SpellEntry *Spellkind)+ {+ if(Spellkind->Id == 31225 && !spellHit)+ {+ DoCast(m_creature,32343);+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);+ m_creature->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0);+ m_creature->RemoveAllAuras();+ DoSay(SAY_HEAL,LANG_COMMON,NULL);+ spellHit = true;+ }+ }++};++CreatureAI* GetAInpc_blood_knight_stillblade(Creature *_Creature)+{+ return new npc_blood_knight_stillbladeAI (_Creature);+}++void AddSC_npc_blood_knight_stillblade()+{+ Script *newscript;+ newscript = new Script;+ newscript->Name="blood_knight_stillblade";+ newscript->GetAI = GetAInpc_blood_knight_stillblade;+ m_scripts[nrscripts++] = newscript;+}Index: scripts/zone/silvermoon/npc_blood_knight_stillblade.cpp===================================================================--- scripts/zone/silvermoon/npc_blood_knight_stillblade.cpp (revision 0)+++ scripts/zone/silvermoon/npc_blood_knight_stillblade.cpp (revision 0)@@ -0,0 +1,90 @@+/* Copyright (C) 2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>+* This program is free software; you can redistribute it and/or modify+* it under the terms of the GNU General Public License as published by+* the Free Software Foundation; either version 2 of the License, or+* (at your option) any later version.+*+* This program is distributed in the hope that it will be useful,+* but WITHOUT ANY WARRANTY; without even the implied warranty of+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+* GNU General Public License for more details.+*+* You should have received a copy of the GNU General Public License+* along with this program; if not, write to the Free Software+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+*/++#include "../../sc_defines.h"+#include "../../../../../game/Player.h"++// **** This script is still under Developement ****++#define SAY_HEAL "Thank you, dear Paladin, you just saved my life."++struct MANGOS_DLL_DECL npc_blood_knight_stillbladeAI : public ScriptedAI+{+ uint32 lifeTimer;+ bool spellHit;++ npc_blood_knight_stillbladeAI(Creature *c) : ScriptedAI(c) {EnterEvadeMode();}++ void EnterEvadeMode()+ {+ lifeTimer = 120000;+ m_creature->RemoveAllAuras();+ m_creature->DeleteThreatList();+ DoGoHome();+ m_creature->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 32);+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,7); // lay down+ spellHit = false;+ }++ void AttackStart(Unit *who)+ {+ return; //ignore all attackstart commands+ }++ void MoveInLineOfSight(Unit *who)+ {+ return;+ }++ void UpdateAI(const uint32 diff)+ {+ if (!m_creature->GetUInt32Value(UNIT_FIELD_BYTES_1))+ {+ if(lifeTimer < diff)+ m_creature->AI()->EnterEvadeMode();+ else + lifeTimer -= diff;+ }+ }++ void SpellHit(Unit *Hitter, const SpellEntry *Spellkind)+ {+ if(Spellkind->Id == 31225 && !spellHit)+ {+ DoCast(m_creature,32343);+ m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1,0);+ m_creature->SetUInt32Value(UNIT_DYNAMIC_FLAGS, 0);+ m_creature->RemoveAllAuras();+ DoSay(SAY_HEAL,LANG_COMMON,NULL);+ spellHit = true;+ }+ }++};++CreatureAI* GetAInpc_blood_knight_stillblade(Creature *_Creature)+{+ return new npc_blood_knight_stillbladeAI (_Creature);+}++void AddSC_npc_blood_knight_stillblade()+{+ Script *newscript;+ newscript = new Script;+ newscript->Name="blood_knight_stillblade";+ newscript->GetAI = GetAInpc_blood_knight_stillblade;+ m_scripts[nrscripts++] = newscript;+}Index: scripts/zone/stormwind/npc_bartleby.cpp===================================================================--- scripts/zone/stormwind/npc_bartleby.cpp (revision 116)+++ scripts/zone/stormwind/npc_bartleby.cpp (working copy)@@ -39,6 +39,24 @@ { PlayerHolder = NULL; }++ void DamageTaken(Unit *done_by, uint32 & damage)+ { + if ((m_creature->GetHealth() - damage)*100 / m_creature->GetMaxHealth() < 15)+ {+ //Take 0 damage+ damage = 0;++ if (done_by->GetTypeID() == TYPEID_PLAYER)+ {+ ((Player*)done_by)->AttackStop();+ ((Player*)done_by)->CompleteQuest(1640);+ }+ m_creature->CombatStop();+ EnterEvadeMode();+ }+ AttackedBy(done_by);+ } void AttackStart(Unit *who) {@@ -90,14 +108,6 @@ m_creature->resetAttackTimer(); } }-- if (PlayerHolder && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 15)- {- ((Player*)PlayerHolder)->AttackStop();- m_creature->CombatStop();- ((Player*)PlayerHolder)->CompleteQuest(1640);- EnterEvadeMode();- } } } };Index: scripts/zone/stormwind/npc_dashel_stonefist.cpp===================================================================--- scripts/zone/stormwind/npc_dashel_stonefist.cpp (revision 0)+++ scripts/zone/stormwind/npc_dashel_stonefist.cpp (revision 0)@@ -0,0 +1,140 @@+/* Copyright (C) 2006,2007 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>+* This program is free software; you can redistribute it and/or modify+* it under the terms of the GNU General Public License as published by+* the Free Software Foundation; either version 2 of the License, or+* (at your option) any later version.+*+* This program is distributed in the hope that it will be useful,+* but WITHOUT ANY WARRANTY; without even the implied warranty of+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+* GNU General Public License for more details.+*+* You should have received a copy of the GNU General Public License+* along with this program; if not, write to the Free Software+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+*/++#include "../../sc_defines.h"+#include "../../../../../game/Player.h"++struct MANGOS_DLL_DECL npc_dashel_stonefistAI : public ScriptedAI+{+ npc_dashel_stonefistAI(Creature *c) : ScriptedAI(c) {EnterEvadeMode();}++ Unit* PlayerHolder;++ void EnterEvadeMode()+ {+ m_creature->RemoveAllAuras();+ m_creature->DeleteThreatList();+ m_creature->CombatStop();+ m_creature->setFaction(11);+ DoGoHome();+ m_creature->setEmoteState(7);++ PlayerHolder = NULL;+ }++ void JustDied(Unit *who)+ {+ PlayerHolder = NULL;+ }++ void DamageTaken(Unit *done_by, uint32 & damage)+ { + if ((m_creature->GetHealth() - damage)*100 / m_creature->GetMaxHealth() < 15)+ {+ //Take 0 damage+ damage = 0;++ if (done_by->GetTypeID() == TYPEID_PLAYER)+ {+ ((Player*)done_by)->AttackStop();+ ((Player*)done_by)->CompleteQuest(1447);+ }+ m_creature->CombatStop();+ EnterEvadeMode();+ }+ AttackedBy(done_by);+ }++ void AttackStart(Unit *who)+ {+ if (!who)+ return;++ if (who->isTargetableForAttack() && who!= m_creature)+ {+ DoStartMeleeAttack(who);+ }+ }++ void MoveInLineOfSight(Unit *who)+ {+ if (!who || m_creature->getVictim())+ return;++ if (who->isTargetableForAttack() && who->isInAccessablePlaceFor(m_creature) && m_creature->IsHostileTo(who))+ {+ float attackRadius = m_creature->GetAttackDistance(who);+ if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && m_creature->IsWithinLOSInMap(who))+ {+ if(who->HasStealthAura())+ who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);++ //Begin melee attack if we are within range+ DoStartMeleeAttack(who);+ }+ }+ }++ void UpdateAI(const uint32 diff)+ {++ //Return since we have no target+ if (!m_creature->SelectHostilTarget())+ return;++ //Check if we have a current target+ if( m_creature->getVictim() && m_creature->isAlive())+ {++ if( m_creature->IsWithinDistInMap(m_creature->getVictim(), ATTACK_DISTANCE))+ {+ //Make sure our attack is ready and we arn't currently casting+ if( m_creature->isAttackReady())+ {+ m_creature->AttackerStateUpdate(m_creature->getVictim());+ m_creature->resetAttackTimer();+ }+ }+ }+ }+};++bool QuestAccept_npc_dashel_stonefist(Player *player, Creature *_Creature, Quest *_Quest)+{+ if(_Quest->GetQuestId() == 1447)+ {+ _Creature->setFaction(168);+ ((npc_dashel_stonefistAI*)_Creature->AI())->PlayerHolder = (Player*)player;+ ((npc_dashel_stonefistAI*)_Creature->AI())->AttackStart(player);+ }+ return true;+}++CreatureAI* GetAI_npc_dashel_stonefist(Creature *_creature)+{+ return new npc_dashel_stonefistAI(_creature);+}++void AddSC_npc_dashel_stonefist()+{+ Script *newscript;++ newscript = new Script;+ newscript->Name = "dashel_stonefist";+ newscript->GetAI = GetAI_npc_dashel_stonefist;+ newscript->pQuestAccept = &QuestAccept_npc_dashel_stonefist;+ m_scripts[nrscripts++] = newscript;+}Index: VC80/80ScriptDev2.vcproj===================================================================--- VC80/80ScriptDev2.vcproj (revision 116)+++ VC80/80ScriptDev2.vcproj (working copy)@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="windows-1250"?> <VisualStudioProject ProjectType="Visual C++"- Version="8.00"+ Version="8,00" Name="ScriptDev2" ProjectGUID="{4295C8A9-79B7-4354-8064-F05FB9CA0C96}" RootNamespace="ScriptDev2"@@ -1674,6 +1686,10 @@ <Filter Name="Nagrand" >+ <File+ RelativePath="..\scripts\zone\nagrand\mob_shattered_rumbler.cpp"+ >+ </File> </Filter> <Filter Name="Netherstorm"@@ -1686,6 +1702,10 @@ RelativePath="..\scripts\zone\shadowmoon_valley\boss_doomwalker.cpp" > </File>+ <File+ RelativePath="..\scripts\zone\shadowmoon_valley\npc_neltharaku.cpp"+ >+ </File> </Filter> <Filter Name="Tempest Keep"@@ -1778,6 +1798,10 @@ RelativePath="..\scripts\zone\stormwind\npc_bartleby.cpp" > </File>+ <File+ RelativePath="..\scripts\zone\stormwind\npc_dashel_stonefist.cpp"+ >+ </File> </Filter> <Filter Name="Coilfang Resevoir"@@ -1819,6 +1843,14 @@ > </Filter> </Filter>+ <Filter+ Name="Silvermoon City"+ >+ <File+ RelativePath="..\scripts\zone\silvermoon\npc_blood_knight_stillblade.cpp"+ >+ </File>+ </Filter> </Filter> </Filter> <File