Beispiel #1
0
void CTurtle::Update(float fElapsedTime)
{
	m_vAnimations[m_nCurrAnimation].Update(fElapsedTime);
	if(GetExperience() >= (100 * GetLevel()))
	{
		CBattleMap::GetInstance()->PlaySFX(CAssets::GetInstance()->aBMcowabungaSnd);
		SetExperience(0/*GetExperience()-(100* GetLevel())*/);
		SetLevel(GetLevel() + 1);
		SetHealthMax((int)((float)GetMaxHealth() * 1.25f));
		SetHealth((int)((float)GetMaxHealth()));
		SetBaseAP(GetBaseAP()+2);
		SetStrength( (int)( (float)GetStrength() * 1.2f ) );
		SetDefense( (int) ( (float)GetDefense() * 1.2f ) );
		SetAccuracy( (int) ( (float)GetAccuracy() * 1.2f ) );
		SetSpeed( (int) ( (float)GetSpeed() * 1.2f ) );
	}
	if( GetHealth() <= 0)
	{
		if(GetAlive() == true)
		{
			CBattleMap::GetInstance()->DecrementNumChars();
			CBattleMap::GetInstance()->DecrementNumTurtles();
			CBattleMap::GetInstance()->SetTurtleDead();
			SetAlive(false);
			if(GetCurrAnimNum() != 9)
				SetCurrAnim(9);
			SetPosZ(0.9f);
		}
	}
}
Beispiel #2
0
void Enemy::Render(){
	if(GetAlive()){
		//only draw it if it's in the screen
		if(x > LEVEL_LEFT_X + 8 && x < LEVEL_RIGHT_X - 8 && y > LEVEL_TOP_Y - 8 && y < LEVEL_BOT_Y + 8)
			al_draw_filled_rectangle(x, y, x+boundX, y+boundY, al_map_rgb(107, 142, 35));
	}
}
Beispiel #3
0
bool CBurnBot::CheckCollision(IBaseObject* pObj)
{
	if(pObj == this)
		return false;

	if(!pObj->GetAlive())
		return false;

	if(!GetAlive())
		return false;

	int nType = pObj->GetID();

	bool bAvoid = nType == OBJ_SMASH || nType == OBJ_SPIDER || nType >= OBJ_VAT && nType <= OBJ_BARREL || nType == OBJ_BOSSINV || nType == OBJ_INVERSION;

	if( bAvoid )
		Utilities::CheckAvoid(this, pObj);

	if(nType >= OBJ_TRASH && nType <= OBJ_AIFIST ||  nType == OBJ_PLAYER ||  nType >= OBJ_VAT && nType <= OBJ_BARREL
		|| nType == OBJ_INVERSION || OBJ_TUNNEL)
	{
		if(SphereToSphere(GetSphere(), pObj->GetSphere()))
		{
			if(OBJ_TUNNEL)
				CollisionResponse(pObj);
			else
				AddToReactVector(pObj);
			//CollisionResponse(pObj);
			return true;
		}
	}

	return false;
}
Beispiel #4
0
global func FxFireStart(object obj, int iNumber, int iTemp, int iCausedBy, bool fBlasted, object pIncineratingObject)
  {
  // Wenn ein Objekt zu brennen beginnt, gleich das Löschen planen
  var i;
  if (!iTemp) if (GetAlive(obj)) if (i=ObjectCount(_ETG))
    {
    // Lösche in Schlüsselframes, damit nahe beieinanderliegende Objekte ungefähr gleichzeitig gelöscht werden
    // Dies verringert die Chance des Neuanzündens
    var iExtgTime = 200/i + 50 - (FrameCounter() % 50);
    AddEffect("IntExtinguisher", obj, 1, iExtgTime, obj);
    }
  return(inherited(obj, iNumber, iTemp, iCausedBy, fBlasted, pIncineratingObject));
  }
