[Solved] Range doesn't work with subject_to_gravity 0?

Viper Snake

Member
I have an entity that does a delayed 'attack' when a player steps on it. If I use subject_to_gravity 0 or antigravity 100, the entity can no longer detect the players and never attacks. How do I fix this?

Code:
spawn  burningvillage_spinblock
	coords  626  432  64
	at  0

Code:
name    	burningvillage_spinblock
health          1
nomove  	1 1
type enemy
cantgrab 	1
nodrop  	2
falldie 	1
nodieblink 	2
nodrop  	2
setlayer        10
offscreenkill	9999
aggression 9999
subject_to_gravity 1
diesound        data/sounds/cotm_break.wav
palette	data/stages/normal/burningvillage/burningvillage_spinblock.png

anim	attack
	range	-42 84
	rangea	-1000 1000
	loop	0
	delay	180
	offset	32 32
	platform	32 32 -42 -42 42 42 10 14
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	delay	1
	drawmethod	256 256 0 0 0 -1 -1 0 10
	platform	0 0 0 0 0 0 0 0
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 20
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 30
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 40
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 50
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 60
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 70
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 80
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 90
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 100
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 110
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 120
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 130
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 140
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 150
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 160
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 170
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 180
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 190
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 200
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 210
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 220
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 230
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 240
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 250
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 260
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 270
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 280
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 290
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 300
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 310
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 320
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 330
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 340
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 350
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
		
anim	death
	loop	0
	delay	1
	offset	32 32
	bbox	0 0 0 0
	frame	data/chars/marianne/blank.png
		
anim	idle
	loop	1
	delay	1
	offset	32 32
	platform	32 32 -42 -42 42 42 10 14
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
		
#|edited by openBor Stats v 0.56

subject_to_gravity 0:

subject_to_gravity 1:
 
I was able to solve this problem thanks to these scripts by Bloodbane:

Code:
void attack0(void Ani)
{// Attack interruption
    void self = getlocalvar("self");

    performattack(self, openborconstant(Ani)); //Attack!
}

void attack1(int RxMin, int RxMax, int RyMin, int RyMax, void Ani)
{// Attack interruption with range check
 // Straight targetting
    void self = getlocalvar("self");
    void target = findtarget(self); //Get nearest player
    float x = getentityproperty(self, "x");
    float y = getentityproperty(self, "a");
    int dir = getentityproperty(self, "direction");

    if(target!=NULL()){
      float Tx = getentityproperty(target, "x");
      float Ty = getentityproperty(target, "a");
      float Disx = Tx - x;
      float Disy = Ty - y;

      if( Disx >= RxMin && Disx <= RxMax && Disy >= RyMin && Disy <= RyMax && dir == 1) // Target within range on right facing?
      {
        performattack(self, openborconstant(Ani)); //Change the animation
      } else if( Disx >= -RxMax && Disx <= -RxMin && Disy >= RyMin && Disy <= RyMax && dir == 0) // Target within range on left facing?
      {
        performattack(self, openborconstant(Ani)); //Change the animation
      }
    }
}

Fixed version:

Code:
name    	burningvillage_spinblock
health          1
nomove  	1 1
type enemy
cantgrab 	1
nodrop  	2
falldie 	1
nodieblink 	2
nodrop  	2
setlayer        10
offscreenkill	9999
aggression 9999
subject_to_gravity 0
diesound        data/sounds/cotm_break.wav
palette	data/stages/normal/burningvillage/burningvillage_spinblock.png
animationscript  data/scripts/script.c

anim	idle
	@cmd	attack1	-42 84 0 14 "ANI_FOLLOW1"
	loop	1
	delay	1
	offset	32 32
	platform	32 32 -42 -42 42 42 10 14
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png

anim	follow1
	loop	0
	delay	120
	offset	32 32
	platform	32 32 -42 -42 42 42 10 14
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	sound        data/sounds/spinblock.wav	
	delay	1
	platform	0 0 0 0 0 0 0 0	
	drawmethod	256 256 0 0 0 -1 -1 0 10
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 20
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 30
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 40
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 50
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 60
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 70
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 80
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 90
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 100
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 110
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 120
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 130
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 140
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 150
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 160
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 170
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 180
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 190
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 200
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 210
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 220
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 230
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 240
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 250
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 260
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 270
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 280
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 290
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 300
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 310
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 320
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 330
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 340
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 350
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 0	
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 10
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 20
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 30
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 40
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 50
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 60
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 70
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 80
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 90
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 100
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 110
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 120
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 130
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 140
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 150
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 160
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 170
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 180
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 190
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 200
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 210
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 220
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 230
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 240
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 250
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 260
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 270
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 280
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 290
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 300
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 310
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 320
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 330
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 340
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png
	drawmethod	256 256 0 0 0 -1 -1 0 350
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png	
	@cmd	attack0 "ANI_IDLE"
	frame	data/stages/normal/burningvillage/burningvillage_spinblock.png		

		
anim	death
	loop	0
	delay	1
	offset	32 32
	bbox	0 0 0 0
	frame	data/chars/marianne/blank.png
 
Those scripts were made by made. I used both of them in 2D mods

Entities by default won't act (walk included) when they are still in the air when spawned. That's why turrets and flying enemies need those scripts to control their action

Actually, it's best to use other type such as obstacle for spinning blocks like this instead of enemy type BUT since Castlevania games require player to touch exit instead of killing all enemies to complete the level, it should be okay :)
 
Back
Top Bottom