From d726aac2d9bac76f095ad6559d7dc30d97c3a97f Mon Sep 17 00:00:00 2001 From: "chirs241097@gmail.com" Date: Mon, 7 Jul 2014 13:55:32 +0000 Subject: 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. --- ChangeLog | 12 +++-- Extras | 14 +++--- FAQ | 5 +++ FAQ.zh | 4 ++ Readme | 26 +++++------ Readme.zh | 72 +++++++++++++++++++----------- VERSION | 2 +- global.h | 2 +- levels.h | 139 ++++++++++++++++++++++++++++++++++----------------------- main.cpp | 10 +++-- towernbullet.h | 1 + 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=5)tbrk=0; } - if (frameleftTimer_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&&radnormalizerad(clrrad)-pi/12&&rad=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 -- cgit v1.2.3