| ~Hakurei Shrine~ > Rika and Nitori's Garage Experiments |
| pikaguy900's Box of Stuff |
| << < (4/7) > >> |
| Nimono:
Okay, try this version! Let me know if it's still unfair or not. Changes: -Ball no longer sticks to paddle. (Thanks, Naut!) -Stars shoot from center of screen now instead of the bottom, and also have slightly higher speeds. -Stars shot by the ball bouncing off the sides now come in set angles instead of random angles. (Let's hope this fixes that impassable barrier issue!) -To compensate for the lack of Sticky Paddles, if you hit the the ball while moving left or right, the ball will speed up by your character's Unfocused speed divided by 20! The same thing won't happen with Focused speed, buuut I left that code in. Instead of removing the code entirely, I just left it disabled- you can re-enable it by changing the FocusInc = false; at the top of the script to equal true instead. This will let focused movement affect the ball, too! -Time is increased to 150. -Yukari can be attacked now. She has 512 life, so you know. But do you really want to attack her? ;) -You can get point items this time! There's two bonuses you can get: * Defeat the boss and get the Spellcard bonus and you get 12 Point Items. Don't get it, and you only get 8. * Defeat the boss in the same way as before and get the ball past Yukari and you receive an extra 5 Point Items for every point you gain for passing Yukari. You don't get ANYTHING from THIS bonus if you don't get a spellcard bonus... (Maybe I should make this requirement different... Like maybe, "Don't Bomb to save the ball, or you don't get anything" or "Don't let the ball past you or bomb or you'll lose points"...) Whew... That's why you may not want to finish it so quickly. You can get a maximum of 9 points from getting the ball past Yukari, and when you get your ninth, you automatically win. That said, keep in mind that I plan on making Normal, Hard, and Lunatic versions of this, if I can. :o I already have Normal down a bit, just need to keep testing it to make sure it's good enough. The basic changes there will be that the stars come down denser in the center, 5 at once, compared to Easy's 3 at once, and there's a second ball color, red, that looks normal at first, but when it hits Yukari's paddle, a ring of 18 stars will burst out, swirl in, then swirl out. Better hope they don't catch you. It'll be rare, though- 3:1 ratio of Blue to Red. Yeah, a 1-in-4 chance of getting Red Orb, though I've yet to see it on anything but a 50-50 chance or a 25-75 chance. XD Lastly, ENJOY! |
| Naut:
As partial as I am to making difficult scripts, I'm thinking that if this is the easy version, then you should probably tone it down a bit. Typically easy should be a breeze to pass (eeeeee!? maji? iiji moodo? kimoooi! iiji moodo yurusareru no wa shougakusei made dayo ne-e! kyahahahahahahahaha!), but your version is actually somewhat difficult. Perhaps bumping this mode to "Normal" status, then making a slightly easier version and call that Easy mode. Then do whatever you'd like for Hard and Lunatic, since there is only a handful of us going to play them and none of us are wussy enough to admit that it could be "too difficult". |
| Nimono:
Ahahaha, this is Normal? ...I'm scared to think of how you'd think my NORMAL and HARD versions to be... Oh well, Normal it is, then. Also, tell me if you think this idea is good for a Lunatic version: No stars come out from the center of the screen, and you are not stuck at any specific location, so you can move around the screen all you want. The paddle, however, IS locked at a specific Y position, and the ball will still kill you if it hits the bottom, as well as if you touch it. (IT'S...DANGEROUS!!) The ball will spawn the same rings upon it touching the sides, but... It comes in Red only. Thus, when it hits Yukari's paddle, it creates a large ring of bullets that spin out, come back in, then shoot out at you. About 100 bullets. (Is that too much? I don't know...) However, a twist- ANOTHER ring fires out at you at the same time, only it doesn't stop! Same goes for the triple lines, though those only come during Big balls... Each bullet is slower than the ones coming before, too. --- Code: ---#TouhouDanmakufu #Title[Pong Hax -Lunatic-] #Text[Yukari, cut it out already!! We know you're sick of losing, but geez, this is stupid!] #Image[.\CheatingAtPong.bmp] #BackGround[Default] #PlayLevel[Lunatic] #Player[FREE] #ScriptVersion[2] script_enemy_main { let FocusInc = false; //Change this to true if you want focused movement to affect the speed of the ball! let BossImage = GetCurrentScriptDirectory ~ "boss_yukari.png"; let BossCutIn = GetCurrentScriptDirectory ~ "Yukari.png"; let frame = -120; let timer = 0; let frame2 = -120; let BallExist = false; let PaddleExist = false; let Paddle1 = NULL; let Paddle2 = NULL; let Ball = NULL; let BounceCount = 0; let Dir = [215, 305, 215, 305]; let Wait = 4; let Settings1 = 0; let Settings2 = 0; let Settings3 = false; let PlayerWins = 0; let Angle = 10; let Big = false; let Speed = 0; let BombBounce = false; let BallType = [5, 5, 6, 5]; let Red = false; task Pong(who) { if(who == 0) { if(Obj_BeDeleted(Paddle1)) { Paddle1 = Obj_Create(OBJ_SHOT); Obj_SetPosition(Paddle1, GetPlayerX, GetPlayerY - 30); Obj_SetCollisionToPlayer(Paddle1, false); Obj_SetCollisionToObject(Paddle1, true); Obj_SetSpeed(Paddle1, 0); ObjShot_SetDelay(Paddle1, 10); ObjShot_SetGraphic(Paddle1, 4); ObjShot_SetBombResist(Paddle1, true); Obj_SetAngle(Paddle1, 270); Obj_SetAlpha(Paddle1, 250); } while(! Obj_BeDeleted(Paddle1)) { Obj_SetPosition(Paddle1, GetPlayerX, 425 - 30); yield; } } else if(who == 1) { if(Obj_BeDeleted(Paddle2)) { Paddle2 = Obj_Create(OBJ_SHOT); Obj_SetPosition(Paddle2, GetX, GetY + 30); Obj_SetCollisionToPlayer(Paddle2, false); Obj_SetCollisionToObject(Paddle2, true); Obj_SetSpeed(Paddle2, 0); ObjShot_SetDelay(Paddle2, 10); ObjShot_SetGraphic(Paddle2, 4); ObjShot_SetBombResist(Paddle2, true); Obj_SetAngle(Paddle2, 90); Obj_SetAlpha(Paddle2, 250); } while(! Obj_BeDeleted(Paddle2)) { Obj_SetPosition(Paddle2, GetX, (GetClipMaxY - 425) + 30); yield; } } } task PongBall(Graphic, InitSpeed, Attack) { if(Obj_BeDeleted(Ball)) { if(Graphic == 1) { Big = false; Red = false; } if(Graphic == 2) { Big = true; Red = false; } if(Graphic == 5) { Big = false; Red = true; } if(Graphic == 6) { Big = true; Red = true; } Ball = Obj_Create(OBJ_SHOT); Obj_SetPosition(Ball, GetCenterX, GetCenterY); Obj_SetCollisionToPlayer(Ball, true); Obj_SetCollisionToObject(Ball, true); ObjShot_SetDelay(Ball, 10); ObjShot_SetGraphic(Ball, Graphic); ObjShot_SetBombResist(Ball, true); Obj_SetAngle(Ball, Dir[rand_int(0, 3)]); Obj_SetAlpha(Ball, 255); Speed = InitSpeed; } while(! Obj_BeDeleted(Ball)) { if(timer > 0) { timer--; } if(Obj_GetX(Ball) <= GetClipMinX()) { if(Attack == true) { Angle = 0; loop(36) { CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 4, Angle, 8, 5); Angle += 5; } } Obj_SetAngle(Ball, 180-Obj_GetAngle(Ball)); } if(Obj_GetX(Ball) >= GetClipMaxX()) { if(Attack == true) { Angle = 180; loop(36) { CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 4, Angle, 8, 7); Angle -= 5; } } Obj_SetAngle(Ball, 180-Obj_GetAngle(Ball)); } if(Collision_Obj_Obj(Ball, Paddle1) == true && timer == 0 && !BombBounce) { let position = Obj_GetY(Paddle1) - Obj_GetY(Ball); Obj_SetY(Ball, Obj_GetY(Paddle1) - position); timer = 30; Obj_SetAngle(Ball, 360-Obj_GetAngle(Ball)); if(GetKeyState(VK_RIGHT) == KEY_PUSH || GetKeyState(VK_RIGHT) == KEY_HOLD) { if(FocusInc == true) { if(GetPlayerMoveState == MOVE_SLOW) { Speed += (GetPlayerInfo(PLAYER_SPEED_LOW) / 25); } } if(GetPlayerMoveState == MOVE_NORMAL) { Speed += (GetPlayerInfo(PLAYER_SPEED_HIGH) / 25); } } else if(GetKeyState(VK_LEFT) == KEY_PUSH || GetKeyState(VK_LEFT) == KEY_HOLD) { if(FocusInc == true) { if(GetPlayerMoveState == MOVE_SLOW) { Speed += (GetPlayerInfo(PLAYER_SPEED_LOW) / 25); } } if(GetPlayerMoveState == MOVE_NORMAL) { Speed += (GetPlayerInfo(PLAYER_SPEED_HIGH) / 25); } } BounceCount += 1; } if(Collision_Obj_Obj(Ball, Paddle2) == true && timer == 0) { if(Red == true) { let shot = 0; Angle = 0; let stop = 0; loop(100) { CreateShotA(shot, Obj_GetX(Ball), Obj_GetY(Ball), 5); SetShotDataA(shot, 0, 2, Angle, 0, 0, 0, 7); SetShotDataA(shot, 20, NULL, NULL, 2, 0, 0, 7); SetShotDataA(shot, 180, NULL, NULL, 1, 0.2, 5, 7); SetShotDataA(shot, 240, NULL, NULL, 0, 0, 0, 7); FireShot(shot); if(stop%2 == 0) { CreateShot01(GetX, GetY, 6, Angle, 7, 5); } stop++; Angle += 3.6; shot++; } if(Big) { let Speed = 6; loop(10) { CreateShot01(GetX, GetY, Speed, GetAngleToPlayer + 20, 8, 5); CreateShot01(GetX, GetY, Speed, GetAngleToPlayer - 20, 8, 5); CreateShot01(GetX, GetY, Speed, GetAngleToPlayer, 8, 5); Speed -= 0.5; } } } BombBounce = false; let position = Obj_GetY(Paddle2) - Obj_GetY(Ball); Obj_SetY(Ball, Obj_GetY(Paddle2) - position); timer = 30; Obj_SetAngle(Ball, 360-Obj_GetAngle(Ball)); BounceCount += 1; } if(Obj_GetY(Ball) >= GetClipMaxY()) { if(OnBomb()) { Obj_SetAngle(Ball, 360-Obj_GetAngle(Ball)); BombBounce = true; } else { ShootDownPlayer(); Obj_Delete(Ball); } } if(Obj_GetY(Ball) <= GetClipMinY()) { PlayerWins += 1; Obj_Delete(Ball); } Obj_SetSpeed(Ball, Speed + (BounceCount / 5)); if(Obj_GetX(Ball) > GetX) { if(!Big) { SetX(GetX + 3); } else if(Big) { SetX(GetX + 5); } } if(Obj_GetX(Ball) < GetX) { if(!Big) { SetX(GetX - 3); } else if(Big) { SetX(GetX - 5); } } yield; } } @Initialize { LoadGraphic(BossImage); SetLife(512); SetDamageRate(10,10); SetTimer(152); SetInvincibility(30); CutIn(YOUMU, "Pong Hax", BossCutIn, 0, 0, 256, 320); SetScore(70000); SetEnemyMarker(true); MagicCircle(true); SetMovePosition02(GetCenterX,(GetClipMaxY - 425),30); LoadUserShotData(GetCurrentScriptDirectory ~ "PongShot.txt"); } @MainLoop { SetCollisionA(GetX(),GetY(),32); SetCollisionB(GetX(),GetY(),24); if(Obj_BeDeleted(Ball)) { Speed = 2; BallExist = false; BounceCount = 0; } if(PaddleExist == true) { Pong(0); Pong(1); } if(BallExist == true) { PongBall(Settings1, Settings2, Settings3); } if(frame == 0) { if(PaddleExist == false) { PaddleExist = true; } if(BallExist == false) { BallExist = true; if(Wait == 4) { Settings1 = BallType[rand_int(0, 3)]; Settings2 = 2; Settings3 = true; PongBall(Settings1, Settings2, Settings3); Wait = 0; } Wait++; } frame = -20; } if(frame2 == 0) { loop(4) { //CreateShot01(rand_int(GetClipMinX, GetClipMaxX), GetCenterY - 50, rand(1.0, 3.0), 90, 3, 10); } frame2 = -25; } if(PlayerWins >= 9) { PlayerWins = 9; } frame++; frame2++; } @DrawLoop { SetTexture(BossImage); SetGraphicRect(40,33,91,94); DrawGraphic(GetX, GetY); DrawText(ToString(PlayerWins), GetClipMaxX-10, GetCenterY, 20, 255); //DrawText(ToString(Speed), GetPlayerX+20, GetPlayerY, 20, 255); //DrawText(ToString(Obj_GetSpeed(Ball)), GetPlayerX+20, GetPlayerY+20, 20, 255); } @Finalize { DeleteGraphic(BossImage); } } --- End code --- This is what I have right now. Outside of the big orbs, it doesn't seem THAT hard to me... However, I have no idea how to MAKE IT HARDER. Any ideas? EDIT: --- Code: ---#PlayerShotData ShotImage = ".\Pong.png" ShotData { id = 1 //ID rect = (32,0,64,32) angular_velocity = 2 } ShotData { id = 2 //ID rect = (128,0,192,64) angular_velocity = 2 } ShotData { id = 3 //ID rect = (38,56,58,76) angular_velocity = 1 } ShotData { id = 4 //ID rect = (73,69,117,78) angular_velocity = 0 } ShotData { id = 5 //ID rect = (0,0,32,32) angular_velocity = 2 } ShotData { id = 6 //ID rect = (64,0,128,64) angular_velocity = 2 } ShotData { id = 7 //ID rect = (21,36,37,54) angular_velocity = 0 } ShotData { id = 8 //ID rect = (8,51,22,72) angular_velocity = 0 } --- End code --- Forgot that I added some shots... |
| Naut:
Slow down the bullets, but add more. Set higher delays so they don't all stack on each other, and offset them by a random angle. So something like: let angle = rand(0, 36); let angle2 = rand(0, 36); let angle3 = rand(0, 36); loop(60){ CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 3, angle, 8, 0); CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 3, angle2, 8, 15); CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 3, angle3, 8, 30); angle+=6; angle2+=6; angle3+=6; } Get what I mean? This way it's more "dodge shit" rather than "reaction time of a God". Stuff like this. Fill the screen with Danmaku. |
| Nimono:
--- Quote from: Naut on May 25, 2009, 03:19:27 AM ---Slow down the bullets, but add more. Set higher delays so they don't all stack on each other, and offset them by a random angle. So something like: let angle = rand(0, 36); let angle2 = rand(0, 36); let angle3 = rand(0, 36); loop(60){ CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 3, angle, 8, 0); CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 3, angle2, 8, 15); CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 3, angle3, 8, 30); angle+=6; angle2+=6; angle3+=6; } Get what I mean? This way it's more "dodge shit" rather than "reaction time of a God". Stuff like this. Fill the screen with Danmaku. --- End quote --- Yeah, but I need to keep that orb in mind, too- too dense of a pattern, and you can't keep it bouncing, and since this is Yukari applying massive hax to Pong, it wouldn't seem right to disable- Wait, better idea. Turn the player paddle AGAINST you. So, enemy gets two paddles, and it won't miss the orb. So, you have threats from the paddles, threats from the orb, threats from Yukari. Heheheheheeee... |
| Navigation |
| Message Index |
| Next page |
| Previous page |