Example #1
0
//void LandSatt(int &isp)
void CheckBallLanded(int &current_player)
{
	if (isplaying[current_player].BallLanded == true || isplaying[current_player].BallInHole)
	{	
		isplaying[current_player].BallLanded = false;
        	isplaying[current_player].score++;
		
		if (isplaying[current_player].BallInHole)
		{
            		players.finished_hole++;
		}
        	
		if (players.finished_hole == players.players)
		{
			++ActiveGolfCourse;
			
			if(ActiveGolfCourse==9 || players.tournament==false)
			{
				if(players.tournament)
				{
					players.finished=true; //Gör det möjligt att komma in på highscore
					Highscore(DSurface.InitPlayerSurface,isplaying,players);						
				}
					
				for(int i=0; i < NUMBER_OF_PLAYERS; i++)
				{
					isplaying[i].BallInHole=false;
				}
				players = Players();
			}
			else
			{
				bredd=GolfCourseWidth[ActiveGolfCourse];
				hojd=GolfCourseHeight[ActiveGolfCourse];
				yta=tyta[ActiveGolfCourse];
				players.finished_hole = 0;
	
				for(int i=0; i<players.players; i++)
				{
					isplaying[i].BallInHole=false;					
					isplaying[i].ball=GolfBallPosition[ActiveGolfCourse];
				}
				current_player = 0;
	                	BreddHojd(isplaying[current_player].ball); //Centrerar skärmen
			}

			// Byt bana
		}
		else
		{
	                while (isplaying[(++current_player) % players.players].BallInHole == true) //Stegar frammåt till nästa spelare som itne satt den
					;

        	        current_player %= players.players;
                	BreddHojd(isplaying[current_player].ball);
		}
	}
}
Example #2
0
NamedScript void AddXP(int PlayerNum, long int XP, long int Rank)
{
    // Scale XP/Rank Gains using the XP Scaling Option
    XP = (int)(XP * GetCVarFixed("drpg_scalexp"));
    
    Players(PlayerNum).ComboTimer = COMBO_MAX;
    Players(PlayerNum).Combo++;
    
    Players(PlayerNum).XPGained += XP;
    Players(PlayerNum).RankGained += Rank;
    
    Players(PlayerNum).Payout.XP += XP;
    Players(PlayerNum).Payout.Rank += Rank;
    
    if (Players(PlayerNum).Aura.Type[AURA_WHITE].Active)
    {
        if (Players(PlayerNum).Aura.Time > 0)
            Players(PlayerNum).Combo++;
        if (Player.Aura.Type[AURA_WHITE].Level >= 3 && XP > 0 && Rank > 0)
            Players(PlayerNum).BonusGained += XP + Rank;
    }
}
Example #3
0
void CDynGameData::CheckBurn() 
{
	int a;//,mod;

	for(a=0; a<Players().size(); a++) 
		if (!Players()[a]->iDead) 
		{
			Players()[a]->CheckBurning( this );
		}

	std::vector< CEnemy >::iterator iter = iRuntimeData->Enemies().begin();

	while(iter != iRuntimeData->Enemies().end() )
	{
		if (iter->CheckBurning( this ))
		{
			iRuntimeData->KillEnemy( iter );
		}
		else
            ++iter;
	}
}
Example #4
0
bool CDynGameData::TestEnemyLocation( CCoord<int>& aPos, bool aStrictCheck )
{
	int plyDist = KCharacterSpriteSize;
	const int KEnemyRad = 9;

	if ( aStrictCheck )
		plyDist = KCharacterSpriteSize*5;

	if (iRuntimeData->Level().Reachable( aPos.Add(KBlockSpriteSize/2, KBlockSpriteSize/2).Div( KBlockSpriteSize ) ) )
	{
		std::vector< CEnemy >::iterator iter = iRuntimeData->Enemies().begin();
		while(iter != iRuntimeData->Enemies().end() )
		{
			if (CMath::GetDist(aPos,iter->Location()) < KEnemyRad*2 )
			{
				DEBUG1("CDynGameData::TestEnemyLocation: other enemy %s too close.\n",iter->Location().String().c_str() );
				return false;
			}
			++iter;
		}

		for(int b=0; b < iRuntimeData->Level().StartPositions() && !aStrictCheck; b++)
		{
			// don't put enemies on start blocks.
			if (CMath::GetDist( aPos, iRuntimeData->Level().StartPosition( b ).Mul( KBlockSpriteSize )) < KBlockSpriteSize )
			{
				DEBUG0("CDynGameData::TestEnemyLocation: enemy on startblock\n");
				return false;
			}
		}

		for(int c=0; c < Players().size(); c++)
		{
			if ( CMath::GetDist( aPos, iAnyPlayer[c]->Location() ) < plyDist )
			{
				DEBUG0("CDynGameData::TestEnemyLocation: player too close\n");
				return false; 
			}
		}

		return true;
	}
	else
	{
		DEBUG0("CDynGameData::TestEnemyLocation: enemy unreachable\n");
		return false;
	}
}
Example #5
0
// Arena Script
NamedScript MapSpecial void ArenaLoop()
{
    int BonusRandomizer, Buttons, OldButtons;
    bool Ready;
    ArenaSetEnvironment(AEVENT_NONE);
    
    // Arena Loop
    while (true)
    {
        // Stop the script if the Arena is stopped or the Arena activator dies
        if (!ArenaActive || ClassifyActor(Players(ArenaPlayerNumber).TID) & ACTOR_DEAD)
        {
            ArenaStop();
            return;
        }
        
        // Arena HUD
        ArenaDrawHUD();
        
        // Arena Status Handling
        if (ArenaState == ARENA_INTERMISSION)
        {
            BonusRandomizer = Random(-10, ABONUS_MAX - 1);

            ArenaMod = -1;
            ArenaGetBonus(BonusRandomizer);
            ArenaSetEnvironment(AEVENT_NONE);
            ArenaState = ARENA_WAITING;
        }
        else if (ArenaState == ARENA_WAITING)
        {
            Buttons = GetPlayerInput(ArenaPlayerNumber, INPUT_BUTTONS);
            OldButtons = GetPlayerInput(ArenaPlayerNumber, INPUT_OLDBUTTONS);
            Ready = true;
            
            SetHudSize(0, 0, false);
            SetFont("BIGFONT");
            
            if (ArenaPlayerNumber == PlayerNumber())
            {
                if (!Player.InMenu && !Player.InShop && !Player.OutpostMenu)
                {
                    HudMessage("Press \Cd%jS\C- to start the next wave\nPress \Cd%jS\C- to exit the Arena", "+use" , "+speed");
                    EndHudMessage(HUDMSG_PLAIN, 0, "White", 1.5, 0.75, 0.05);
                }
                
                if (Buttons & BT_USE && (!Player.InMenu && !Player.InShop && !Player.OutpostMenu && !Player.CrateOpen) && !Player.MenuBlock)
                {
                    // Check to see if others are still in the menu
                    for (int i = 0; i < MAX_PLAYERS; i++)
                        if (Players(i).InMenu || Players(i).InShop)
                            Ready = false;
                    
                    if (Ready)
                    {
                        ArenaKeyTimer++;
                        ArenaKeyTimerType = AKTIMER_CONTINUE;
                        if (ArenaKeyTimer > ARENA_HOLDTIME)
                        {
                            // Multiplayer Countdown
                            if (InMultiplayer)
                            {
                                SetFont("BIGFONT");
                                for (int i = 3; i > 0; i--)
                                {
                                    HudMessage("%d", i);
                                    EndHudMessageBold(HUDMSG_FADEOUT, 0, "Green", 0.5, 0.5, 0.25, 0.75);
                                    Delay(35);
                                }
                            }
                            
                            ArenaWave++;
                            ArenaState = ARENA_READY;
                        }
                    }
                    else
                    {
                        PrintError("Someone is currently in a menu");
                        ActivatorSound("menu/error", 127);
                    }
                }
                else if (Buttons & BT_SPEED && (!Player.InMenu && !Player.InShop && !Player.OutpostMenu && !Player.CrateOpen))
                {
                    ArenaKeyTimer++;
                    ArenaKeyTimerType = AKTIMER_STOP;
                    if (ArenaKeyTimer > ARENA_HOLDTIME)
                    {
                        ArenaStop();
                        return;
                    }
                }
                else
                    ArenaKeyTimer = 0;
                
                // Reset menu block
                if (Buttons == 0 && OldButtons == 0)
                    Player.MenuBlock = false;
            }
        }