Turok Evolution Bow
  by BehemothProgrammer

------
Files:
------
anims/dyn_weapon_bow_anim.bin
defs/weaponInfo.txt
materials/mat_dyn_weapon_bow.kmat
models/dyn_weapon_bow.bin
scripts/weapons.txt
textures/weapon_bow_arrow.png
textures/weapon_bow_hand.png
textures/weapon_bow_handband.png
textures/weapon_bow_wood.png

--------------------------
scripts/weapons.txt Edits:
--------------------------
	==========
	|TurokBow|
	==========
	
	-------------
	|OnBeginFire|
	-------------
		self.AnimState().Blend(anim_weaponFire, 5.0f, 4.0f, ANF_LOOP);
		
	--------
	|OnFire|
    --------
		self.FireProjectile(
						"fx/super_arrow_flash.kfx",
						0.3f*GAME_SCALE,
						 2.9f*GAME_SCALE,
						-0.5f*GAME_SCALE,
						true);
	-----------
	|OnEndFire|
	-----------
		origin += (kVec3(0.3f*GAME_SCALE, 2.0f*GAME_SCALE, -0.6f*GAME_SCALE) * rotation);
		
		...
		
        self.PlaySound("sounds/shaders/bow_twang.ksnd");
        self.Owner().ConsumeAmmo(1);
		if (!self.Owner().HasAltAmmo() && !self.Owner().HasAmmo(TW_WEAPON_BOW))
			self.AnimState().Set(anim_weaponFireBowNoAmmo, 2.0f, ANF_NOINTERRUPT);
		else
			self.AnimState().Set(anim_weaponFireCharged, 2.0f, ANF_NOINTERRUPT);

	--------
	|OnTick|
	--------
		void OnTick()
		{
			UpdateModelVariation();
		}

	----------------------
	|UpdateModelVariation|
	----------------------
		void UpdateModelVariation()
		{
			//Don't update while firing the arrow
			if ((self.AnimState().PlayingID() == anim_weaponFireCharged ||
				self.AnimState().PlayingID() == anim_weaponFireBowNoAmmo) &&
				self.AnimState().PlayTime() < 0.1f)
			{
				return;
			}			
			
			if (self.Owner().HasAltAmmo())
				self.ModelVariation() = 1;
			else
				self.ModelVariation() = 0;
		}

--------------------------
defs/weaponInfo.txt Edits:
--------------------------
	-----------
	|Wpn_Bow 1|
	-----------
		offset                  "0.0 0.0 0.0"
		model                   "models/dyn_weapon_bow.bin"
		anim                    "anims/dyn_weapon_bow_anim.bin"
