void FirePatternAllRangeTimeRag::action(MovingObject *owner){ if(isFire() && owner->getStatus() == VALID){ Rect r = owner->getHitRect(); ShootingAccessor::addEnemyBullet(new EnemyBullet(r.x,r.y,new MovePatternUniformlyAcceleratedLinearMotion(v*cos(curTheta),v*sin(curTheta),0.01),new FirePatternNone(),new GraphicPattern(graphicID))); curTheta+=dtheta; if(dtheta >= PI*2) dtheta-=PI*2; } }
bool isWall(cell *w) { if(w->wall == waNone || isAlchAny(w) || w->wall == waCavefloor || w->wall == waFrozenLake || w->wall == waVineHalfA || w->wall == waVineHalfB || w->wall == waDeadfloor || w->wall == waDeadfloor2 || w->wall == waRubble || w->wall == waGargoyleFloor || w->wall == waGargoyleBridge || w->wall == waTempFloor || w->wall == waTempBridge || w->wall == waBoat || w->wall == waCIsland || w->wall == waCIsland2 || w->wall == waRed1 || w->wall == waRed2 || w->wall == waRed3 || w->wall == waMineUnknown || w->wall == waMineMine || w->wall == waMineOpen || w->wall == waStrandedBoat || w->wall == waOpenGate || w->wall == waClosePlate || w->wall == waOpenPlate || w->wall == waTrapdoor || w->wall == waGiantRug || w->wall == waLadder || w->wall == waTrunk || w->wall == waSolidBranch || w->wall == waWeakBranch || w->wall == waCanopy) return false; if(isWatery(w) || isChasmy(w) || isFire(w)) return false; return true; }