| ~Hakurei Shrine~ > Rika and Nitori's Garage Experiments |
| pikaguy900's Box of Stuff |
| << < (3/7) > >> |
| Drake:
it's not so much tough as it is impossible to react quick enough to dodge anything |
| Naut:
--- Quote from: pikaguy900 on May 21, 2009, 05:12:38 AM ---Also, just want to say this: Naut, I specifically made the Miraculous Armageddon script for you. :P I noticed in Onthenet's thread that you said you loved Lunatic-mode attacks, so I figured I'd try to make Miracle Matter EVEN TOUGHER, just for you. ;) I'm hoping I got that effect for you. --- End quote --- I fucking love you. Have my children. |
| Nimono:
Naut: Heh... Glad you like it so much... Anyways... I have a new script! This will (hopefully) be my Box of Stuff now... Anyways... Pong...with a twist!! Seriously, play it. Some things to keep in mind when you play: 1: Your Y position gets locked the minute Yukari pops up on-screen, and no matter what, you CAN'T move up and down. Fortunately for you, Yukari's fair enough to abide by the same rule- she only moves left and right, same as you. 2: What she WON'T abide by, though, is a straight game of Pong! Oh no, Yukari's got gaps at her disposal- why WOULDN'T she use them to her advantage?! To this end, she causes stars to pop up from below you while you play. Watch out for those stars! 3: Did I mention she plays with a rigged ball? Yeah, it's true! It's rigged in two ways. One, the ball ALWAYS goes towards her, NEVER you, and two, every time the ball hits the sides, 20 stars shoot out. Find a hole, and fast! You can't move vertically, so it's easy to get trapped! 4: Genuine warning here: The Collision_Obj_Obj thing is a little screwy, as it's easy to glitch up the ball. If you get it stuck to your paddle, get it off ASAP, or else it WILL shoot behind you and make you die. (That is what happens when you miss the ball, you die.) However, this can be used to your advantage! Yukari's cheating- why not cheat yourself, too? The ball speeds up a very tiny bit every time it bounces off both players' paddles. It's not very noticable until you either play for a while or get the ball stuck to your paddle. If this happens, release it towards Yukari ASAP- if you let it stick on long enough, she can't get to the ball fast enough to avoid missing it! (I tried making code to fix this, but it didn't do ANYTHING...) That said, enjoy my game of Pong. Oops, I forgot one thing! When the timer gets below 30, or you have at least 2 points out of the required 4 to win, Yukari launches a BIGGER ball that starts off slightly faster. ...Not much faster, sadly, though the speed increase is VERY noticable to me... ...Still not much faster, just one point. Okay, NOW enjoy. ;) |
| Naut:
A cool concept, I think you could've gone about it better though. I dislike the random angles the stars launch off at when they hit a wall, it sometimes creates impossible barriers that you just can't pass through in time. I also dislike the stars coming from behind.... Maybe falling stars? I dunno, I'm just not comfortable with them shooting up my ass. I'm playing against Yukari here, not Reisen! I also fixed your collision detection up a bit, the ball will no longer vibrate on somebody's paddle. For Pong.txt: --- Code: ---#TouhouDanmakufu #Title[Cheating at Pong!!] #Text[Yukari, you're such a sore loser! Do you HAVE to turn PONG, of all games, into a one-sided danmaku battle?!] #Image[.\CheatingAtPong.bmp] #BackGround[Default] #Player[FREE] #ScriptVersion[2] script_enemy_main { 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 PlayerPosition = 0; let OldY = 0; 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; 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)) { Ball = Obj_Create(OBJ_SHOT); Obj_SetPosition(Ball, GetCenterX, GetCenterY); Obj_SetCollisionToPlayer(Ball, false); 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); } while(! Obj_BeDeleted(Ball)) { if(timer>0){ timer--; } if(Obj_GetX(Ball) <= GetClipMinX()) { if(Attack == true) { loop(20) { CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 2, rand_int(25, 85), 3, 5); } } Obj_SetAngle(Ball, 180-Obj_GetAngle(Ball)); } if(Obj_GetX(Ball) >= GetClipMaxX()) { if(Attack == true) { loop(20) { CreateShot01(Obj_GetX(Ball), Obj_GetY(Ball), 2, rand_int(115, 175), 3, 5); } } Obj_SetAngle(Ball, 180-Obj_GetAngle(Ball)); } if(Collision_Obj_Obj(Ball, Paddle1) == true && timer==0) { let position = Obj_GetY(Paddle1) - Obj_GetY(Ball); Obj_SetY(Ball, Obj_GetY(Paddle1) - position); timer = 10; Obj_SetAngle(Ball, 360-Obj_GetAngle(Ball)); BounceCount += 1; } if(Collision_Obj_Obj(Ball, Paddle2) == true && timer==0) { let position = Obj_GetY(Paddle2) - Obj_GetY(Ball); Obj_SetY(Ball, Obj_GetY(Paddle2) - position); timer = 10; Obj_SetAngle(Ball, 360-Obj_GetAngle(Ball)); BounceCount += 1; } if(Obj_GetY(Ball) >= GetClipMaxY()) { ShootDownPlayer(); Obj_Delete(Ball); } if(Obj_GetY(Ball) <= GetClipMinY()) { PlayerWins += 1; Obj_Delete(Ball); } Obj_SetSpeed(Ball, InitSpeed + (BounceCount / 5)); if(Obj_GetX(Ball) > GetX) { SetX(GetX + 3); } if(Obj_GetX(Ball) < GetX) { SetX(GetX - 3); } yield; } } @Initialize { LoadGraphic(BossImage); SetLife(400); SetDamageRate(10,10); SetTimer(150); SetInvincibility(30); CutIn(YOUMU, "Cheating at Pong!!", BossCutIn, 0, 0, 256, 320); SetScore(70000); SetEnemyMarker(true); MagicCircle(true); SetMovePosition02(GetCenterX,(GetClipMaxY - 425),30); PlayerPosition = GetPlayerY; OldY = GetPlayerY; LoadUserShotData(GetCurrentScriptDirectory ~ "PongShot.txt"); } @MainLoop { SetCollisionB(GetX(),GetY(),24); if(Obj_BeDeleted(Ball)) { BallExist = false; BounceCount = 0; } if(PaddleExist == true) { Pong(0); Pong(1); } if(BallExist == true) { PongBall(Settings1, Settings2, Settings3); } SetPlayerY(floor(PlayerPosition)); if(GetPlayerY > 425) { if(OldY > 425) { OldY = GetPlayerY; PlayerPosition -= ((OldY - 425) / 2); } else{PlayerPosition -= ((OldY - 425) / 20);} } if(GetPlayerY < 425) { if(OldY < 425) { OldY = GetPlayerY; PlayerPosition += ((425 - OldY) / 2); } else{PlayerPosition += ((425 - OldY) / 20);} } if(frame == 0) { if(PaddleExist == false) { PaddleExist = true; } if(BallExist == false) { BallExist = true; if(Wait == 4) { if(GetTimer > 30 && PlayerWins < 2) { Settings1 = 1; Settings2 = 2; Settings3 = true; PongBall(1, 2, true); } if(GetTimer <= 30 || PlayerWins >= 2) { Settings1 = 2; Settings2 = 3; Settings3 = true; PongBall(2, 3, true); } Wait = 0; } Wait++; } frame = -20; } if(frame2 == 0) { loop(1) { CreateShot01(rand_int(GetClipMinX, GetClipMaxX), GetClipMaxY, rand(0.5, 1.0), 270, 3, 10); } frame2 = -25; } if(PlayerWins == 4) { SetLife(0); } frame++; frame2++; } @DrawLoop { SetTexture(BossImage); SetGraphicRect(40,33,91,94); DrawGraphic(GetX, GetY); DrawText(ToString(PlayerWins), GetClipMaxX-10, GetCenterY, 20, 255); } @Finalize { DeleteGraphic(BossImage); } } --- End code --- I implemented a timing system that allows the ball to only reflect every ten frames, which means it won't vibrate along anybody's paddle because it's too far away by the time it's allowed to reflect again! |
| Nimono:
Awesome, thanks for the advice, and thanks for fixing up that collision! ...I suppose I should make the time limit higher now, huh? Last time I played it, I won with 9 seconds left... XD |
| Navigation |
| Message Index |
| Next page |
| Previous page |