Now, you can make an enemy that actually holds a weapon instead of trying to randomly run into you!

Code:
//eSword.z, written by Raiu aka dragonsword aka N8Read
//makes an enemy and has it hold a weapon IF screen->D0 is 0
//arguments: 0=which enemy, 1=x, 2=y. 3=how many pixels ahead of enemy, 4=sprite to use for weapon, 5=how much damage in quarter hearts, 6=delay before forming new if hit something
ffc script eSword{
	void run(int enemy, int x0, int y0, int forward, int sprite, int hurts, int delay){
		if(Screen->D[0]==0){
			npc knight=CreateNPCAt(enemy, x0, y0);
			eweapon sword=CreateEWeaponAt(EW_ARROW,knight->X,knight->Y);
			sword->UseSprite(sprite);
			sword->Dir=DIR_UP;
			sword->Damage=hurts;
			sword->HitXOffset=0;
			sword->HitYOffset=0;
			sword->HitWidth=16;
			sword->HitHeight=16;
			while(knight->isValid()){
				if(!sword->isValid()){
					Waitframes(delay);
					sword=CreateEWeaponAt(EW_ARROW,knight->X,knight->Y);
					sword->UseSprite(sprite);
					sword->Damage=hurts;
					sword->Damage=hurts;
					sword->HitXOffset=0;
					sword->HitYOffset=0;
					sword->HitWidth=16;
					sword->HitHeight=16;
					for(int i=0; i++; i<forward){
						if(!sword->isValid())break;
						if(knight->Dir==DIR_UP){
							sword->X=knight->X;
							sword->Y=knight->Y-i;
							if(sword->Dir!=DIR_UP){
								sword->Dir=DIR_UP;
								sword->UseSprite(sprite);
								sword->Flip=0;
							}
						} else if(knight->Dir==DIR_DOWN){
								sword->X=knight->X;
								sword->Y=knight->Y+i;
								if(sword->Dir!=DIR_DOWN){
									sword->Dir=DIR_DOWN;
									sword->UseSprite(sprite);
									sword->Flip=2;
								}
							} else if(knight->Dir==DIR_LEFT||knight->Dir==DIR_LEFTUP||knight->Dir==DIR_LEFTDOWN){
									sword->X=knight->X-i;
									sword->Y=knight->Y;
									if(sword->Dir!=DIR_LEFT){
										sword->Dir=DIR_LEFT;
										sword->UseSprite(sprite);
										sword->OriginalTile+=sword->NumFrames+intbool(sword->NumFrames==0);
										sword->Tile=sword->OriginalTile;
										sword->Flip=1;
									}
								} else {
										sword->X=knight->X+i;
										sword->Y=knight->Y;
										if(sword->Dir!=DIR_RIGHT){
											sword->Dir=DIR_RIGHT;
											sword->UseSprite(sprite);
											sword->OriginalTile+=sword->NumFrames+intbool(sword->NumFrames==0);
											sword->Tile=sword->OriginalTile;
											sword->Flip=0;
										}
						}
					Waitframe();
					}
				} else {
					if(knight->Dir==DIR_UP){
						sword->X=knight->X;
						sword->Y=knight->Y-forward;
						if(sword->Dir!=DIR_UP){
							sword->Dir=DIR_UP;
							sword->UseSprite(sprite);
							sword->Flip=0;
						}
					} else if(knight->Dir==DIR_DOWN){
							sword->X=knight->X;
							sword->Y=knight->Y+forward;
							if(sword->Dir!=DIR_DOWN){
								sword->Dir=DIR_DOWN;
								sword->UseSprite(sprite);
								sword->Flip=2;
							}
						} else if(knight->Dir==DIR_LEFT||knight->Dir==DIR_LEFTUP||knight->Dir==DIR_LEFTDOWN){
								sword->X=knight->X-forward;
								sword->Y=knight->Y;
								if(sword->Dir!=DIR_LEFT){
									sword->Dir=DIR_LEFT;
									sword->UseSprite(sprite);
									sword->OriginalTile+=sword->NumFrames+intbool(sword->NumFrames==0);
									sword->Tile=sword->OriginalTile;
									sword->Flip=1;
								}
							} else {
									sword->X=knight->X+forward;
									sword->Y=knight->Y;
									if(sword->Dir!=DIR_RIGHT){
										sword->Dir=DIR_RIGHT;
										sword->UseSprite(sprite);
										sword->OriginalTile+=sword->NumFrames+intbool(sword->NumFrames==0);
										sword->Tile=sword->OriginalTile;
										sword->Flip=0;
									}
					}
				Waitframe();
				}
			}
			if(sword->isValid()) sword->DeadState=0;
		}
	}
}

int intbool(bool ean){
	if(ean)return 1;
	return 0;
}
What it does: creates an enemy on the screen and makes it wield a sword!
the enemy will always re-appear whenever you re-enter the screen unless another script sets Screen->D[0] to something besides 0.

Arguments:
D0: ID of the enemy
D1: starting X position
D2: starting Y position
D3: How many pixels ahead of the enemy the sword is. (11-14 are good numbers)
D4: ID of the sprite to use
D5: damage the weapon does in quarter hearts
D6: how many frames the enemy waits before re-stabbing the sword if it hit something