Okay, so you downloaded Snowfunc!
What is Snowfunc? 
Easy, it's a collection of functions and tasks that I have collected oer time.
You may be asking why you need this, and the answer is you don't NEED it.
It just makes life a whole boatload easier.


All functions/Tasks will be credited to their original programmers.

How to use them:

Method A:

Step 1: Paste the function into the folder that contains the script you are working on.
Step 2: At the top of your script, just below the "script_enemy_main {" put,
#include_function".\SnowFunc.txt";

Method B:
Step 1: Paste the function into the lib folder outside DNH that holds your other functions. If you don't have a lib folder, make one.
Step 2: At the top of your script, just below the "script_enemy_main {" put,
#include_function"lib\SnowFunc.txt"


Functions:
~~

wait(w)

Makes the script pause for w amount of frames.

This can be called in: Mainloop, initialize

Example: wait(90);
Makes the script wait for 90 frames.

~~

Concentration03(n), Made by Flyer

The Concentration03 function works like any other Concentration function, simply put Concentration03(n)
Replace n with the number of frames to make it last for.

This can be called in: Mainloop, initialize

Example: Concentration03(90);
Charges for 90 frames.

~~

Nova(let X,let Y,let rad,let type,graphic), Made by Flyer

Utsuho had some particularly nice effects, this is one of them. 
This creates a burst of energy that turns into a molten sun that surrounds the boss.
The command is simple to use.
You can change the appearance of the attack by modifying the ObjShot_SetGraphic line in the Nova Task, however this is not reccomnended.

This can be called in: Mainloop

