Exemplo n.º 1
0
//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
CObjectSapper::CObjectSapper()
{
	m_iHealth = GetBaseHealth();
	SetMaxHealth( GetBaseHealth() );

	UseClientSideAnimation();
}
Exemplo n.º 2
0
void TowerDefenseInstanceScript::TowerDefenseMapInstanceScript::UpdateHealth(uint32 remove)
{
    if(!remove)
        return;

    Player *player = GetPlayer();
    if(!player)
        return;

    uint32 currentHealth = GetBaseHealth();
    if(remove > currentHealth){
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_DEST); // the removal from the base health is larger than the base health. the player's event ends.
        player->PlayDirectSound(TD_ENDEVENT_MUSIC,player); // play ending music
        player->GetSession()->SendNotification("The Tower defense game has finished. You lost!");
        HandleEventComplete(TD_EVENT_COMPLETE_LOST); // Complete the event data using the lost type
        RecordLog("TowerDefense: Player Name: [%s] has lost the tower defense event. With Event Id: [%u]",player->GetName(), GetEventId()); // record a log to the server log if enabled.
        return;
    }else {
        currentHealth -= remove;  // decrement current health
        SetBaseHealth(currentHealth);
        RecordLog("TowerDefense: Updated health for Event Id: [%u] to [%u].", GetEventId(), currentHealth);
    }

    switch(currentHealth)
    {
    case 90:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_REACHED, 90);
        break;
    case 80:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_LOWERING, 80);
        break;
    case 70:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_REACHED, 70);
        break;
    case 60:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_LOWERING, 60);
        break;
    case 50:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_REACHED, 50);
        break;
    case 40:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_LOW);
        player->CastSpell(player,GetSpellIdByUniqueId(3),true);
        player->PlayDirectSound(TD_ENDEVENT_MUSIC,player);
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_REACHED, 40);
        break;
    case 25:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_VERYLOW);
        player->CastSpell(player,GetSpellIdByUniqueId(2),true);
        player->PlayDirectSound(TD_BASE_LOSING_HEALTH,_player);
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_LOWERING, 25);
        break;
    case 10:
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_REACHED, 10);
        SendMessageToPlayer(TD_SYSTEM_MSG_HEALTH_ALMOSTDEST);
        break;
    }
    return;
}
Exemplo n.º 3
0
//-----------------------------------------------------------------------------
// Purpose: 
//-----------------------------------------------------------------------------
void CObjectSapper::Spawn()
{
	SetModel( GetSapperModelName( SAPPER_MODEL_PLACEMENT ) );

	m_takedamage = DAMAGE_YES;
	m_iHealth = GetBaseHealth();

	SetType( OBJ_ATTACHMENT_SAPPER );

	BaseClass::Spawn();

	Vector mins = SAPPER_MINS;
	Vector maxs = SAPPER_MAXS;
	CollisionProp()->SetSurroundingBoundsType( USE_SPECIFIED_BOUNDS, &mins, &maxs );

    m_fObjectFlags.Set( m_fObjectFlags | OF_ALLOW_REPEAT_PLACEMENT );

	SetSolid( SOLID_NONE );
}
Exemplo n.º 4
0
void TowerDefenseInstanceScript::TowerDefenseMapInstanceScript::SaveEventData()
{
    if(QueryResult queryResult = CharacterDatabase.PQuery("SELECT * FROM custom_td_events WHERE Id = '%u'", GetEventId())){
        CharacterDatabase.PExecute("UPDATE custom_td_events SET eventFinished = '%u'", GetFinished());
        RecordLog("TowerDefense: Updated Event Id: [%u], it is now set to finished!",GetEventId());
    }
    else{
        CharacterDatabase.PExecute("INSERT INTO custom_td_events VALUES ('%u', '%u', '%u', '%u', '%u', NOW(), '%u')", GetEventId(), GetPlayerGUID(), GetCurrentWaveId(), GetResources(),GetBaseHealth(), GetFinished());
        RecordLog("TowerDefense: Inserted Event Id: [%u] to the database.", GetEventId());
    }
}