Reply to Re: A "high-score" based Dmod
If you don't have an account, just leave the password field blank.
@Robj
One of the noted success in my system is being able to knock back enemies to the direction of hit.
Try this code, attach it to a pillbug
en-pill.c
//pillbug brain
void main( void )
{
int &pb_life = 30;
int &save_x = sp_x(¤t_sprite, -1);
int &save_y = sp_y(¤t_sprite, -1);
sp_brain(¤t_sprite, 9);
sp_speed(¤t_sprite, 3);
sp_hitpoints(1, &pb_life);
sp_exp(¤t_sprite, 30);
sp_base_walk(¤t_sprite, 130);
sp_base_death(¤t_sprite, 140);
sp_touch_damage(¤t_sprite, 5);
sp_timing(¤t_sprite, 15);
sp_distance(¤t_sprite, 1);
preload_seq(131);
preload_seq(133);
preload_seq(141);
preload_seq(143);
}
void hit( void )
{
sp_target(¤t_sprite, &enemy_sprite);
playsound(30, 21050, 4000, ¤t_sprite, 0);
say("`5&pb_life hp", ¤t_sprite)
int &k_dir = sp_dir(&enemy_sprite, -1);
if (&k_dir == 2)
{
external("e-damage", "knock2");
}
if (&k_dir == 4)
{
external("e-damage", "knock4");
}
if (&k_dir == 6)
{
external("e-damage", "knock6");
}
if (&k_dir == 8)
{
external("e-damage", "knock8");
}
}
void touch ( void )
{
if (random(2,1) == 1)
{
external("d-damage", "stun");
}
if (random(2,1) == 2)
{
int &rand = random(4, 2);
&pb_life += &rand;
say_xy("`4+ &rand hp", &save_x, &save_y);
playsound(65, 22050, 3000, ¤t_sprite, 0);
}
}
//End of script
e-damage.c
//called externally by enemy scripts when they are hit.
//enemies have a selective behavior when it comes to
//being stunned, knocked back, downed, or slowed down.
void stun ( void )
{
int &stop = random( 500, 1 );
freeze(¤t_sprite);
wait(&stop);
unfreeze(¤t_sprite);
}
//knock em' away! vertical direction
void knock2 ( void )
{
sp_my(¤t_sprite, +16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
void knock8 ( void )
{
sp_my(¤t_sprite, -16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
void knock4 ( void )
{
sp_mx(¤t_sprite, -16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
void knock6 ( void )
{
sp_mx(¤t_sprite, +16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
}
//diagonals don't really matter now
One of the noted success in my system is being able to knock back enemies to the direction of hit.
Try this code, attach it to a pillbug
en-pill.c
//pillbug brain
void main( void )
{
int &pb_life = 30;
int &save_x = sp_x(¤t_sprite, -1);
int &save_y = sp_y(¤t_sprite, -1);
sp_brain(¤t_sprite, 9);
sp_speed(¤t_sprite, 3);
sp_hitpoints(1, &pb_life);
sp_exp(¤t_sprite, 30);
sp_base_walk(¤t_sprite, 130);
sp_base_death(¤t_sprite, 140);
sp_touch_damage(¤t_sprite, 5);
sp_timing(¤t_sprite, 15);
sp_distance(¤t_sprite, 1);
preload_seq(131);
preload_seq(133);
preload_seq(141);
preload_seq(143);
}
void hit( void )
{
sp_target(¤t_sprite, &enemy_sprite);
playsound(30, 21050, 4000, ¤t_sprite, 0);
say("`5&pb_life hp", ¤t_sprite)
int &k_dir = sp_dir(&enemy_sprite, -1);
if (&k_dir == 2)
{
external("e-damage", "knock2");
}
if (&k_dir == 4)
{
external("e-damage", "knock4");
}
if (&k_dir == 6)
{
external("e-damage", "knock6");
}
if (&k_dir == 8)
{
external("e-damage", "knock8");
}
}
void touch ( void )
{
if (random(2,1) == 1)
{
external("d-damage", "stun");
}
if (random(2,1) == 2)
{
int &rand = random(4, 2);
&pb_life += &rand;
say_xy("`4+ &rand hp", &save_x, &save_y);
playsound(65, 22050, 3000, ¤t_sprite, 0);
}
}
//End of script
e-damage.c
//called externally by enemy scripts when they are hit.
//enemies have a selective behavior when it comes to
//being stunned, knocked back, downed, or slowed down.
void stun ( void )
{
int &stop = random( 500, 1 );
freeze(¤t_sprite);
wait(&stop);
unfreeze(¤t_sprite);
}
//knock em' away! vertical direction
void knock2 ( void )
{
sp_my(¤t_sprite, +16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
void knock8 ( void )
{
sp_my(¤t_sprite, -16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
void knock4 ( void )
{
sp_mx(¤t_sprite, -16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
void knock6 ( void )
{
sp_mx(¤t_sprite, +16);
wait(50);
freeze(¤t_sprite);
wait(300);
unfreeze(¤t_sprite);
}
}
//diagonals don't really matter now