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); } } }
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)); } }
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; }
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)); }
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); } }
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; } } }
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)); } } }
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(); } } }
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()); }
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); } }
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); }
// 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(); } }
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; }