aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar chirs241097@gmail.com <chirs241097@gmail.com@c17bf020-1265-9734-9302-a83f62007ddb> 2014-07-07 13:55:32 +0000
committerGravatar chirs241097@gmail.com <chirs241097@gmail.com@c17bf020-1265-9734-9302-a83f62007ddb> 2014-07-07 13:55:32 +0000
commitd726aac2d9bac76f095ad6559d7dc30d97c3a97f (patch)
tree5a545b603002800adc1edd1f79d080f3e27c7784
parent609780609172b7a7580a49f385087aa10bc1454d (diff)
downloadbullet-lab-remix-d726aac2d9bac76f095ad6559d7dc30d97c3a97f.tar.xz
Fix: small semi-coll bullets are collected by clr...
Add Multpo's for Level 7/-1. Do slight changes to level -1... Distribute CLRs for level 1~-1.
-rwxr-xr-xChangeLog12
-rw-r--r--Extras14
-rw-r--r--FAQ5
-rw-r--r--FAQ.zh4
-rw-r--r--Readme26
-rw-r--r--Readme.zh72
-rwxr-xr-xVERSION2
-rw-r--r--global.h2
-rw-r--r--levels.h139
-rw-r--r--main.cpp10
-rw-r--r--towernbullet.h1
11 files changed, 176 insertions, 111 deletions
diff --git a/ChangeLog b/ChangeLog
index dfb2054..cc7adbe 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,14 +3,14 @@ Next version:
The final release is just there!!
Todo's:
*Adjust difficulty!*//almost done?
-*Add multpo's.*
-*Distribute CLRs.*
+*Add multpo's.*//almost done?
+*Distribute CLRs.*//almost done?
Bug fixes.
Tests.
Wishlist?
Known bugs:
-Blue bullets appearing in Vortex of leaves.
+Blue bullets appearing in Vortex of leaves.//don't know why...
Wishlist:
Add spawning effect for Multpo.
@@ -21,6 +21,12 @@ In-game music bring back.
of next BLR.)
Pre-Released versions:
+0.9.7-0 (r97)
+Fix: small semi-coll bullets are collected by clr...
+Add Multpo's for Level 7/-1.
+Do slight changes to level -1...
+Distribute CLRs for level 1~-1.
+
0.9.6-0 (r96)
Fix bug that cause you unable to charge if you try to use clr directly
after your clr's used up.
diff --git a/Extras b/Extras
index 7796883..0368e7e 100644
--- a/Extras
+++ b/Extras
@@ -10,7 +10,7 @@ The development
About the source code
------------------------------------------------------------------------------------
I'm not a rigorous coder. All sources are written casually.
-You can't even find two files in the same style...
+You can even find two code chunks in one file with different styles...
But generally, I:
Use tabs (width=4) and indent in Allman style;
Don't like extra spaces;
@@ -20,11 +20,11 @@ But generally, I:
And, the source code is bloated. global.h defined ~200 lines of global variables.
Imagine that.
-Well, the reason is that BLRI start as a huge single source file - main.cpp. It's
-once a ~100KiB file, and have more than 10k lines of code. One day I found it hard
-to maintain such code and split it into several .h file. BLRII took the code base
-of BLRI. That's why. BLRIII will be a complete rewrite and I hope this would fix
-the problem.
+Well, the reason is that BLRI start as a huge monolithic source file - main.cpp.
+It's once a ~100KiB file, and have more than 10k lines of code. One day I found it
+impossible to maintain such code and split it into several .h file. BLRII took the
+code base of BLRI. That's why. BLRIII will be a complete rewrite and I hope this
+would fix the problem.
Well, let's observe each source file.
@@ -83,7 +83,7 @@ The development
------------------------------------------------------------------------------------
As a student, developing such a game will never be supported...
So, the development is "well hidden".
-The post-0.2.2 development are mostly done under Windows(7/8/8.1). After that, I
+The post-0.2.2 development are mostly done under Windows(8/8.1). After that, I
migrated the main platform to Debian GNU/Linux. I'm using the unstable distribution.
I'm not a true developer but I'm really one of those who like to like on the edge.
Recently I installed Archlinux, which has taken me to the "bleeding edge". "Edges"
diff --git a/FAQ b/FAQ
index aae8601..ac50631 100644
--- a/FAQ
+++ b/FAQ
@@ -109,6 +109,11 @@ A: I don't know much about DirectX, for I left hge DirectX untouched.
Maybe there are "graphics driver dependent" contents, I'll correct them
later.
+Q: It's sssSssso hard!
+A: It's supposed to be hard! The only solution is to practice more.
+ However you can get more CLRs in player preference settings (with
+ a sacrifice of moving speed).
+
Q: Tell me the history.
A: Changelog tracked a full history of this project (Although it's not
detailed).
diff --git a/FAQ.zh b/FAQ.zh
index 78a19fa..2514429 100644
--- a/FAQ.zh
+++ b/FAQ.zh
@@ -84,6 +84,10 @@ A: 这得看你暂停的时候所在的关的实现方式。有些关是用“Si
顺便,如果你玩过东方系列的游戏的话,你会发现那里的暂停界面更加烦人。不过它的作者
已经说明这是故意的了(见TH06的FAQ 25)。
+Q: 怎么这么难啊。
+A: 这是故意的!唯一的解决方法是多练…
+ 但是你在游戏设置中可以搞到更多的CLR(需要以降低移动速度为代价)。
+
Q: 我认为图形绘制的有问题。
A: 对于DirectX,我了解的不太多,因为我没有修改hge的DirectX版。
但是它不应该和OpenGL版有太大的不同。
diff --git a/Readme b/Readme
index 8bc493f..f4e5b30 100644
--- a/Readme
+++ b/Readme
@@ -100,7 +100,7 @@ Others' comments...
Requirements & Recommends
Basic environment:
CPU: 1GHz.
-RAM: 256MiB
+RAM: 256MiB.
GPU&VRAM: With DirectX 9+/OpenGL 1.2+ support.
OS*: Windows XP+ & DirectX 9 / Linux kernel 2.6+ & OpenGL 1.2+
Recommended environment:
@@ -140,7 +140,7 @@ Menus
Main menu
-----------------------------------------------------------------------
Start Select a mode and start the game.
-Highscores View highscores(Currently out of maintenance)
+Highscores View highscores
Options Settings and Options
About A dull credits list.
Exit Parents are coming!!
@@ -174,19 +174,19 @@ Invalid parameters may cause unexpected behavior, (e.g. --start with inappropria
they should be used for debug purpose. But if you use it for cheating, I'm not against it.
If it's run without arguments, the game will start normally.
Otherwise... see below.
---help Print command line usage and exit.
---version Print version and exit.
---start=x,y Start free play mode directly from level x part y. The part must be valid.
---nosound Forcibly use no sound.
+--help Print command line usage and exit.
+--version Print version and exit.
+--start=x,y Start free play mode directly from level x part y. The part must be valid.
+--nosound Forcibly use no sound.
--fullscreen=1/0 Forcibly use fullscreen/windowed. This will override your configuration.
--vidmode=0~4 Forcibly use specific video mode instead the one in the configuration.
- 0 800x600 (native resolution)
- 1 640x480
- 2 960x720
- 3 1024x768
- 4 1280x960
---firststartup Forcibly run first start up. This will reset the score file.
---fast Fast mode. All levels are two times shorter.
+ 0 800x600 (native resolution)
+ 1 640x480
+ 2 960x720
+ 3 1024x768
+ 4 1280x960
+--firststartup Forcibly run first start up. The score file will be preserved if exist.
+--fast Fast mode. All levels are two times shorter.
--logfile=... Use an alternate log file name instead of the default "BLRLOG.txt".
--nohideconsole Do not hide console (Windows version only).
diff --git a/Readme.zh b/Readme.zh
index 7f8bb01..ea6d59a 100644
--- a/Readme.zh
+++ b/Readme.zh
@@ -3,14 +3,27 @@ This text is encoded in UTF-8.
-它可能会崩溃,甚至导致数据丢失。
-关卡太难。
-奇怪的行为。
--无视背景音乐(见FAQ.txt)
+-没有背景音乐(见FAQ.txt)
-代码都可能编译不了!
BulletLabRemix II Readme - 一个类似机翻的中文版
+目录
+------------------------------------------------------------------------------------
+这是什么?
+背景
+概要
+菜单
+模式
+命令行选项
+关于作者
+历史
+简短的版本历史
+
+
这是什么?
------------------------------------------------------------------------------------
-“正如名字告诉你的”,它是GameBoltz的一个小flash游戏——Bullet LAB的延续,或者“等价”的“自由”替代品。
+“正如名字告诉你的”,它是GameBoltz的一个小flash游戏——Bullet LAB的延续,或者“自由”替代品。
它不依赖任何专有的软件。它的目标是让原游戏变得“自由”并且更具挑战性。
这是BulletLabRemix的第二个版本。与第一个版本比起来,它成熟得多。但是,它离一个完整的“框架”还差得远。
并且它还有可能到处是bug…
@@ -85,39 +98,46 @@ After a catastrophic disaster, they found some of them were missing...
运行环境要求&推荐项目
必需环境:
-CPU: Atom 1.6GHz都行
-RAM: 1GiB
-GPU&VRAM: 不能比Intel HD Graphics更差的吧?
-操作系统: Windows XP+ & DirectX 9 / Linux kernel 2.6+ & OpenGL 1.2+
-推荐环境:
+CPU: 1GHz.
+RAM: 256MiB.
+GPU&VRAM: 支持DirectX 9+或者OpenGL 1.2+.
+操作系统*: Windows XP+ & DirectX 9 / Linux kernel 2.6+ & OpenGL 1.2+
+推荐环境:
CPU: 大量的处理器核心。
GPU&VRAM: 非常快的渲染速度。
声音: 能够运行OpenAL软件版。
-×更多×推荐项目…:
+*: 根据微软和MinGW的说法,本游戏*应该*也能在Windows 98(SE)/ME**下运行。但是谁
+还在用那种东西呢?…
+**: 反正源代码都有。你甚至可以考虑把它移植到MS-DOS…
+
+*更多*推荐项目…:
-严肃的一项:不能有密集恐惧症!
-CheatEngine(跳关,获取更多CLR…)
-编辑器和编译器(如果你发现它太难,想要让它变简单些)
-(附加在上一条之上)能读懂及其丑陋的代码。
-全色盲(<-删除线)
+如何安装/运行它…
+只需要把压缩包中的所有文件解压到某个地方,然后运行其中唯一的一个可执行程序就行了。
+
如果有一天你突然无法运行它了…
-删掉.blrrc然后重新运行。
-它会重新进行初始化设定。
-如果这样无法解决你的问题,去看看FAQ.TXT。。。
+删掉.blrrc然后重新运行。它会重新进行初始化设定。
+如果这样无法解决你的问题,去看看FAQ.TXT。
如果你认为什么东西出错了…
->FAQ.TXT
致亲爱的Windows用户
-开发和测试基本是在Linux下进行的。发布的Windows版也是从Linux下编译的(听起来很厉害?),它仅被简单地测试过。
+开发和测试基本是在Linux下进行的。发布的Windows版也是从Linux下编译的(听起来很厉害?)。Windows版
+只进行过简单的测试。
菜单
------------------------------------------------------------------------------------
主菜单
-----------------------------------------------------------------------
Start 选择一个模式并开始游戏。
-Highscores 浏览高分记录。(当前没有维护该功能:()
+Highscores 浏览高分记录。
Options 设置和选项。
About 一个无聊的制作人员名单。
Exit ××来了!
@@ -144,24 +164,24 @@ Free Play Mode 自由模式
------------------------------------------------------------------------------------
是的,它还接受命令行选项!(而且它们中有些还可能比较有用…)
如果你调整了设置后无法运行了,你可以用它们来覆盖你的设置。
-但是它们中一些可能导致奇怪的行为或者崩溃。所以要小心使用。
+但是它们中一些可能导致奇怪的行为或者崩溃。所以请小心使用。
不合法的参数可能会导致不希望得到的结果(例如--start+不合适的参数)
-它们本来只应该用于调试目的。但是如果你要用它们来作弊,我也不反对…
+它们本来只应该用于调试目的。但是如果你要用它们来作弊,也没人反对…
如果不带任何参数运行,游戏会以正常模式启动。
其他情况的话。。。:
---help 输出命令行用法并退出。
---version 输出版本信息并退出。
---start=x,y 直接从x关y部分开始自由模式的游戏。这个部分必须合法。
---nosound 强制无声。
+--help 输出命令行用法并退出。
+--version 输出版本信息并退出。
+--start=x,y 直接从x关y部分开始自由模式的游戏。这个部分必须合法。
+--nosound 强制无声。
--fullscreen=1/0 强制使用全屏/窗口模式。指定该选项后,直接无视blr.cfg中的全屏选项。
--vidmode=0~4 强制使用指定的窗口尺寸。
- 0 800x600 (原生大小)
- 1 640x480
- 2 960x720
- 3 1024x768
- 4 1280x960
---firststartup 假定是第一次运行。这样会清空分数记录文件。
---fast 「快速」模式。所有关卡都会变短两倍。
+ 0 800x600 (原生大小)
+ 1 640x480
+ 2 960x720
+ 3 1024x768
+ 4 1280x960
+--firststartup 假定是第一次运行。如果分数记录文件存在的话它会被保留。
+--fast 「高速」模式。所有关卡都会变短两倍。
--logfile=... 使用指定的日志文件名。
--nohideconsole 不隐藏命令行输出窗口。(仅限Windows版本。)
diff --git a/VERSION b/VERSION
index 3df9a6c..9870f8e 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.9.6-0 (r96) \ No newline at end of file
+0.9.7-0 (r97) \ No newline at end of file
diff --git a/global.h b/global.h
index a535013..e36af5a 100644
--- a/global.h
+++ b/global.h
@@ -341,7 +341,7 @@ static const char* archive[]={
};
#endif
//static const char* GLOBAL_H_FN="global.h";
-static const char* BLRVERSION="0.9.6-0 (r96)";
+static const char* BLRVERSION="0.9.7-0 (r97)";
static const char *months="JanFebMarAprMayJunJulAugSepOctNovDec";
char *parseDate(const char *date)
{
diff --git a/levels.h b/levels.h
index 383598b..d866989 100644
--- a/levels.h
+++ b/levels.h
@@ -54,7 +54,7 @@ void Level1Part1()
return;
}
CreateTower1(400,300,857,2);
- frameleft=AMinute*2;
+ frameleft=AMinute*2;clrtime=1;
tcnt=1;sout=false;dscroll=-0.025f;memset(dmt,true,sizeof(dmt));
for (int i=0;i<tcnt;++i)
{
@@ -109,7 +109,7 @@ void Level1Part2()
}
void Level1Part3()
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=1;
if (towcnt!=50&&towcnt!=0)return ClearAll();
DisableAllTower=false;bulcnt=0;free(bullet);bullet=NULL;
if (IfShowTip)
@@ -181,7 +181,7 @@ Place yourself correctly!\
}
void Level2Part1()
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=1;
Level2Circle.Init(230,pi/12000,96,vector2d(400,300));
Level2Circle2.Init(270,-pi/12000,96,vector2d(400,300));
CreateTower3_fixeddir(400,50,300,3,-2.0f/3.0f*pi);
@@ -227,7 +227,7 @@ void Level2Part2()
}
void Level2Part3()
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=1;
for (int i=0;i<6;++i)bullet[fakes[i]].exist=false;
for (int i=0;i<6;++i)fakes[i]=CreateBullet7(400,300,0,999999999,false),bullet[fakes[i]].inv=true;
whicnt=3;clockrot=deltarot=0;++part;tbrk=0;
@@ -285,7 +285,7 @@ void Level2Part6()
}
if(tbrk>=5)tbrk=0;
}
- if (frameleft<TenSeconds/20)++part,frameleft=AMinute;
+ if (frameleft<TenSeconds/20)++part,frameleft=AMinute,clrtime=1;
}
void Level2Part7()
{
@@ -312,7 +312,7 @@ double L2D1;
void Level2Part8()
{
frameleft=ThirtySeconds;L2D1=0;
- playerLockY=false;
+ playerLockY=false;clrtime=2;
for (int i=6;i<12;++i)fakes[i]=CreateBullet6(400,300,0,999999999,1,1,false),bullet[fakes[i]].inv=true;
++part;tbrk=0;
}
@@ -379,7 +379,7 @@ A negative omen...\
}
void Level3Part1()
{
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=0;
if (towcnt!=1&&towcnt!=0)return ClearAll();
DisableAllTower=false;
if (IfShowTip)
@@ -408,7 +408,7 @@ void Level3Part1()
}
void Level3Part2()
{
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=0;
if (towcnt!=4&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
@@ -444,7 +444,7 @@ int cur;
double elasped;
void Level3Part3()
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=1;
if (towcnt!=1&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
@@ -511,7 +511,7 @@ void Level3Part4()
double l3p5brk;
void Level3Part5()
{
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=2;
if (towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
@@ -557,7 +557,7 @@ What was the weather like yesterday?...\n\
}
void Level4Part1()
{
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=0;
if (towcnt!=1&&towcnt!=0)return ClearAll();
DisableAllTower=false;
if (IfShowTip)
@@ -934,7 +934,7 @@ double rot1,dta1,rot2,dta2,spd2,elsp1;
void Level4Part20()
{
frameleft=AMinute;All2pnt();towcnt=0;
- DisableAllTower=false;
+ DisableAllTower=false;clrtime=0;
if (IfShowTip)
{
IfShowTip=false;
@@ -996,7 +996,7 @@ void Level4Part23()
}
void Level4Part24()
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=0;
if (towcnt!=5&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
@@ -1062,7 +1062,7 @@ This autumn, however, is coming too fast...\
}
void Level5Part1()
{
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=0;
if (towcnt!=2&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
++frameskips;
@@ -1084,7 +1084,7 @@ void Level5Part1()
}
void Level5Part2()
{
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=0;
if (IfShowTip)
{
IfShowTip=false;
@@ -1102,7 +1102,7 @@ bool rev;
\**********************/
void Level5Part3()
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=2;
if (towcnt!=0)return (void)ClearAll();
Lasercnt=12;
for (int i=1;i<=12;++i)
@@ -1184,6 +1184,7 @@ void Level5Part5()
{
frameleft=AMinute;All2pnt();towcnt=0;Lasercnt=0;
memset(tbuls,0,sizeof(tbuls));lv5brk=0;++part;
+ clrtime=1;
}
void Level5Part6()
{
@@ -1215,7 +1216,7 @@ void Level5Part6()
}
void Level5Part7()
{
- frameleft=ThirtySeconds;Dis8ref=true;tbrk=0;
+ frameleft=ThirtySeconds;Dis8ref=true;tbrk=0;clrtime=1;
if (towcnt!=33&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
@@ -1253,7 +1254,7 @@ void Level5Part8()
}
void Level5Part9()
{
- frameleft=ThirtySeconds;Dis8ref=true;tbrk=0;
+ frameleft=ThirtySeconds;Dis8ref=true;tbrk=0;clrtime=1;
if (towcnt!=66&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
@@ -1458,7 +1459,7 @@ double ntrot,ntbrk;
int ntcnt;
void Level5Part19()
{
- frameleft=AMinute;clrtime=0;ntrot=ntbrk=0;ntcnt=0;
+ frameleft=AMinute;clrtime=1;ntrot=ntbrk=0;ntcnt=0;
DisableAllTower=false;
if (IfShowTip)
{
@@ -1502,15 +1503,25 @@ void Level5Part20()
void Level5Part21()
{
frameleft=ThirtySeconds;
- All2pnt();
+ All2pnt();clrtime=1;
Lasercnt=0;
CTarg.Init(18,75,5.0f);
DisableAllTower=false;
- CreateTower1(30,10,500,2);
- CreateTower1(746,10,500,2);
- CreateTower1(30,556,500,2);
- CreateTower1(746,556,500,2);
- ++part;
+ if (IfShowTip)
+ {
+ IfShowTip=false;
+ FadeTip=false;
+ Current_Position=2;
+ ShowTip("This is the UNBREAKABLE jail.");
+ }
+ if (Current_Position==1)
+ {
+ CreateTower1(30,10,500,2);
+ CreateTower1(746,10,500,2);
+ CreateTower1(30,556,500,2);
+ CreateTower1(746,556,500,2);
+ ++part;
+ }
}
void Level5Part22()
{
@@ -1546,7 +1557,7 @@ Look, there's a question mark in the title...\
void Level6Part1()
{
//Some component of this level is in towernbullet...
- frameleft=ThirtySeconds;
+ frameleft=ThirtySeconds;clrtime=1;
DisableAllTower=false;
++frameskips;
if (frameskips<10&&!LOWFPS)return;
@@ -1568,11 +1579,11 @@ void Level6Part1()
int spcnt;double sixrad,sixbrk;
void Level6Part2()
{
- while (towcnt)return ClearAll(false);
+ if (towcnt)return ClearAll(false);
All2pnt();frameleft=TenSeconds;
++part;spcnt=2;sixrad=sixbrk=0;
whicnt=1;DisableAllTower=false;
- tbrk=0;
+ tbrk=0;clrtime=3;
}
void Level6Part3()
{
@@ -1839,7 +1850,7 @@ bool brdir;
double offset;
void Level6Part18()
{
- DisableAllTower=false;
+ DisableAllTower=false;clrtime=3;
if (IfShowTip)
{
IfShowTip=false;
@@ -2311,7 +2322,7 @@ void Level7Part1()
for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0xFF0B0916);
if (DBGColor==0xFF0B0916)
{
- frameleft=AMinute,++part;tbrk=0;
+ frameleft=AMinute,++part;tbrk=0;clrtime=2;
bgdbbrk=re.NextInt(5,20),bgbrk=0;
avabrk=0.2f;avacurbrk=0;skystp=false;
}
@@ -2410,7 +2421,7 @@ void Level7Part3()
}
void Level7Part4()
{
- frameleft=(AMinute+ThirtySeconds);clrtime=5;
+ frameleft=(AMinute+ThirtySeconds);clrtime=3;
DisableAllTower=false;
if (IfShowTip)
{
@@ -2514,7 +2525,7 @@ void Level7Part6()
}
void Level7Part7()
{
- avabrk=frameleft/(double)AMinute*0.6f+0.4f;
+ avabrk=frameleft/(double)AMinute*0.5f+0.5f;
avacurbrk+=hge->Timer_GetDelta();
if (avacurbrk>avabrk)
{
@@ -2620,7 +2631,7 @@ void Level7Part9()
SimpleThing aa,bb;
void Level7Part10()
{
- frameleft=AMinute*2;clrtime=2;towcnt=0;
+ frameleft=AMinute*2;clrtime=1;towcnt=0;
DisableAllTower=false;
if (IfShowTip)
{
@@ -2644,7 +2655,7 @@ void Level7Part11()
diffCreator dfc[200];
void Level7Part12()
{
- frameleft=AMinute*2;clrtime=2;towcnt=0;
+ frameleft=AMinute*2;clrtime=3;towcnt=0;
DisableAllTower=false;
if (IfShowTip)
{
@@ -2708,7 +2719,7 @@ double ykbrk;
void Level7Part14()//Photon school
{
memset(bnl,0,sizeof(bnl));
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=2;
ykbrk=0.5f;skyactive=true;bdiff.SetFadeOut();
if((DBGColor=ColorTransfer(DBGColor,0x00000000))==0x0)++part;
}
@@ -2750,7 +2761,7 @@ BCircle Circles[20];
int CCnt,state;
void Level7Part16()//Great circles
{
- towcnt=0;
+ towcnt=0;clrtime=0;
frameleft=Infinity;All2pnt();
Circles[0].Init(444,20*pi/50000.0f,6,vector2d(400,300));
Circles[1].Init(444,-20*pi/50000.0f,6,vector2d(400,300));
@@ -2897,7 +2908,7 @@ void Level7Part18()//Great circles-child2
BTail btails[50];
void Level7Part19()
{
- frameleft=AMinute*2;clrtime=2;towcnt=0;
+ frameleft=AMinute*2;clrtime=3;towcnt=0;
DisableAllTower=false;
if (IfShowTip)
{
@@ -2920,6 +2931,7 @@ void Level7Part20()
for(int i=0;i<50;++i)
if(!btails[i].isActive())
{btails[i].Create();break;}
+ if(re.NextInt(0,24)==15)NewMultpo();
}
for(int i=0;i<50;++i)
if(btails[i].isActive())btails[i].Update();
@@ -2927,7 +2939,7 @@ void Level7Part20()
int sttnt;
void Level7Part21()
{
- frameleft=AMinute+ThirtySeconds;All2pnt();
+ frameleft=AMinute+ThirtySeconds;All2pnt();clrtime=1;
if (towcnt!=1&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
++frameskips;
@@ -2956,7 +2968,7 @@ void Level7Part23()//Wave of Photon
{
memset(bnl,0,sizeof(bnl));t8special=false;
frameleft=AMinute;All2pnt();towcnt=0;
- ykbrk=0.5f;++part;
+ ykbrk=0.5f;++part;clrtime=1;
}
void Level7Part24()
{
@@ -3003,7 +3015,7 @@ void Level7Part25()
frameleft=AMinute+ThirtySeconds;
All2pnt();towcnt=Lasercnt=0;
++part;memset(rtv,0,sizeof(rtv));
- avabrk=1;avacurbrk=0.7;
+ avabrk=1;avacurbrk=0.7;clrtime=1;
}
void Level7Part26()
{
@@ -3053,11 +3065,11 @@ void Levelm1Part1()//3 circles
IfShowTip=false;
FadeTip=false;
Current_Position=2;
- ShowTip("It's not really here!");
+ ShowTip("RGB...");
}
if (Current_Position==1)
{
- ++part;All2pnt();avabrk=1.0f;avacurbrk=0;
+ ++part;All2pnt();avabrk=1.0f;avacurbrk=0;tbrk=0;
}
}
void CircCreator(vector2d p,int cnt,TColors col)
@@ -3074,7 +3086,9 @@ void CircCreator(vector2d p,int cnt,TColors col)
void Levelm1Part2()
{
avacurbrk+=hge->Timer_GetDelta();
+ tbrk+=hge->Timer_GetDelta();
avabrk=(frameleft/(double)AMinute)*0.5f+0.5f;
+ if(tbrk>8)tbrk=0,NewMultpo(vector2d(400,300));
if(avacurbrk>avabrk)
{
avacurbrk=0;
@@ -3087,7 +3101,7 @@ BCircle scircles[200];
double rspd[200];
void Levelm1Part3()//circles
{
- frameleft=AMinute;clrtime=2;towcnt=0;
+ frameleft=AMinute;clrtime=1;towcnt=0;
DisableAllTower=false;
if (IfShowTip)
{
@@ -3134,7 +3148,7 @@ void Levelm1Part5()//Spiky
for(int i=0;i<200;++i)
if (scircles[i].GetRange()>1e-7&&scircles[i].GetRange()<510)
scircles[i].circ2pnt();
- towcnt=0;
+ towcnt=0;clrtime=1;
Lasercnt=0;
++part;avabrk=1;avacurbrk=0.5;
}
@@ -3156,6 +3170,7 @@ void Levelm1Part6()//Spiky-child
break;
}
}
+ if(re.NextInt(0,19)==8)NewMultpo();
}
for (int i=0;i<1000;++i)if (noname[i].Exist())noname[i].Process();
}
@@ -3163,7 +3178,7 @@ achromaGroup aca,acb;
void Levelm1Part7()//Achromatopsia1
{
frameleft=AMinute;for(int i=0;i<1000;++i)if(noname[i].Exist())noname[i].noname2pnt();
- aca.Init(red,0.075);acb.Init(green,0.075);
+ aca.Init(red,0.075);acb.Init(green,0.075);clrtime=1;
++part;avabrk=2.0f;avacurbrk=0;achromab=false;
}
void Levelm1Part8()//Achromatopsia1-child
@@ -3173,12 +3188,13 @@ void Levelm1Part8()//Achromatopsia1-child
{
avacurbrk=0;avabrk=2;
aca.Reverse();acb.Reverse();
+ if(re.NextInt(0,7)==3)NewMultpo(vector2d(re.NextInt(10,790),re.NextInt(500,590)));
}
aca.Update(1);acb.Update();
}
void Levelm1Part9()//Achromatopsia2
{
- frameleft=AMinute;
+ frameleft=AMinute;clrtime=1;
aca.Init(red,1);acb.Init(green,1);
++part;avabrk=1.5f;avacurbrk=0;achromab=true;
}
@@ -3194,7 +3210,7 @@ void Levelm1Part10()//Achromatopsia2-child
}
void Levelm1Part11()
{
- frameleft=AMinute+ThirtySeconds;
+ frameleft=AMinute+ThirtySeconds;clrtime=2;
DisableAllTower=false;
if (IfShowTip)
{
@@ -3252,6 +3268,15 @@ bool m19pldir;
void Levelm1Part13()//Gravity Vortex
{
frameleft=AMinute*2;towcnt=0;PlayerSplit=false;
+ clrtime=2;
+ if (IfShowTip)
+ {
+ IfShowTip=false;
+ FadeTip=false;
+ Current_Position=2;
+ ShowTip("Who's collecting such great power here?");
+ return;
+ }
All2pnt();memset(m19lead,0,sizeof(m19lead));
memset(m19gen,0,sizeof(m19gen));
++part;m19rad=m19step=m19cnt=0;
@@ -3347,7 +3372,7 @@ int snexcnt,snexstep;
Target snexTarg;
void Levelm1Part15()//"Supernova"
{
- frameleft=AMinute*2;
+ frameleft=AMinute*2;clrtime=1;
++bgbrk;if (LOWFPS)bgbrk+=16;
if (bgbrk<30)return;
bgbrk=0;towcnt=0;
@@ -3441,12 +3466,12 @@ void Levelm1Part16()
}
}
yellowGroup fyg[100];
-Spinner fygs;
+//Spinner fygs;
void Levelm1Part17()
{
- frameleft=AMinute+ThirtySeconds;
+ frameleft=AMinute+ThirtySeconds;clrtime=2;
All2pnt();towcnt=0;memset(fyg,0,sizeof(fyg));
- ++part;avabrk=1;avacurbrk=0.5;fygs.Init(3,20);
+ ++part;avabrk=1;avacurbrk=0.5;//fygs.Init(3,20);
}
void Levelm1Part18()
{
@@ -3463,16 +3488,17 @@ void Levelm1Part18()
fyg[i].Init(36,2.5-1.5*(frameleft/(double)(AMinute+ThirtySeconds)));
break;
}
+ CircCreator(vector2d(400,300),36,blue);
}
for(int i=0;i<100;++i)if(fyg[i].isActive())fyg[i].Update();
- fygs.Update(pi/7200*(0.5+frameleft/(double)(AMinute+ThirtySeconds)));
+ //fygs.Update(pi/7200*(0.5+frameleft/(double)(AMinute+ThirtySeconds)));
}
int m17lead[4];
void Levelm1Part19()
{
- frameleft=AMinute+ThirtySeconds;towcnt=0;
+ frameleft=AMinute+ThirtySeconds;towcnt=0;clrtime=1;
All2pnt();memset(m17lead,0,sizeof(m17lead));
- ++part;
+ ++part;avabrk=0;
m17lead[0]=CreateBullet2(10,10,4,0);bullet[m17lead[0]].redir(vector2d(780,10));bullet[m17lead[0]].alterColor=red;
m17lead[1]=CreateBullet2(780,10,4,0);bullet[m17lead[1]].redir(vector2d(780,580));bullet[m17lead[1]].alterColor=green;
m17lead[2]=CreateBullet2(780,580,4,0);bullet[m17lead[2]].redir(vector2d(10,580));bullet[m17lead[2]].alterColor=dblue;
@@ -3483,7 +3509,8 @@ void Levelm1Part19()
void Levelm1Part20()
{
snexTarg.TargRender();avacurbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();
+ tbrk+=hge->Timer_GetDelta();avabrk+=hge->Timer_GetDelta();
+ if(avabrk>10)NewMultpo(),avabrk=0;
switch (snexstep)
{
case 0:
@@ -3534,7 +3561,7 @@ void Levelm1Part20()
void Levelm1Part21()
{
//some part of this level is in towernbullet...
- frameleft=AMinute*1.5;
+ frameleft=AMinute*1.5;clrtime=1;
if (towcnt!=4&&towcnt!=0)return ClearAll(false);
DisableAllTower=false;
if (IfShowTip)
diff --git a/main.cpp b/main.cpp
index 27a07f8..7777a47 100644
--- a/main.cpp
+++ b/main.cpp
@@ -110,6 +110,7 @@ void Player_Clear_Expand()
int ds;
for (int i=1;i<=bulcnt;++i)
{
+ if(bullet[i].bullettype>=253)continue;
double dis=GetDist(bullet[i].bulletpos,playerpos);ds=0;
if(PlayerSplit)
for(int j=1;j<4;++j)
@@ -117,7 +118,7 @@ void Player_Clear_Expand()
if(dis>GetDist(bullet[i].bulletpos,playerpos+splitData[j]))
dis=GetDist(bullet[i].bulletpos,playerpos+splitData[j]),ds=j;
}
- if (bullet[i].bullettype!=255&&dis<=clrrange&&bullet[i].exist&&!bullet[i].inv)
+ if(dis<=clrrange&&bullet[i].exist&&!bullet[i].inv)
{
CreateBullet255(bullet[i].bulletpos.x,bullet[i].bulletpos.y,10,ds);
bullet[i].exist=false;
@@ -136,11 +137,12 @@ void Player_Clear_Rotate()
clrrad+=pi/450;
for (int i=1;i<=bulcnt;++i)
{
+ if(bullet[i].bullettype>=253)continue;
double dis=GetDist(bullet[i].bulletpos,playerpos);
double rad=atan2l(bullet[i].bulletpos.y-playerpos.y,bullet[i].bulletpos.x-playerpos.x);
hge->Gfx_RenderLine(playerpos.x+8,playerpos.y+8,playerpos.x+cos(clrrad)*clrmaxrange,playerpos.y+sin(clrrad)*clrmaxrange);
rad=normalizerad(rad);
- if (bullet[i].bullettype!=255&&dis<=clrmaxrange&&bullet[i].exist&&!bullet[i].inv&&rad>normalizerad(clrrad)-pi/12&&rad<normalizerad(clrrad)+pi/12)
+ if(dis<=clrmaxrange&&bullet[i].exist&&!bullet[i].inv&&rad>normalizerad(clrrad)-pi/12&&rad<normalizerad(clrrad)+pi/12)
{
CreateBullet255(bullet[i].bulletpos.x,bullet[i].bulletpos.y,10);
bullet[i].exist=false;
@@ -1024,11 +1026,11 @@ void printHelp(char *exec,const char* str="")
puts(" 2 960x720");
puts(" 3 1024x768");
puts(" 4 1280x960");
- puts("--firststartup Forcibly run first start up. This will reset the score file.");
+ puts("--firststartup Forcibly run first start up. The score file will be preserved if exist.");
puts("--fast Fast mode. All levels are two times shorter.");
puts("--logfile=... Use an alternate log file name instead of the default \"BLRLOG.txt\".");
#ifdef WIN32
- printf("--nohideconsole Do not hide console.\n");
+ puts("--nohideconsole Do not hide console.\n");
#endif
if(strcmp(str,""))printf("%s\n",str);
exit(0);
diff --git a/towernbullet.h b/towernbullet.h
index dc78aea..87f3d05 100644
--- a/towernbullet.h
+++ b/towernbullet.h
@@ -713,6 +713,7 @@ void ProcessBullet8(int i)
if(bullet[i].bulletpos.x<=-10||bullet[i].bulletpos.x>=800||bullet[i].bulletpos.y<=-10||bullet[i].bulletpos.y>=600)
{
int cnt=re.NextInt(2,5);if (Dis8ref)cnt=0;
+ if(PlayerSplit)cnt=re.NextInt(0,2);
if(bullet[i].redattrib)
{
if(re.NextInt(0,3))//more possibility to reflect