This goes in the level npc:
[CODE]// NPC made by 2ndwolf
if (playertouchsme) {
toweapons Firerod;
}
if(weaponfired){
setani firerod,;
putnpc ,fireinit.txt,playerx+vecx(playerdir)*2.5,playery+vecy(playerdir)*2.5;
}[/CODE]
These go in text files:
[CODE]
//fireinit.txt
if(created){
timeout = 0.05;
this.dir = playerdir;
this.firex = x+1;
this.firey = y+2;
dontblock;
if(testcompu(this.firex,this.firey)!=-1||onwall(x+1-vecx(this.dir)*2.5,y+1-vecy(this.dir)*1.5))this.a+=1;
}
if(timeout){
if(this.a==this.i||this.a-1==this.i){putnpc ,firethrown.txt,this.firex-1+vecx(this.dir)*2,this.firey-2+vecy(this.dir)*2;
}
else destroy;
if(!onwall(this.firex,this.firey)
&&!onwall(this.firex+vecx(this.dir),this.firey+vecy(this.dir))
&&!onwall(this.firex+vecx(this.dir)*2,this.firey+vecy(this.dir)*2)
&&!onwall(this.firex+vecx(this.dir)*3,this.firey+vecy(this.dir)*3)
&&!onwall(this.firex+vecx(this.dir)*4,this.firey+vecy(this.dir)*4)
&&this.a==this.i
&&testcompu(this.firex+vecx(this.dir)*4,this.firey+vecy(this.dir)*4)==-1){
this.i+=1;
}
else if(this.dir==0) this.i-=1;
this.a += 1;
this.firex += vecx(this.dir)*2;
this.firey += vecy(this.dir)*2;
timeout = 0.05;
}[/CODE]
[CODE]
//firethrown.txt
if(created) {
dontblock;
setcharani firethrown,;
this.staketiles = {
// STA,KE,TI,LES, ,REP,LAC,ETI,LES, ,DROPS?(-1 = No drop),LEAPS(-1 = no leaps)
0x2 ,0x3 ,0x12 ,0x13 , ,0x2A5,0x2A6,0x2B5,0x2B6, ,1,0 , // BUSH
0x1A4,0x1A5,0x1B4,0x1B5, ,0x2A7,0x2A8,0x2B7,0x2B8, ,1,1 , //GRASS
}
this.stake = -1;
for(this.checkx=x+1;this.checkx>=x-1;this.checkx-=1){
for(this.checky=y+2;this.checky>=y-1;this.checky-=1){
for (this.i=0;this.i<arraylen(this.staketiles);this.i++) {
if (tiles[this.checkx,this.checky] == this.staketiles[this.i*12]) {
this.stake = this.i;
break;
}
}
if(this.stake!=-1)break;
}
if(this.stake!=-1)break;
}
hitobjects 1,x+1,y+2;
callnpc testnpc(x+1,y+2),firerod;
ReplaceStake();
sleep 0.3;
destroy;
}
function ReplaceStake() {
for (i=0;i<4;i++) {
if (tiles[this.checkx+(i%2),this.checky+int(i/2)] != this.staketiles[this.stake12+i]) {
return;
}
}
for (i=0;i<4;i++) {
tiles[this.checkx+(i%2),this.checky+int(i/2)] = this.staketiles[5+this.stake12+i];
}
if (this.staketiles[11+this.stake12] >= 0) putleaps this.staketiles[11+this.stake12],this.checkx,this.checky;
if (this.staketiles[10+this.stake*12] == 1){
this.random = random(0,20);
if (this.random<4){
lay2 greenrupee,this.checkx,this.checky;
}
else if (this.random<8){
lay2 bluerupee,this.checkx,this.checky;
}
else if (this.random<12){
lay2 bombs,this.checkx,this.checky;
}
else if (this.random<16){
lay2 darts,this.checkx,this.checky;
}
else if (this.random<19){
lay2 redrupee,this.checkx,this.checky;
}
}
updateboard this.checkx,this.checky,2,2;
} [/CODE]
Behaviour:
Kills bushes one by one and grass tiles in rows and drops items.
Attacks baddies and interacts with any npc which have if(firerod) in them.
Known bugs:
Can cast through single tile walls when next to them (I’ll consider it as a feature, since the only way I can think of is by patching and patching and patching… and patching is a bad habit)
The images still suck, if someone could make better looking images…