Call,
Nova(Starting Position for X, Starting Position for Y, Radius of the sun after the light burst, A 1 or a 0 where 1 Kills the player and 0 won't, Bullet Image);

Example: Nova(GetX,GetY,12.6*13,0,YELLOW03);
Creates a nonlethal burst that turns into a large yellow sun, spawning ontop of the boss.

~~

ObjShot_Create(x, y, speed, angle, graphic, delay), Made by Blargel

A simple yet very effective Object shot.
Blargel really made a great function here.

This can be called in: Mainloop

Example: ObjShot_Create(GetX + 30, GetY, 5, 90, RED01, 5);
Creates an object shot that is fired quickly downward from a position 30 Pixels to the right of the boss. 
As with all object shots, it can be manipulated.

~~

ObjLaser_Create(x, y, angle, length, width, graphic, delay), Made by Blargel

Another simple, yet effective object shot, this time it's a simple laser.

This can be called in: Mainloop

Example: ObjLaser_Create(GetX, GetY - 50, 90, 200, 10, BLUE01, 0);
Fires a very long, thin object laser mounted at on the back of the boss. 
As with all object shots, it can be manipulated.

~~

ObjSinuateLaser_Create(x, y, speed, angle, length, width, graphic, delay), Made by Blargel

This is the same as the above, only this laser is not mounted to the boss, it moves. It can be fired as a bullet would.

This can be called in: Mainloop

Example:
ObjSinuateLaser_Create(GetClipMinX, GetCenterY, 1.5, GetAngleToPlayer, 60, 10, WHITE05, 1);
This laser will fire from the Center left side of the screen, and functions much like a bullet. 
It will be a thin, stretchy white laser that cuts through, fired directly at the player.
As with all object shots, it can be manipulated.

~~

GetPlayerMoveAngle, Made by Blargel

This is a very special function, in that it can't work outside a bullet/laser command.
Use this the same way GetAngleToPlayer is in the above example.

Example:
ObjSinuateLaser_Create(GetClipMinX, GetCenterY, 1.5, GetPlayerMoveAngle, 60, 10, WHITE05, 1);
This laser will fire from the Center left side of the screen, and functions much like a bullet. 
It will be a thin, stretchy white laser that cuts through, fired at the same angle the player is moving.

~~

ShootShape(x, y, speed, angle, graphic, delay, corners, bullets), Made by Blargel

This shoots a geometric shape from the specified point. 
(x, y) is the point to spawn the shape, speed is the speed the corners move at, angle is the angle one of the corners will shoot at, graphic and delay are pretty self explanatory, corners is the number of corners, and bullets is the number of bullets per side.
As an example with the corners and bullets parameters, if you put 4 for corners and 10 for bullets, you will get a square that has 10 bullets per side.

This can be called in: Mainloop

Example: ShootShape(GetCenterX, GetCenterY, 3, 1, BLUE02, 1, 6, 3);
Fires a Hexagon from the center of the screen, with three bullets in each side. 
It expands as it continues on outward.

~~

DeleteShotInCircleEx(item, type, x, y, initradius, maxradius, grow, invincibility), Made by Drake

This is a bit complex, and I'm not sure I fully understand it, but I have enough understanding to find this useful.
Officially, this expands a circle of a specified radius at point (x,y) to maximum specified radius. 
Bullets in the circle are either deleted or turned to items. Can also activate player invincibility.
I would mainly use this when programming a bomb for a player script.
Officially however I have never used it myself, but it was interesting enough to include.
As such, the example may be slightly errant.

DeleteShotInCircleEx(true, ALL, GetEnemyX, GetEnemyY, 50, 350, 5, true);
This will expand a circle at point (GetEnemyX,GetEnemyY) from a radius of 50 to a radius of 350. 
It grows 5 pixels each time. 
Once it reaches 350 pixels it will stop expanding, which in this case would take 60 frames. 
All bullets will be affected, and will be turned into star items.


~~

TReflectionLaser(x, y, v, angle, maxLen, width, graphic, delay, count), Made by Henry

I LOVE this one, used it a lot when I first found it.

Taken from Henry:
v stands for velocity, that is speed in daily language  
maxLen is the length of laser it is the "max" due to lengthening effect present
delay is the time interval between call of function and firing of laser, especially useful when a spiral pattern is produced.
count is the number of time of allowed reflection.

This can be called in: Mainloop

Example: TReflectionLaser(GetX - 30, GetY -20, 3, rand_int(0,359), 20, 5, YELLOW01, 4, 20);
Fires a reflecting lazer that bounces off the walls of the field 20 times, before disappearing, if it falls through the bottom however it will disappear.
It will be fired at a random angle, and will be very small, thin and pointy. 
It will be yellow and have a short delay.
It is Boss mounted.

~~
LightningShot(let x,let y,let speed,let angle,let stype), Made by Johnny Walker

This is a neat shot type, native to Iku Nagae, made by Johnny Walker.

This can be called in: Mainloop

Example: LightningShot(GetX,GetY,5,GetAngleToPlayer,YELLOW02);
Fires a Yellow Lightning ball at the player, that has been shot from the boss. 
As it flies it will drop red bubbles that will drop down then fly in the opposite direction the original shot was fired in.

~~
Angelwings(graphic1,graphic2), Made by Snow Taradien

I based this function off of the wings I made for one of my characters's Cards. 
Tori's spell, "crimson wings giving life", uses these.

This can be called in: Initialize

Example: Angelwings(RED01,RED03);
This creates a pair of giant red wings using circles and bubbles.
They flap contnuously and are mounted to the boss.
Due to the nature of the attack, only graphical changes are allowed.

~~
TFireToAir01(speed,graphic), Original Programmer unknown, errors fixed by Snow Taradien

Youmu had a really neat effect with one of he cherry blossom spell cards where the bullets slowly fly upwards.
Here's a simple function that does it for you.

This can be called in: Initialize

Example: TFireToAir01(1,BLUE11);
Fires blue diamond bullets up at a relatively low speed.

~~
TFireToAir02(position,speed,graphic,rate), Made by Snow Taradien

This is an alternate version of the above.
It includes the ability to set the rate of fire, starting position relative to the bottom of the screen. 
Negative values will break this function.
The closer to 0 the Rate value, the higher the density of bullets.
A value of 0 for the rate will cause a crash due to the fact that it causes an infinite loop.

This can be called in: Initialize

Example: TFireToAir02(GetCenterY,5,RED11,3);
Fires red diamond bullets from the center of the screen very quickly.

~~
Shots(delay,slow,bul,angle), Made by Johnny Walker

This is a nice shot pattern from Walker's Tenshi script.

This can be called in: Mainloop

Example: Shots(1,3,RED01,90);
This fires a ring on the boss that implodes, then explodes outward. Changing the angle can have very unique effects.

~~
oddflower(angle1, angle2, angle3, graphic1, graphic2), Made by Johnny Walker
Well, this makes a pair of "flowers" that spiral in on themselves then burst outward.

This can be called in: Mainloop

Example: oddflower(0, 0, 0, YELLOW02, PURPLE01);
Creates two flowers, one yellow, one Purple.

~~
Tshot(way,angle,bul), Made by Johnny Walker

A different Object shot. This one is really cool, because it has an odd effect on most of the other functions in here.
The TFireToAir02 function goes absolutely crazy.

This can be called in: Mainloop

Example: Tshot(12,90,RED01);
Fires a bullet that stops in front of the boss, corrects it's path then launches towards the player.

~~
TLaser(way,angle,bul), Made by Johnny Walker

A different Object lazer. This one is also really cool, because it has a colour changing effect as it flies.

This can be called in: Mainloop

Example: TLaser(12,90,RED01);
Fires a thin, shifting colour lazer straight down.

~~
MLaser(v,angle,bul), Made by Johnny Walker

A different Object lazer. This one is also really cool, because it has a colour changing effect as it flies.
Like the other Walker Object Shots, it is mounted to the boss.

This can be called in: Mainloop

Example: MLaser(3,90,RED01);
Fires a thin, shifting colour lazer straight down.
Almost exactly like TLaser, only less colour shifting, and velocity control.

~~

Masterspark, Original coder unknown, WIP by Snow Taradien
This code works, but is really quite poor looking, as it is unfinished at this time.
You can call it in the mainloop using:
MasterSpark(X, Y, Angle, Graphic)

This can be called in: Mainloop

Example: MasterSpark(GetX, GetY, 90, AQUA11);

~~

GravityPull(left,top,right,bottom,intervals,pull), Made by Demi

This creates a gravity well in the shape of a square/rectangle, that pulls the player in.
The first four parameters decide where the well is sitting, and how big it's dimensions are.
Intervals sets how often the pull occurs, a zero will cause the effect to null.
Pull is the physical strength of the pull.

This must be looped, and should be called in: Mainloop

Example: GravityPull(GetX-1,GetY-5,GetX+1,GetY+5,1,3);
A well in the boss that pulls you in very hard.

~~
GravityRepel(left,top,right,bottom,intervals,repel), Made by Demi

This creates a gravity well in the shape of a square/rectangle, that repels the player.
The first four parameters decide where the well is sitting, and how big it's dimensions are.
Intervals sets how often the push occurs, a zero will cause the effect to null.
Repel is the physical strength of the push.

This must be looped, and should be called in: Mainloop

Example: GravityRepel(GetX-1,GetY-5,GetX+1,GetY+5,1,3);
A well in the boss that pushes you away, very hard.

~~
BlackHole(x, y, angle, graphic1, graphic2, delay), by Snow Taradien, base coder unknown, likely Demi

This is Godama's Gravity Bomb.
It fires like a regular bullet, but is WAY more vicious.
Personally, it looks best with ADD bullets.

This can be called in: Mainloop


Example: BlackHole(GetX, GetY, GetAngleToPlayer, WHITE03, PURPLE02, 30);
Fires at the player, pulls them in, then explodes.

~~
Bubbleshot(x, y, v, angle, angle2, graphic, graphic2, accl, delay), Made by FurryYunSeong

Fires a bullet, that fires a bunch of other bullets after it.

This can be called in: Mainloop

Example: Bubbleshot(GetX+50*cos(anglee), GetY+50*sin(anglee), 6, anglee, 0 - anglee, WHITE03, PURPLE02, 4, 0);
Fires a bullet from an orbital position around the boss, circling clockwise from the variable anglee. 
It fires the bullet at the same angle as the current position of the orbit.


~~
BubbleshotB(x, y, v, angle, angle2, graphic, graphic2, accl, delay), Made by FurryYunSeong

Fires a bullet, that fires a bunch of other bullets after it. These bullets drop.

This can be called in: Mainloop

Example: BubbleshotB(GetX, GetY, 6, GetAngleToPlayer, 90, WHITE03, PURPLE02, 4, 0);
The boss fires a fast bullet at the player that speeds up, it explodes and causes a bunch of small bullets to fly about.
Reminicent of rain, like Murasa's Droplets.

~~

