Reply to Re: Make a better bow
If you don't have an account, just leave the password field blank.
fixed some things in this one...dink doesn't attack when shooting, fixed damage so it's higher, added to strength (+3), i think this should also fix dink's misfire(i think it was from dink actually hitting the arrow?) but it might not...so, here is the newewer one:
//item fastfire bow
void use( void )
{
&mypower = 400;
&mydir = sp_dir(1, -1);
playsound(44, 22050,0,0,0);
&basehit = sp_dir(1, -1);
&basehit += 100;
sp_seq(1, &basehit);
sp_frame(1, 1); //reset seq to 1st frame
sp_kill_wait(1); //make sure dink will punch right away
sp_nocontrol(1, 1); //dink can't move until anim is done!
&mholdx = sp_x(1, -1);
&mholdy = sp_y(1, -1);
freeze(1);
wait(250);
if (&mydir == 6)
{
&mholdx += 30;
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 6);
sp_dir(&junk, 6);
}
if (&mydir == 4)
{
&mholdx -= 30;
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 4);
sp_dir(&junk, 4);
}
if (&mydir == 2)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 2);
sp_dir(&junk, 2);
}
if (&mydir == 8)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 8);
sp_dir(&junk, 8);
}
if (&mydir == 9)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 5);
sp_dir(&junk, 9);
}
if (&mydir == 1)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 1);
sp_dir(&junk, 1);
}
if (&mydir == 7)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 7);
sp_dir(&junk, 7);
}
if (&mydir == 3)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 3);
sp_dir(&junk, 3);
}
}
&mypower / 100;
&temp = &strength;
&temp / 5;
if (&temp == 0)
{
&temp = 1;
}
&mypower * &temp;
sp_timing(&junk, 0);
if (&bowlore == 1)
{
&temp = random(3, 1);
if (&temp == 1)
{
//critical hit
&mypower * 3;
playsound(44, 14050,0,0,0);
say("`4* POWER SHOT *", 1);
}
}
//create fake shadow effect
sp_speed(&junk, 6);
sp_strength(&junk, &mypower);
sp_range(&junk, 10);
//this makes it easier to hit stuff
sp_flying(&junk, 1);
sp_script(&junk, "dam-a1");
//when the fireball hits something, it will look to this script, this way
//we can burn trees when appropriate
&mshadow = create_sprite(&mholdx, &mholdy, 15, 432, 3);
sp_brain_parm(&mshadow, &junk);
sp_que(&mshadow, -500);
sp_brain_parm(&junk, 1);
sp_brain_parm2(&junk, &mshadow);
sp_nohit(&mshadow, 1);
sp_nohit(1, 1);
wait(250);
unfreeze(1);
}
void disarm(void)
{
init("set_frame_special 102 3 1");
init("set_frame_special 104 3 1");
init("set_frame_special 106 3 1");
init("set_frame_special 108 3 1");
&strength -= 3;
kill_this_task();
}
void armmovie(void)
{
init("set_frame_special 102 3 0");
init("set_frame_special 104 3 0");
init("set_frame_special 106 3 0");
init("set_frame_special 108 3 0");
}
void arm(void)
{
init("load_sequence_now graphics\dink\bow\walk\d-bw1- 71 43 30 84 -14 -10 14 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw2- 72 43 29 86 -21 -10 19 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw3- 73 43 35 79 -13 -9 13 9");
init("load_sequence_now graphics\dink\bow\walk\d-bw4- 74 43 41 79 -18 -12 20 12");
init("load_sequence_now graphics\dink\bow\walk\d-bw6- 76 43 47 78 -23 -10 23 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw7- 77 43 46 71 -20 -10 20 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw8- 78 43 35 76 -15 -12 15 12");
init("load_sequence_now graphics\dink\bow\walk\d-bw9- 79 43 46 78 -13 -9 13 9");
init("load_sequence_now graphics\dink\bow\idle\d-bi2- 12 250 35 87 -17 -12 16 9");
init("load_sequence_now graphics\dink\bow\idle\d-bi4- 14 250 37 77 -11 -12 16 10");
init("load_sequence_now graphics\dink\bow\idle\d-bi6- 16 250 35 83 -15 -9 11 9");
init("load_sequence_now graphics\dink\bow\idle\d-bi8- 18 250 33 70 -15 -12 15 9");
init("load_sequence_now graphics\dink\bow\hit\d-ba2- 102 25 27 89 -23 -12 24 11");
init("load_sequence_now graphics\dink\bow\hit\d-ba4- 104 25 76 79 -23 -13 23 14");
init("load_sequence_now graphics\dink\bow\hit\d-ba6- 106 25 37 81 -14 -10 14 10");
init("load_sequence_now graphics\dink\bow\hit\d-ba8- 108 25 31 89 -17 -16 17 10");
//bow weapon diags
init("load_sequence_now graphics\dink\bow\hit\d-ba1- 101 25 57 84 -20 -12 20 12");
init("load_sequence_now graphics\dink\bow\hit\d-ba3- 103 25 33 86 -19 -13 19 13");
init("load_sequence_now graphics\dink\bow\hit\d-ba7- 107 25 54 82 -19 -11 19 11");
init("load_sequence_now graphics\dink\bow\hit\d-ba9- 109 25 37 78 -21 -10 21 10");
preload_seq(25);
Debug("Quickbow armed");
int &basehit;
int &mholdx;
int &mholdy;
int &junk;
int &mshadow;
int &mydir;
int &mypower;
int &temp;
&strength += 3;
}
void pickup(void)
{
Debug("Player now owns this item.");
kill_this_task();
}
void drop(void)
{
Debug("Item dropped.");
kill_this_task();
}
//item fastfire bow
void use( void )
{
&mypower = 400;
&mydir = sp_dir(1, -1);
playsound(44, 22050,0,0,0);
&basehit = sp_dir(1, -1);
&basehit += 100;
sp_seq(1, &basehit);
sp_frame(1, 1); //reset seq to 1st frame
sp_kill_wait(1); //make sure dink will punch right away
sp_nocontrol(1, 1); //dink can't move until anim is done!
&mholdx = sp_x(1, -1);
&mholdy = sp_y(1, -1);
freeze(1);
wait(250);
if (&mydir == 6)
{
&mholdx += 30;
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 6);
sp_dir(&junk, 6);
}
if (&mydir == 4)
{
&mholdx -= 30;
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 4);
sp_dir(&junk, 4);
}
if (&mydir == 2)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 2);
sp_dir(&junk, 2);
}
if (&mydir == 8)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 8);
sp_dir(&junk, 8);
}
if (&mydir == 9)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 5);
sp_dir(&junk, 9);
}
if (&mydir == 1)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 1);
sp_dir(&junk, 1);
}
if (&mydir == 7)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 7);
sp_dir(&junk, 7);
}
if (&mydir == 3)
{
&junk = create_sprite(&mholdx, &mholdy, 11, 25, 3);
sp_dir(&junk, 3);
}
}
&mypower / 100;
&temp = &strength;
&temp / 5;
if (&temp == 0)
{
&temp = 1;
}
&mypower * &temp;
sp_timing(&junk, 0);
if (&bowlore == 1)
{
&temp = random(3, 1);
if (&temp == 1)
{
//critical hit
&mypower * 3;
playsound(44, 14050,0,0,0);
say("`4* POWER SHOT *", 1);
}
}
//create fake shadow effect
sp_speed(&junk, 6);
sp_strength(&junk, &mypower);
sp_range(&junk, 10);
//this makes it easier to hit stuff
sp_flying(&junk, 1);
sp_script(&junk, "dam-a1");
//when the fireball hits something, it will look to this script, this way
//we can burn trees when appropriate
&mshadow = create_sprite(&mholdx, &mholdy, 15, 432, 3);
sp_brain_parm(&mshadow, &junk);
sp_que(&mshadow, -500);
sp_brain_parm(&junk, 1);
sp_brain_parm2(&junk, &mshadow);
sp_nohit(&mshadow, 1);
sp_nohit(1, 1);
wait(250);
unfreeze(1);
}
void disarm(void)
{
init("set_frame_special 102 3 1");
init("set_frame_special 104 3 1");
init("set_frame_special 106 3 1");
init("set_frame_special 108 3 1");
&strength -= 3;
kill_this_task();
}
void armmovie(void)
{
init("set_frame_special 102 3 0");
init("set_frame_special 104 3 0");
init("set_frame_special 106 3 0");
init("set_frame_special 108 3 0");
}
void arm(void)
{
init("load_sequence_now graphics\dink\bow\walk\d-bw1- 71 43 30 84 -14 -10 14 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw2- 72 43 29 86 -21 -10 19 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw3- 73 43 35 79 -13 -9 13 9");
init("load_sequence_now graphics\dink\bow\walk\d-bw4- 74 43 41 79 -18 -12 20 12");
init("load_sequence_now graphics\dink\bow\walk\d-bw6- 76 43 47 78 -23 -10 23 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw7- 77 43 46 71 -20 -10 20 10");
init("load_sequence_now graphics\dink\bow\walk\d-bw8- 78 43 35 76 -15 -12 15 12");
init("load_sequence_now graphics\dink\bow\walk\d-bw9- 79 43 46 78 -13 -9 13 9");
init("load_sequence_now graphics\dink\bow\idle\d-bi2- 12 250 35 87 -17 -12 16 9");
init("load_sequence_now graphics\dink\bow\idle\d-bi4- 14 250 37 77 -11 -12 16 10");
init("load_sequence_now graphics\dink\bow\idle\d-bi6- 16 250 35 83 -15 -9 11 9");
init("load_sequence_now graphics\dink\bow\idle\d-bi8- 18 250 33 70 -15 -12 15 9");
init("load_sequence_now graphics\dink\bow\hit\d-ba2- 102 25 27 89 -23 -12 24 11");
init("load_sequence_now graphics\dink\bow\hit\d-ba4- 104 25 76 79 -23 -13 23 14");
init("load_sequence_now graphics\dink\bow\hit\d-ba6- 106 25 37 81 -14 -10 14 10");
init("load_sequence_now graphics\dink\bow\hit\d-ba8- 108 25 31 89 -17 -16 17 10");
//bow weapon diags
init("load_sequence_now graphics\dink\bow\hit\d-ba1- 101 25 57 84 -20 -12 20 12");
init("load_sequence_now graphics\dink\bow\hit\d-ba3- 103 25 33 86 -19 -13 19 13");
init("load_sequence_now graphics\dink\bow\hit\d-ba7- 107 25 54 82 -19 -11 19 11");
init("load_sequence_now graphics\dink\bow\hit\d-ba9- 109 25 37 78 -21 -10 21 10");
preload_seq(25);
Debug("Quickbow armed");
int &basehit;
int &mholdx;
int &mholdy;
int &junk;
int &mshadow;
int &mydir;
int &mypower;
int &temp;
&strength += 3;
}
void pickup(void)
{
Debug("Player now owns this item.");
kill_this_task();
}
void drop(void)
{
Debug("Item dropped.");
kill_this_task();
}