Beispiel #5
0
func Check() {
  var clnk;
  if(GetAction()S="Falling") return(Falling());
    
  while(clnk=FindObject(0,-25,0,50,100,OCF_CrewMember(),0,0,0,clnk)) 
    if(GetAlive(clnk) && !Random(2)) { 
      Sound("Earthquake"); 
      SetAction("Falling");
      SetPhase(phase);
      RemoveVertex(0);
      RemoveVertex(0);
    }
}
Beispiel #6
0
void Bullet::Render(){
	if(GetAlive()){
		switch(GetGun()){
		case PISTOL:
			al_draw_filled_circle(x, y, 2, al_map_rgb(255, 255, 255));
			break;
		case SHOTGUN:
			al_draw_filled_circle(x, y, 2, al_map_rgb(255, 255, 255));
			break;
		case RIFLE:
			al_draw_filled_circle(x, y, 2, al_map_rgb(255, 255, 255));
			break;
		}
	}
}
Beispiel #7
0
void Enemy::Move(GameObject *otherObject){
	float dir;
	if(GetAlive()){
		if(otherObject->GetID() == PLAYER){
			if(otherObject->GetX() - x >= 0){
				dir = atan((otherObject->GetY() - y)/(otherObject->GetX() - x));
			}
			else{
				dir = atan((otherObject->GetY() - y)/(otherObject->GetX() - x)) + M_PI;
			}

			SetVelX(vel*cos(dir));
			SetVelY(vel*sin(dir));
		}
	}
}
Beispiel #8
0
void Player::Update()
{
	if(GetAlive())
	{
		m_iBulletTimer++;
		m_iMissileTimer++;
		m_iLaserTimer++;
		Entity::Move();
		Entity::Draw();
		Control();

		for(int i = 0; i <  GetProjectiles().size(); ++i)
		{
			 GetProjectiles()[i]->Update();
		}
	}
}
Beispiel #9
0
public func Activate(object pCaster, object pRealcaster) {

  var pDead, pClonk=pRealcaster, iRange=300;
  if(!pClonk) pClonk=pCaster;

  // Auswählen wenn möglich
  if (pClonk->~DoSpellSelect(this(),iRange/2, pCaster)) return(1);

  // Clonk kann nicht auswählen: nächsten toten Clonk erwecken
  while(pDead=FindObject(0,-iRange/2,-iRange/2,iRange,iRange,OCF_Living,0,0,NoContainer(),pDead))
    if(pDead->~IsClonk())
      if(!GetAlive(pDead))
        if(!GetEffectCount("*",pDead))
          if(AddEffect("UndeadSpell",pDead,82,10,0,GetID(),GetOwner(pCaster)))
            return(1,RemoveObject());

  pClonk->Sound("Error");
  return(0,Message("$MsgNoUndeads$", pClonk), RemoveObject());
}
Beispiel #10
0
void Bullet::Update(GameObject *otherObject){
	if(GetAlive()){
		GameObject::Update(otherObject);


		//this needs to change depending on the gun
		distanceTraveled += vel;

		if(distanceTraveled > range)
			SetAlive(false);

		if(x < LEVEL_LEFT_X)
			SetAlive(false);
		else if(x > LEVEL_RIGHT_X)
			SetAlive(false);
		else if(y < LEVEL_TOP_Y)
			SetAlive(false);
		else if(y > LEVEL_BOT_Y)
			SetAlive(false);
	}
}
Beispiel #11
0
public func Activate(pCaller, pClonk)
{                            
  if(!pClonk) pClonk = pCaller;
  // Effekt prüfen
  var iChkEff;
  if (iChkEff = CheckEffect("CookPSpell", pCaller, 180)) return(iChkEff!=-1 && RemoveObject());
  // Inhalt untersuchen
  var obj = Contents(0, pClonk), obj2;
  var res;
  if(!obj) res = 0;
  else if(obj->~Cook()) res = 1; // Kochbar?
  else if(obj->~Bake()) res = 1; // Backbar?
  else if(GetAlive(obj)) { Kill(obj); res=1; } // Tötbar?
  
  if(!res) return(0, Message("$NoCook$", pCaller), RemoveObject());
  // Einmaliger Effekt pro Zauber
  Sound("Cook");
  CastParticles("Fire", 20, 30, 0, 0, 50, 70, RGBa(255, 100, 0, 50), RGBa(200, 100, 0, 75),pClonk);
  CastParticles("Fire2", 100, 50, 0, 0, 50, 70, RGBa(255, 100, 0, 50), RGBa(200, 100, 0, 75),pClonk);
  return(true);
}
Beispiel #12
0
// Kopfgeld
global func FxDeathCountingStop(pTarget, iNumber, iReason, fTmp)
{
  if(fTmp) return();
  if(iReason!=4) return(-1);
  if(GetAlive(pTarget)) return(-1);
  var i = -1;
  if(CheckTeam(GetOwner(pTarget))==1)
  {
    killWOLF++;
    ActualizeScoreboard();
  }
  else if(CheckTeam(GetOwner(pTarget))==2)
  {
    killTRPR++;
    ActualizeScoreboard();
  }
  else
  {
    killBEAR++;
    ActualizeScoreboard();
  }
}
Beispiel #13
0
func InitActivity()
{
	if (GetAlive()) AddTimer(this.Activity, 10 + Random(5));
}
bool CExplodingBullet::CheckCollision(IBaseObject* pObj)
{
	if( !GetAlive() || !pObj->GetAlive())
		return false;

	int nType = pObj->GetID();

	switch(m_nType)
	{
	case SPECIALBULLET:
		{
			if( nType == OBJ_BULLET_ENEMY || nType > OBJ_PLAYER && nType <= OBJ_AIFIST || 
				nType >= OBJ_VAT && nType <= OBJ_BARREL || nType == OBJ_INVERSION || nType == OBJ_BOSSINV || nType == OBJ_BOSSTURRET)
			{
				std::list<IBaseObject*>::iterator iter;

				for( iter = m_lEnemies.begin(); iter != m_lEnemies.end(); ++iter )
				{
					if( (*iter) == pObj )
						return false;
				}

				if( SphereToSphere(GetSphere(), pObj->GetSphere()))
				{
					m_lEnemies.push_back(pObj);
					CollisionResponse(pObj);
					CEffect* pEffect = CGameplayState::GetInstance()->GetFX()->CreateEffect(EFFECT_SPECIALHIT,pObj->GetMatrix());
					if(pEffect)
						pEffect->SetColors((D3DXCOLOR)GetColor());
					return true;
				}
			}
		}
		break;
	case SMASHBULLET:
		{
			if( nType == OBJ_PLAYER || nType == OBJ_TRASH )
			{
				if( SphereToSphere(GetSphere(), pObj->GetSphere()))
				{
					CollisionResponse(pObj);
					return true;
				}
			}
		}
		break;
	case BARRELBULLET:
		{
			if( nType == OBJ_PLAYER || nType >= OBJ_TRASH && nType <= OBJ_STEAM)
			{
				if( SphereToSphere(GetSphere(), pObj->GetSphere()))
				{
					CollisionResponse(pObj);
					return true;
				}
			}
			else if( nType == OBJ_BARREL)
			{
				if( SphereToSphere(GetSphere(), pObj->GetSphere()))
				{
					pObj->CollisionResponse(this);
					return true;
				}
			}
		}
		break;
	case INVERSION_BULLET:
		{
			if(nType == OBJ_PLAYER)
			{
				if(SphereToSphere(GetSphere(), pObj->GetSphere()))
				{
					CollisionResponse(pObj);
					return true;
				}
			}
		}
	}
	return false;
}