//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- CObjectSapper::CObjectSapper() { m_iHealth = GetBaseHealth(); SetMaxHealth( GetBaseHealth() ); UseClientSideAnimation(); }
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; }
//----------------------------------------------------------------------------- // 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 ); }
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()); } }