示例#1
0
文件: Object.cpp 项目: mkstarr/Server
bool Object::Process(){
	if(m_type == OT_DROPPEDITEM && decay_timer.Enabled() && decay_timer.Check()) {
		// Send click to all clients (removes entity on client)
		EQApplicationPacket* outapp = new EQApplicationPacket(OP_ClickObject, sizeof(ClickObject_Struct));
		ClickObject_Struct* click_object = (ClickObject_Struct*)outapp->pBuffer;
		click_object->drop_id = GetID();
		entity_list.QueueClients(nullptr, outapp, false);
		safe_delete(outapp);

		// Remove object
		database.DeleteObject(m_id);
		return false;
	}

	if(m_ground_spawn && respawn_timer.Check()){
		RandomSpawn(true);
	}
	return true;
}
示例#2
0
int main(int argc, char **argv) {

	std::string board = std::string(BOARD_WIDTH*BOARD_HEIGHT, '=');

	int p1Move = 1;
	int p2Move = -1;
	int p1Score = 0;
	int p2Score = 0;
	int fruitPos = 0;

	std::vector<int> player1;
	std::vector<int> player2;

	ResetBoard(board, player1, player2, fruitPos, p1Move, p2Move);


	bool quit = false;

	while (!quit) {
		//REMOVE FOR FINAL CODE
		system("cls");

		//REMOVE FOR FINAL CODE
		//Change to receive client comamnds
		if (_kbhit())
		{
			switch (_getch())
			{
			//Player 1 Movement
			case 'a': 
				if(p1Move != 1)
					p1Move = -1;
				break;
			case 'd':
				if(p1Move != -1)
					p1Move = 1;
				break;
			case 'w': 
				if(p1Move != BOARD_WIDTH)
					p1Move = BOARD_WIDTH*-1;
				break;
			case 's': 
				if(p1Move != BOARD_WIDTH*-1)
					p1Move = BOARD_WIDTH*1;
				break;

			//Player 2 Movement
			case 75:
				if(p2Move != 1)
					p2Move = -1;
				break;
			case 77:
				if(p2Move != -1)
					p2Move = 1;
				break;
			case 72:
				if(p2Move != BOARD_WIDTH)
					p2Move = BOARD_WIDTH*-1;
				break;
			case 80: 
				if(p2Move != BOARD_WIDTH*-1)
				p2Move = BOARD_WIDTH * 1;
				break;

			}
		}

		bool gameover = false;

		int p1Next = player1.front() + p1Move;
		player1.insert(player1.begin(),p1Next);

		int p2Next = player2.front() + p2Move;
		player2.insert(player2.begin(), p2Next);

		if (HitBoundary(player1.front(), p1Move)) {
			p2Score++;
			gameover = true;
		}
		if (HitBoundary(player2.front(), p2Move)) {
			p1Score++;
			gameover = true;
		}

		if (!gameover) {
			if (fruitPos != player1.front())
				player1.pop_back();
			else {
				RandomSpawn(fruitPos, board);
				p1Score++;
			}

			if (fruitPos != player2.front())
				player2.pop_back();
			else {
				RandomSpawn(fruitPos, board);
				p2Score++;
			}
		}

		ClearBoard(board);
		if(gameover || !UpdateBoard(board, player1,player2,fruitPos,p1Score,p2Score,p1Move,p2Move))
			ResetBoard(board, player1, player2, fruitPos, p1Move, p2Move);


		//REMOVE FOR FINAL CODE
		DisplayState(board,p1Score,p2Score);
		Sleep(100);
	}


	
	return 0;
}
    void UpdateAI(const uint32 uiDiff)
    {
        if (!UpdateVictim())
            return;

        if (me->hasUnitState(UNIT_STAT_CASTING))
            return;

        if (m_uiIntroText == 1 || m_uiIntroText == 2 ||
            m_uiIntroText == 3 || m_uiIntroText == 4 ||
            m_uiIntroText == 5 || m_uiIntroText == 6)
        {
            if (m_uiIntroTextTimer < uiDiff)
            {
                switch(m_uiIntroText)
                {
                case 1: DoScriptText(SAY_INTRO_2, me); break;
                case 2: DoScriptText(SAY_INTRO_3, me); break;
                case 3: DoScriptText(SAY_INTRO_4, me); break;
                case 4: DoScriptText(SAY_INTRO_5, me); break;
                case 5: DoScriptText(SAY_INTRO_6, me); break;
                case 6: DoScriptText(SAY_INTRO_7, me); break;
                }
                m_uiIntroText++;
                m_uiIntroTextTimer = 10500;
            } else m_uiIntroTextTimer -= uiDiff;
        }

        if (m_uiResetTimer <= uiDiff)
        {
            if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 100)
                EnterEvadeMode();
            m_uiResetTimer = 5000;
        } else m_uiResetTimer -= uiDiff;

        if (m_uiBerserkTimer < uiDiff)
        {
            DoCast(me, SPELL_BERSERK);
            DoScriptText(SAY_BERSERK, me);
            m_uiBerserkTimer = 600000;
        } else m_uiBerserkTimer -= uiDiff;

        if (m_uiDeathandDecayTimer < uiDiff)
        {
            Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
            DoCast(pTarget, RAID_MODE(SPELL_DEATH_AND_DECAY_10_NORMAL,SPELL_DEATH_AND_DECAY_25_NORMAL,SPELL_DEATH_AND_DECAY_10_HEROIC,SPELL_DEATH_AND_DECAY_25_HEROIC));
            m_uiDeathandDecayTimer = 11000;
        } else m_uiDeathandDecayTimer -= uiDiff;

        if (m_uiDarkEmpoweredTimer < uiDiff)
        {
            DoScriptText(SAY_EMPOWERMENT, me);
            switch(rand() % 2)
            {
                case 0:
                    AdherentList(me);
                    break;
                case 1:
                    FanaticList(me);
                    break;
            }
            m_uiDarkEmpoweredTimer = 20000;
        } else m_uiDarkEmpoweredTimer -= uiDiff;

        if (m_uiDominateMindTimer < uiDiff)
        {
            uint32 count = RAID_MODE(0,1,1,3);
            for (uint8 i = 1; i <= count; i++)
            {
                Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
                if (pTarget && !pTarget->HasAura(71289))
                {
                    DoCast(pTarget, SPELL_DOMINATE_MIND);
                    DoScriptText(SAY_DOMINATE_MIND, me);
                }
            }
            m_uiDominateMindTimer = 12000;
        } else m_uiDominateMindTimer -= uiDiff;

        if (m_uiPhase == 1)
        {
            if (me->GetPower(POWER_MANA) == 100000)
            {
                me->MonsterTextEmote(EMOTE_MANA_BARRIER,NULL);
            }

            if (m_uiShadowBoltTimer < uiDiff)
            {
                Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
                DoCast(pTarget, RAID_MODE(SPELL_SHADOW_BOLT_10_NORMAL,SPELL_SHADOW_BOLT_25_NORMAL,SPELL_SHADOW_BOLT_10_HEROIC,SPELL_SHADOW_BOLT_25_HEROIC));
                m_uiShadowBoltTimer = 5000;
            } else m_uiShadowBoltTimer -= uiDiff;

            if (m_uiSummonWaveTimer < uiDiff)
            {
                if (getDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL || getDifficulty() == RAID_DIFFICULTY_10MAN_HEROIC)
                {
                    RandomSpawn();
                }
                if (getDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL || getDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC)
                {
                    me->SummonCreature(NPC_CULT_FANATIC,-619.006,2158.104,50.848,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                    me->SummonCreature(NPC_CULT_ADHERENT,-598.697,2157.767,50.848,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                    me->SummonCreature(NPC_CULT_FANATIC,-577.992,2156.989,50.848,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                    me->SummonCreature(NPC_CULT_ADHERENT,-618.748,2266.648,50.849,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                    me->SummonCreature(NPC_CULT_FANATIC,-598.573,2266.870,50.849,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                    me->SummonCreature(NPC_CULT_ADHERENT,-578.360,2267.210,50.849,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                    me->SummonCreature(RAND(NPC_CULT_FANATIC, NPC_CULT_ADHERENT), -555.643,2211.281,49.476,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                }
                m_uiSummonWaveTimer = 60000;
            } else m_uiSummonWaveTimer -= uiDiff;

            if ((me->GetPower(POWER_MANA)*100 / me->GetMaxPower(POWER_MANA)) < 1)
            {
                                me->MonsterTextEmote(EMOTE_MANA_BARRIER,NULL);
                DoScriptText(SAY_PHASE_2, me);
                DoResetThreat();
                m_uiPhase = 2;
            }
        }

        if (m_uiPhase == 2)
        {
                        if (me->HasAura(SPELL_MANA_BARRIER))
                                me->RemoveAurasDueToSpell(SPELL_MANA_BARRIER);

            if (me->HasAura(SPELL_ROOT))
                me->RemoveAurasDueToSpell(SPELL_ROOT);

            if (m_uiFrostBoltTimer < uiDiff)
            {
                Unit* pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,0);
                me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_INTERRUPT, false);
                DoCast(pTarget, RAID_MODE(SPELL_FROST_BOLT_10_NORMAL,SPELL_FROST_BOLT_25_NORMAL,SPELL_FROST_BOLT_10_HEROIC,SPELL_FROST_BOLT_25_HEROIC));
                m_uiFrostBoltTimer = 5000;
            } else m_uiFrostBoltTimer -= uiDiff;

            if (m_uiFrostValleyTimer < uiDiff)
            {
                me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_INTERRUPT, true);
                DoCastAOE(RAID_MODE(SPELL_FROST_BOLT_VALLEY_10_NORMAL,SPELL_FROST_BOLT_VALLEY_25_NORMAL,SPELL_FROST_BOLT_VALLEY_10_HEROIC,SPELL_FROST_BOLT_VALLEY_25_HEROIC));
                m_uiFrostValleyTimer = 15000;
            } else m_uiFrostValleyTimer -= uiDiff;

            if (m_uiInsignificanceTimer < uiDiff)
            {
                Unit* pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,0);
                DoCast(pTarget, SPELL_INSIGNIFICANCE);
                m_uiInsignificanceTimer = 30000;
            } else m_uiInsignificanceTimer -= uiDiff;

            if (m_uiSummonWaveTimer < uiDiff)
            {
                if (getDifficulty() == RAID_DIFFICULTY_10MAN_HEROIC)
                {
                    Unit* pSummoned= NULL;
                    me->SummonCreature(RAND(NPC_CULT_FANATIC, NPC_CULT_ADHERENT), -555.643,2211.281,49.476,0,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,10000);
                }
                if (getDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC)
                {
                    RandomSpawn();
                }
                m_uiSummonWaveTimer = 60000;
            } else m_uiSummonWaveTimer -= uiDiff;

            if (m_uiShadeTimer < uiDiff)
            {
                uint32 count = RAID_MODE(0,1,1,1);
                for (uint8 i = 1; i <= count; i++)
                {
                    Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1);
                    DoCast(pTarget, SPELL_SUMMON_SHADE);
                    m_uiShadeTimer = 15000;
                }
            } else m_uiShadeTimer -= uiDiff;

            DoMeleeAttackIfReady();
        }
    }
示例#4
0
            void UpdateAI(const uint32 uiDiff)
            {
                if(m_uiPhase == 1)
                    DoStartNoMovement(me->getVictim());
                else if(m_uiPhase == 2)
                    DoStartMovement(me->getVictim());

                if (m_uiIntroTimer <= uiDiff && bIntro && m_uiIntroPhase < 7)
                {
                    switch (m_uiIntroPhase)
                    {
                        case 1: DoScriptText(SAY_INTRO_2, me); m_uiIntroTimer = 10000; break;
                        case 2: DoScriptText(SAY_INTRO_3, me); m_uiIntroTimer = 7000;  break;
                        case 3: DoScriptText(SAY_INTRO_4, me); m_uiIntroTimer = 12000; break;
                        case 4: DoScriptText(SAY_INTRO_5, me); m_uiIntroTimer = 7000;  break;
                        case 5: DoScriptText(SAY_INTRO_6, me); m_uiIntroTimer = 11000; break;
                        case 6: DoScriptText(SAY_INTRO_7, me); m_uiIntroTimer = 20000; break;
                    }
                    ++m_uiIntroPhase;
                } else m_uiIntroTimer -= uiDiff;

                if (!UpdateVictim())
                    return;

                if (m_uiBerserkTimer < uiDiff)
                {
                    DoCast(me, SPELL_BERSERK);
                    DoScriptText(SAY_BERSERK, me);
                    m_uiBerserkTimer = 600000;
                } else m_uiBerserkTimer -= uiDiff;

                if (m_uiCultTimer < uiDiff)
                {
                    EmpowerCultist();
                    m_uiCultTimer = urand(20000, 23000);
                } else m_uiCultTimer -= uiDiff;

                if (m_uiDeathandDecayTimer < uiDiff)
                {
                    if(Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))
                        DoCast(pTarget, SPELL_DEATH_AND_DECAY);
                    m_uiDeathandDecayTimer = 11000;
                } else m_uiDeathandDecayTimer -= uiDiff;

                if (m_uiDominateMindTimer < uiDiff)
                {
                    for (uint8 i = 1; i <= RAID_MODE(0,1,1,3); ++i)
                    {
                        if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true, -SPELL_DOMINATE_MIND))
                            DoCast(pTarget, SPELL_DOMINATE_MIND);
                    }
                    DoScriptText(SAY_DOMINATE_MIND, me);
                    m_uiDominateMindTimer = 15000;
                } else m_uiDominateMindTimer -= uiDiff;

                if (m_uiPhase == 1)
                {
                    if (m_uiShadowBoltTimer < uiDiff)
                    {
                        if(Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))
                            DoCast(pTarget, SPELL_SHADOW_BOLT);
                        m_uiShadowBoltTimer = 6000;
                    } else m_uiShadowBoltTimer -= uiDiff;

                    if (m_uiSummonWaveTimer < uiDiff)
                    {
                        if (Difficulty() == RAID_DIFFICULTY_10MAN_NORMAL || Difficulty() == RAID_DIFFICULTY_10MAN_HEROIC)
                            RandomSpawn();
                        else
                        {
                            DoSummon(CREATURE_FANATIC, SpawnLoc[0]);
                            DoSummon(CREATURE_ADHERENT, SpawnLoc[1]);
                            DoSummon(CREATURE_FANATIC, SpawnLoc[2]);
                            DoSummon(CREATURE_ADHERENT, SpawnLoc[3]);
                            DoSummon(CREATURE_FANATIC, SpawnLoc[4]);
                            DoSummon(CREATURE_ADHERENT, SpawnLoc[5]);
                            DoSummon(RAND(CREATURE_FANATIC,CREATURE_ADHERENT), SpawnLoc[6]);
                        }
                        bFirstSummon = false ? true : true;
                        m_uiSummonWaveTimer = !bFirstSummon ? 10000 : 60000;
                    } else m_uiSummonWaveTimer -= uiDiff;
                }

                if (m_uiPhase == 2)
                {
                    if (m_uiFrostBoltTimer < uiDiff)
                    {
                        DoCast(me->getVictim(), SPELL_FROST_BOLT);
                        m_uiFrostBoltTimer = 10000;
                    } else m_uiFrostBoltTimer -= uiDiff;

                    if (m_uiFrostValleyTimer < uiDiff)
                    {
                        DoCast(SPELL_FROST_BOLT_VALLEY);
                        m_uiFrostValleyTimer = 19000;
                    } else m_uiFrostValleyTimer -= uiDiff;

                    if (m_uiInsignificanceTimer < uiDiff)
                    {
                        DoCast(me->getVictim(), SPELL_INSIGNIFICANCE);
                        m_uiInsignificanceTimer = 8000;
                    } else m_uiInsignificanceTimer -= uiDiff;

                    if (m_uiSummonWaveTimer < uiDiff)
                    {
                        if (Difficulty() == RAID_DIFFICULTY_10MAN_HEROIC)
                            DoSummon(RAND(CREATURE_FANATIC,CREATURE_ADHERENT), SpawnLoc[6]);
                        if (Difficulty() == RAID_DIFFICULTY_25MAN_HEROIC)
                            RandomSpawn();
                        m_uiSummonWaveTimer = 60000;
                    } else m_uiSummonWaveTimer -= uiDiff;

                    if (m_uiShadeTimer < uiDiff)
                    {
                        DoCast(SPELL_SUMMON_SHADE);
                        m_uiShadeTimer = 15000;
                    } else m_uiShadeTimer -= uiDiff;

                    DoMeleeAttackIfReady();
                }
            }