/////////////WEAPON
Actor Bow : Weapon
{
  +SHOOTABLE
  +NOBLOOD
  +CANPASS
  +WINDTHRUST
  +WEAPON.NOAUTOAIM
  Health 10

Tag "Bow"
ConversationID 200
Inventory.PickUpMessage "You got the bow!"
Weapon.SelectionOrder 2000
Weapon.SlotNumber 5

// NEW AMMOTYPE AND FLAG NEEDED
Weapon.AmmoUse1 1
Weapon.AmmoGive1 10
Weapon.AmmoType1 "ArrowAmmo"
Weapon.AmmoUse2 1
Weapon.AmmoGive2 0
Weapon.AmmoType2 "GraplingAmmo"
+ALT_AMMO_OPTIONAL
// ----------------------------

//FIXME: Zandronum 2.0:
//Weapon.BobRangeX 0.0
//+WEAPON.NOALERT --> Silent weapon
States
{

AltFire:
    TNT1 A 0
	DBOW A 0 A_JumpIfInventory("GraplingAmmo",1,2)
	DBOW A 2
	Goto Ready
	DBOW B 3
	DBOW C 3 A_PlayWeaponSound("BOWREADY")
	Goto AltHold
AltHold:
	DBOW D 5
	TNT1 A 0 A_Refire
	TNT1 A 0 A_FireCustomMissile("GraplingArrow",0,true,5,0,true,5)
	DBOW E 3 A_PlayWeaponSound("ARROWNRM")
	DBOW FBA 3
	Goto Ready

Select:
   //TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Select_Ice")
   //TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Select_Fire")
   //TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Select_Thunder")
   TNT1 A 0 A_JumpIfInventory("IceSpell",1,"Select_Ice")
   TNT1 A 0 A_JumpIfInventory("FireSpell",1,"Select_Fire")
   TNT1 A 0 A_JumpIfInventory("ThunderSpell",1,"Select_Thunder")
   DBOW A 1 A_Raise
   Loop
Select_Ice:
   PBOW A 1 A_Raise
   Loop
Select_Fire:
   PBO2 A 1 A_Raise
   Loop
Select_Thunder:
   PBO3 A 1 A_Raise
   Loop
Deselect:
   //TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Deselect_Ice")
   //TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Deselect_Fire")
   //TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Deselect_Thunder")
   TNT1 A 0 A_JumpIfInventory("IceSpell",1,"Deselect_Ice")
   TNT1 A 0 A_JumpIfInventory("FireSpell",1,"Deselect_Fire")
   TNT1 A 0 A_JumpIfInventory("ThunderSpell",1,"Deselect_Thunder")
   DBOW A 1 A_Lower
   Loop
Deselect_Ice:
   PBOW A 1 A_Lower
   Loop
Deselect_Fire:
   PBO2 A 1 A_Lower
   Loop
Deselect_Thunder:
   PBO3 A 1 A_Lower
   Loop
Ready:
   //TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Ready_Ice")
   //TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Ready_Fire")
   //TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Ready_Thunder")
   TNT1 A 0 A_JumpIfInventory("IceSpell",1,"Ready_Ice")
   TNT1 A 0 A_JumpIfInventory("FireSpell",1,"Ready_Fire")
   TNT1 A 0 A_JumpIfInventory("ThunderSpell",1,"Ready_Thunder")
   DBOW A 1 A_WeaponReady
   Loop
Ready_Ice:
   PBOW AAAEEE 1 A_WeaponReady
   Goto Ready
Ready_Fire:
   PBO2 AAAEEE 1 A_WeaponReady
   Goto Ready
Ready_Thunder:
   PBO3 AAAEEE 1 A_WeaponReady
   Goto Ready
Spawn:
	BWPU A -1
	Stop
Fire:
	//TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Fire_Ice")
	//TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Fire_Fire")
	//TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Fire_Thunder")
	TNT1 A 0 A_JumpIfInventory("IceSpell",1,"Fire_Ice")
	TNT1 A 0 A_JumpIfInventory("FireSpell",1,"Fire_Fire")
	TNT1 A 0 A_JumpIfInventory("ThunderSpell",1,"Fire_Thunder")
	DBOW B 3
	DBOW C 3 A_PlayWeaponSound("BOWREADY")
	Goto Hold
Hold:
	//TNT1 A 0 A_JumpIfInventory("IceSpellInv",1,"Hold_Ice")
	//TNT1 A 0 A_JumpIfInventory("FireSpellInv",1,"Hold_Fire")
	//TNT1 A 0 A_JumpIfInventory("ThunderSpellInv",1,"Hold_Thunder")
	TNT1 A 0 A_JumpIfInventory("IceSpell",1,"Hold_Ice")
	TNT1 A 0 A_JumpIfInventory("FireSpell",1,"Hold_Fire")
	TNT1 A 0 A_JumpIfInventory("ThunderSpell",1,"Hold_Thunder")
	DBOW D 5
	TNT1 A 0 A_Refire
	TNT1 A 0 A_FireCustomMissile("ArrowProj",0,true,5,0,true,5)
	DBOW E 3 A_PlayWeaponSound("ARROWNRM")
	DBOW FBA 3
	Goto Ready
Fire_Ice:
	PBOW B 3
	PBOW C 3 A_PlayWeaponSound("BOWREADY")
	Goto Hold
Hold_Ice:
	PBOW DF 3
	TNT1 A 0 A_Refire
	NULL A 0 A_FireCustomMissile("IceArrow",0,true,5,0,true,5)
	DBOW E 3 A_PlayWeaponSound("ARROWICE")
	DBOW F 3
	PBOW BA 3
	Goto Ready
Fire_Fire:
	PBO2 B 3
	PBO2 C 3 A_PlayWeaponSound("BOWREADY")
	Goto Hold
Hold_Fire:
	PBO2 DF 3
	TNT1 A 0 A_Refire
	NULL A 0 A_FireCustomMissile("FireArrow",0,true,5,0,true,5)
	DBOW E 3 A_PlayWeaponSound("ARROWFIR")
	DBOW F 3
	PBO2 BA 3
	Goto Ready
Fire_Thunder:
	PBO3 B 3
	PBO3 C 3 A_PlayWeaponSound("BOWREADY")
	Goto Hold
Hold_Thunder:
	PBO3 DF 3
	TNT1 A 0 A_Refire
	NULL A 0 A_FireCustomMissile("ShockArrow",0,true,5,0,true,5)
	DBOW E 3 A_PlayWeaponSound("ARROWELE")
	DBOW F 3
	PBO3 BA 3
	Goto Ready
}
}
/////////////PROJECTILES
Actor ArrowProj
{
Radius 2
Height 2
Damage 2
Speed 36
PROJECTILE
+THRUGHOST
+DONTREFLECT
+RIPPER
-NOGRAVITY
 Gravity 0.25
Obituary "%o was perforated by one of %k's arrows"
Scale 0.8
States
{
Spawn:
	ARR0 A 1
	Loop
Death:
	NULL A 1
	Stop
}
}
Actor IceArrow : ArrowProj
{
Damage 20
Radius 5
Height 5
-THRUGHOST
-DONTREFLECT
-RIPPER
+ICEDAMAGE
DeathSound "IROWIMPC"
Obituary "%o was frozen by one of %k's ice arrows"
States
{
Spawn:
	ARR2 A 2 bright A_SpawnItemEx("IceArrowTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Loop
Death:
	NULL A 0 A_AlertMonsters
	SHEX ABCDE 3 bright
	Stop
}
}
Actor IceArrowTrail
{
+CLIENTSIDEONLY
Renderstyle Add
+NOGRAVITY
States
{
Spawn:
	ICPR IJKLM 3
	Stop
}
}
Actor FireArrow : IceArrow
{
-ICEDAMAGE
+FIREDAMAGE
+ROCKETTRAIL
DamageType Fire
Damage 70
Obituary "%o was burned by one of %k's fire arrows"
DeathSound "FROWIMPC"
Speed 30
States
{
Spawn:
	NULL A 0 A_AlertMonsters
	ARR3 A 2 bright A_SpawnItemEx("FireArrowTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	Loop
Death:
	NULL A 0 A_SetTranslucent(0.6,1)
	FE01 A 3 bright A_Explode(30,50)
	FE01 BCDEFGHIJ 3 bright
	Stop
}
}
Actor FireArrowTrail : IceArrowTrail
{
Scale 0.5
States
{
Spawn:
	FE02 ABCD 4 
	Stop
}
}
Actor ShockArrow : IceArrow
{
-ICEDAMAGE
+DONTREFLECT
+RIPPER
Damage 15
Obituary "%o was shocked by one of %k's thunder arrows"
DeathSound "EROWIMPC"
Speed 50
States
{
Spawn:
	ARR4 A 1 bright A_SpawnItemEx("ElectroTrail",0,0,0,1,0,random(-1,1),random(1,360), SXF_CLIENTSIDE)
	Loop
Death:
	NULL A 1 A_AlertMonsters
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ElectroTrail2",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360), SXF_CLIENTSIDE)
	Stop
}
}
Actor ElectroTrail : IceArrowTrail
{
+DONTSPLASH
+CLIENTSIDEONLY
Scale 0.3
States
{
Spawn:
	ZP01 ABCABC 3 A_FadeOut(0.1) 
	Stop
}
}
Actor ElectroTrail2
{
PROJECTILE
Radius 1
Height 1
+CLIENTSIDEONLY
+RIPPER
+NODAMAGE
+BLOODLESSIMPACT
+DONTSPLASH
renderstyle add
Scale 0.3
States
{
Spawn:
	ZP01 DEFDEF 3 A_FadeOut(0.1) 
	Stop
}
}
/////////////AMMO
Actor ArrowAmmo : ammo
{
  +SHOOTABLE
  +NOBLOOD
  +CANPASS
  +WINDTHRUST
  Health 10

Inventory.PickupMessage "You picked up some arrows."
Inventory.Amount 5
Inventory.MaxAmount 50
Ammo.BackpackAmount 6
Ammo.BackpackMaxAmount 100
Inventory.Icon "ARRWIMG"
States
{
Spawn:
	ARAM A 21000 //10 minutes
	Stop
}
}
Actor ArrowHefty : ArrowAmmo
{
  Health 10

Inventory.PickupMessage "You found a quiver of arrows."
Inventory.Amount 25
States
{
Spawn:
	ARA2 A 21000 //10 minutes
	Stop
}
}
/////////////ARTIFACTS
ACTOR IceSpell : CustomInventory
{
Inventory.Icon "SPELICN1"
Inventory.PickupMessage "You picked up an Ice Spell. Your bow is now enchanted."
Inventory.PickupSound "misc/p_pkup"
Inventory.Amount 1
Inventory.MaxAmount 1
//+NOGRAVITY
//+FLOATBOB
+INVENTORY.PICKUPFLASH
+INVENTORY.INVBAR
+INVENTORY.FANCYPICKUPSOUND
Inventory.DefMaxAmount
States
{
Spawn:
   ICE1 ABCB 6 Bright
    Loop
Use:
	TNT1 A 0
	Fail
	/*
Use:
	TNT1 A 0 A_TakeInventory("FireSpellInv",1)
	TNT1 A 0 A_TakeInventory("ThunderSpellInv",1)
	TNT1 A 1 A_GiveInventory("IceSpellInv",1)
	Stop*/
}
}
ACTOR IceSpellInv : Inventory
{
-INVENTORY.INVBAR
States
{
Spawn:
    NULL A 0
	Stop
}
}
ACTOR FireSpell : CustomInventory
{
Inventory.Icon "SPELICN3"
Inventory.PickupMessage "You picked up a Fire Spell. Your bow is now enchanted."
Inventory.PickupSound "misc/p_pkup"
Inventory.Amount 1
Inventory.MaxAmount 1
//+NOGRAVITY
//+FLOATBOB
+INVENTORY.PICKUPFLASH
+INVENTORY.INVBAR
+INVENTORY.FANCYPICKUPSOUND
Inventory.DefMaxAmount

//Make it destroyable for DoomZ, but hard to destroy
//by accident. -- Albert
+SHOOTABLE
-NOBLOOD

Health 200

States
{
Spawn:
   FRE1 ABCB 6 Bright
    Loop
	
Use:
	TNT1 A 0
	Fail
	//Prevent use, but having the Use state enables pickup -- Albert
	/*
	TNT1 A 0 A_TakeInventory("IceSpellInv",1)
	TNT1 A 0 A_TakeInventory("ThunderSpellInv",1)
	TNT1 A 1 A_GiveInventory("FireSpellInv",1)
	Stop
	*/
}
}
ACTOR FireSpellInv : Inventory
{
-INVENTORY.INVBAR
States
{
Spawn:
    NULL A 0
	Stop
}
}
ACTOR ThunderSpell : CustomInventory
{
Inventory.Icon "SPELICN2"
Inventory.PickupMessage "You picked up a Thunder Spell. Your bow is now enchanted."
Inventory.PickupSound "misc/p_pkup"
Inventory.Amount 1
Inventory.MaxAmount 1
//+NOGRAVITY
//+FLOATBOB
+INVENTORY.PICKUPFLASH
+INVENTORY.INVBAR
+INVENTORY.FANCYPICKUPSOUND
Inventory.DefMaxAmount
States
{
Spawn:
   ELK1 ABCDEF 5 Bright
   ELK1 G 14 Bright
    Loop
Use:
	TNT1 A 0
	Fail
	
	/*
Use:
	TNT1 A 0 A_TakeInventory("IceSpellInv",1)
	TNT1 A 0 A_TakeInventory("FireSpellInv",1)
	TNT1 A 1 A_GiveInventory("ThunderSpellInv",1)
	Stop*/
}
}
ACTOR ThunderSpellInv : Inventory
{
-INVENTORY.INVBAR
States
{
Spawn:
    NULL A 0
	Stop
}
}
Actor SpellBreaker : CustomInventory
{
Inventory.Icon "SPELICN4"
Inventory.PickupMessage "Spell Breaker"
Inventory.PickupSound "misc/p_pkup"
Inventory.Amount 1
Inventory.MaxAmount 1
//+NOGRAVITY
//+FLOATBOB
+INVENTORY.PICKUPFLASH
+INVENTORY.INVBAR
+INVENTORY.FANCYPICKUPSOUND
Inventory.DefMaxAmount
States
{
Spawn:
   UNSP A 1
    Loop
Use:
	TNT1 A 0 A_TakeInventory("IceSpellInv",1)
	TNT1 A 0 A_TakeInventory("FireSpellInv",1)
	TNT1 A 0 A_TakeInventory("ThunderSpellInv",1)
	TNT1 A 1 A_PlaySound ("UNSPELL")
	TNT1 A 1 A_Print("Your bow is back to normal")
	Stop
}
}

