ACTOR HunterPlayer : PlayerPawn
{
+NOSKIN
player.soundclass "hunter"
limitedtoteam 0
  Speed 1
  +NOICEDEATH
  Health 100
  Radius 16
  Height 56
  player.forwardmove 1.18
  player.sidemove 1.0
mass 400
  PainChance 256
  Player.DisplayName "Hunter"
  player.startitem "Bow", 1
  player.startitem "FireBow", 1
  player.startitem "IceBow", 1
  player.startitem "LightningBow", 1
  player.startitem "ArrowSingle", 30
  Player.ColorRange 112, 127
  States
  {
  Spawn:
    HUNT A 0 ACS_Execute(984,0)
    HUNT A 3
    Loop
  See:
    HUNT A 0 ACS_Execute(984,0)
    HUNT ABCD 4 
    Loop
  Missile:
    HUNT E 12 
    Goto Spawn
  Melee:
    HUNT F 6
    Goto Missile
  Pain:
    HUNT G 4
    HUNT G 4 A_Pain
    Goto Spawn
Pain.Creepstun:
	HUNT G 0 A_Pain
	HUNT G 18 ACS_ExecuteAlways(986,0)
	Goto Spawn
  Death:
    HUNT H 8
    HUNT I 8 A_PlayerScream
    HUNT J 8 A_NoBlocking
    HUNT KLM 8
    HUNT N -1
    Stop
  XDeath:
    HUNT H 8
    HUNT I 8 A_PlayerScream
    HUNT J 8 A_NoBlocking
    HUNT KLM 8
    HUNT N -1
    Stop
  Death.Creeper:
	HUNT A 0 A_PlaySoundEx("creeperattack", "Body")
	HUNT A 0 A_GiveToTarget("Creeperheal",1)
    HUNT H 10 ACS_ExecuteAlways(997,0)
    HUNT I 10 A_PlayerScream
    HUNT J 10 A_NoBlocking
    HUNT KLM 10
    HUNT N -1
    Stop
  Death.Jitter:
	HUNT G 1 A_PlaySound("gibbage/xsplat")
	NULL A 0 A_PlaySound("gibbage/playergib") 
	NULL A 0 A_NoBlocking 
	// Unleash The Gibs!
	NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
	NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
	NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
	NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
	NULL A 0 A_SkullPop("Custom_BloodySkull2")
	NULL A 1 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
	NULL A -1
	Stop
  }
}

ACTOR Bow : Weapon 9901
{ 
    Inventory.PickupMessage "You picked up the bow." 
    Obituary "%o was pierced by %k's arrows." 
    AttackSound "weapons/LightningArrow"
    Weapon.AmmoType1 "ArrowSingle" 
	Weapon.AmmoType2 "ArrowSingle" 
    Weapon.AmmoGive1 20 
    Weapon.AmmoUse1 1 
	Weapon.AmmoUse2 0
    +NOALERT 
	+DONTBOB
	+INVENTORY.UNDROPPABLE
	+WEAPON.NOAUTOAIM
	+AMMO_OPTIONAL
    Radius 30
	Height 10
    Scale .20 
    States 
    { 
    Spawn: 
       BOWP A 1
       Stop 
    Ready: 
	   BOWA A 0 ACS_ExecuteAlways(993, 0, 0)
	   BOWA GFE 3
	   BOWA E 2
	   BOWA EFG 4
       BOWA H 0 //ACS_ExecuteAlways(998,0)
	   BOWA H 1 A_WeaponReady 
       Goto Ready+8
    Deselect: 
       BOWA H 1 A_Lower
	   Loop
    Select: 
       BOWA H 1 A_Raise
       Loop
    Fire:
	   BOWA H 0 A_JumpIfNoAmmo("NoArrows")
	   BOWA H 0 ACS_ExecuteAlways(999,0)
       BOWA HIJKL 3
	   BOWA H 0 ACS_ExecuteAlways(999,0)
	   BOWA L 2 A_Playsound("weapons/bowdraw")
	Goto Hold
	Hold:
       BOWA M 1
       BOWA M 0 A_Refire
	   BOWA O 0 A_FireCustomMissile("ArrowFire", 0, 1, 8, 0)
	   BOWA O 0 A_GunFlash
       BOWA P 8
	   BOWA G 4 ACS_ExecuteAlways(998,0)
       Goto Ready+7
	   Flash:
	   TNT1 A 0 ACS_ExecuteAlways(993, 0, 0)
	   TNT1 A 19
	   Stop
	NoArrows:
	   BOWA H 28 A_PlayWeaponSound("weapons/arrowno")
	   Goto Ready+7
    } 
} 

actor FireBow : Bow
{
Obituary "%o was scorched by %k's fire arrows." 
+WEAPON.NOAUTOAIM
States
{
    Spawn: 
       BOWP A 1
       Stop 
    Ready: 
	   BOWA A 0 ACS_ExecuteAlways(993, 0, 1)
	   BOWA GFE 3
	   BOWA E 2 A_PlaySoundEx("weapons/bowfswitch","Weapon")
	   BOWA EFG 4
       BOWA H 0 //ACS_ExecuteAlways(998,0)
	   BOWA H 1 A_WeaponReady 
       Goto Ready+8
    Deselect: 
       BOWA H 1 A_Lower
	   Loop
    Select: 
       BOWA H 1 A_Raise
       Loop
    Fire:   
	   BOWA H 0 A_JumpIfNoAmmo("NoArrows")
	   BOWA H 0 ACS_ExecuteAlways(999,0)
       BOWA HIJKL 3
	   BOWA H 0 ACS_ExecuteAlways(999,0)
	   BOWA L 2 A_Playsound("weapons/bowdraw")
	Goto Hold
	   Hold:
	   BOWF DEC 3 bright 
	   BOWF E 0 A_Refire
	   BOWA H 0 A_Light0
	   BOWA O 0 A_FireCustomMissile("FlameArrow", 0, 1, 8, 0)
	   BOWA O 0 ACS_ExecuteAlways(998,0)
       BOWA P 18 
	   BOWA G 4
	   Goto Ready+7
	   Flash:
	   RED5 ABC 2 bright
	   RED5 A 0 A_PlaySoundEx("weapons/bowpowerup","Weapon")
	   BLU5 A 0 A_SpawnItem("FireRadius",0 ,0, 0)
	   RED5 DE 1 bright
	   RED5 EFEF 2 bright
	   RED5 CBA 1 bright
	   Stop
	NoArrows:
	   BOWA H 28 A_PlayWeaponSound("weapons/arrowno")
	   Goto Ready+7
	Altfire:
	   BOWA GFE 4
	   BOWA E 20 A_GunFlash
	   BOWA EFG 6
	   BOWA H 1 A_WeaponReady 
	   Goto Ready+8
}
}


actor IceBow : Bow
{
Obituary "%o was frozen by %k's ice arrows." 
+WEAPON.NOAUTOAIM
States
{
    Spawn: 
       BOWP A 1
       Stop 
    Ready: 
	   BOWA A 0 ACS_ExecuteAlways(993, 0, 2)
	   BOWA GFE 3
	   BOWA E 2 A_PlaySoundEx("weapons/bowiswitch","Weapon")
	   BOWA EFG 4
       BOWA H 0 //ACS_ExecuteAlways(998,0)
	   BOWA H 1 A_WeaponReady 
       Goto Ready+8
    Deselect: 
       BOWA H 1 A_Lower
	   Loop
    Select: 
       BOWA H 1 A_Raise
       Loop
    Fire:    
	   BOWA H 0 A_JumpIfNoAmmo("NoArrows")
	   BOWA H 0 ACS_ExecuteAlways(999,0)
       BOWA HIJKL 3
	   BOWA H 0 ACS_ExecuteAlways(999,0)
	   BOWA L 2 A_Playsound("weapons/bowdraw")
	Goto Hold
	Hold:
	   BOWI ABC 2 bright
	   BOWF E 0 A_Refire
	   BOWA H 0 A_Light0
	   BOWA O 0 A_FireCustomMissile("IceArrow", 0, 1, 8, 0)
	   BOWA O 0 A_FireCustomMissile("IceArrow2", 5, 0, 8, 0)
	   BOWA O 0 A_FireCustomMissile("IceArrow2", -5, 0, 8, 0)
	   BOWA O 0 ACS_ExecuteAlways(998,0)
       BOWA P 18
	   BOWA G 4
	   Goto Ready+7
	Flash:
	   BLU5 ABC 2 bright
	   BLU5 A 0 A_PlaySoundEx("weapons/bowpowerup","Weapon")
	   BLU5 A 0 A_SpawnItem("IceRadius",0 ,0, 0)
	   BLU5 DE 1 bright
	   BLU5 EFEF 2 bright
	   BLU5 CBA 1 bright
	   Stop
	NoArrows:
	   BOWA H 28 A_PlayWeaponSound("weapons/arrowno")
	   Goto Ready+7
	Altfire:
	   BOWA GFE 4
	   BOWA E 20 A_GunFlash
	   BOWA EFG 6
	   BOWA H 1 A_WeaponReady 
	   Goto Ready+8
}
}

actor LightningBow : Bow
{
+WEAPON.NOAUTOAIM
Obituary "%o was electrocuted by %k's lightning arrows." 
DamageType "Lightning"
decal "LightningDecal"
States
{
    Spawn: 
       BOWP A 1 
       Stop 
    Ready: 
	   BOWA A 0 ACS_ExecuteAlways(993, 0, 3)
	   BOWA GFE 3
	   BOWA E 2 A_PlaySoundEx("weapons/bowlswitch","Weapon")
	   BOWA EFG 4
       BOWA H 0 //ACS_ExecuteAlways(998,0)
	   BOWA H 1 A_WeaponReady 
       Goto Ready+8
    Deselect: 
       BOWA H 1 A_Lower
	   Loop
    Select: 
       BOWA H 1 A_Raise
       Loop
    Fire:   
	   BOWA H 0 A_JumpIfNoAmmo("NoArrows")
	   BOWA H 0 ACS_ExecuteAlways(999,0)
       BOWA HIJKL 4
	   BOWA L 2 A_Playsound("weapons/bowdraw")
	   BOWA A 0 A_GiveInventory("LightningCheck",1)
	   BOWA A 0 A_GunFlash
	Goto Hold
	   Hold:
	   BOWA M 1 bright 
	   BOWL A 0 A_Refire
	   BOWA H 0 A_Light0
	   BOWA O 0 A_FireCustomMissile("LightningArrow", 0, 1, 8, 0)
	   BOWA O 0 A_RailAttack(random(90,120), 8, 0, "none", "yellow", 0, 999, 0) 
	   BOWA O 0 ACS_ExecuteAlways(998,0)
       BOWA P 20 A_TakeInventory("LightningCheck",1)
	   BOWA G 4
	   Goto Ready+7
	Flash:
	   YEL5 A 0 A_JumpIfInventory("LightningCheck",1,"SFlash")
	   YEL5 ABC 2 bright
	   YEL5 A 0 A_PlaySoundEx("weapons/bowpowerup","Weapon")
	   BLU5 A 0 A_SpawnItem("LightningRadius",0 ,0, 0)
	   YEL5 DE 1 bright
	   YEL5 EFEF 2 bright
	   YEL5 CBA 1 bright
	   Stop
	SFlash:
	   BOWL ABC 2 bright
	   BOWL A 0 A_JumpIfInventory("LightningCheck",1,"SFlash")
	   Stop
	NoArrows:
	   BOWA H 28 A_PlayWeaponSound("weapons/arrowno")
	   Goto Ready+7
	   Altfire:
	   BOWA GFE 4
	   BOWA E 20 A_GunFlash
	   BOWA EFG 6
	   BOWA H 1 A_WeaponReady 
	   Goto Ready+8
}
}

actor LightningCheck : Inventory
{
Inventory.amount 1
inventory.maxamount 1
States
{
Spawn:
TNT1 A 1
Stop
}
}

ACTOR ArrowFire
{ 
   Radius 4 
   Height 3 
   Speed 70
   Scale .5
   Damage 13
   PROJECTILE 
   +NOGRAVITY 
   decal "BulletChip"
   +NOEXTREMEDEATH
   SeeSound "weapons/bowfire"
   DeathSound "weapons/bowhit"
   States 
   { 
   Spawn: 
      ARRW AAAAAA 2 A_SpawnItemEx("BulletPuff",0,0,0,0,0,0,0,128) 
      ARRW A 0 A_Changeflag("NOGRAVITY", 0)
	  ARRW A 0 A_Changeflag("LOWGRAVITY", 1)
	  Loop
   Death: 
      ARRW A 0 
      ARRW A 1 A_SpawnItemEx("Arrowdropped",0,0,0,0,0,0,0,32,0) 
      Stop 
   } 
} 

ACTOR FlameArrow
{ 
   Radius 3 
   Height 2 
   Speed 66
   Decal "Scorch"
   Scale .5
   Damage 5
   +DONTBLAST
   PROJECTILE 
   +NOGRAVITY 
   +NOEXTREMEDEATH
   renderstyle translucent
   alpha 1.0
   SeeSound "weapons/flamearrow"
   DeathSound "weapons/arrowexplode"
   States 
   { 
   Spawn: 
      FARW AAAAAA 2 bright A_SpawnItemEx("Flamearrowtrail",0,0,0,0,0,0,0,128) 
      FARW A 0 A_Changeflag("NOGRAVITY", 0)
	  FARW A 0 A_Changeflag("LOWGRAVITY", 1)
	  Loop
   Death: 
      FARW A 0 A_Explode(60,100,0)
	  ARRW A 0 A_SpawnItemEx("Arrowdropped",0,0,0,0,0,0,0,32,0) 
      HELX ABCDEFGHIJ 2 bright A_FadeOut(0.05)
      Stop 
   } 
} 

ACTOR IceArrow
{ 
   Radius 3 
   Height 2 
   Speed 25
   decal icehit
   Scale .5
   Damage 16
   +DONTBLAST
   PROJECTILE 
   damagetype "ice"
   +NOGRAVITY 
   +NOEXTREMEDEATH
   renderstyle translucent
   alpha 1.0
   SeeSound "weapons/icearrow"
   DeathSound "weapons/arrowshatter"
   States 
   { 
   Spawn: 
      SHRD ABC 2 bright A_SpawnItemEx("Icearrowtrail",-4,0,0,0,0,0,0,128) 
	  Loop
   Death: 
      ARRW A 0 A_SpawnItemEx("Arrowdropped",0,0,0,0,0,0,0,32,0) 
      SHEX ABCDEFGHIJ 2 bright A_FadeOut(0.05)
      Stop 
   } 
} 

actor IceArrow2 : IceArrow
{
   Speed 21
   Damage 15
   States 
   { 
   Death: 
      SHEX ABCDEFGHIJ 2 bright A_FadeOut(0.05)
      Stop 
   } 
}

ACTOR LightningArrow
{
PROJECTILE
damage 0
+RIPPER
height 5
radius 5
+NOBLOOD
speed 80
States
{
Spawn:
TNT1 A 1
Loop
Death:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("Arrowdropped",0,0,0,0,0,0,0,32,0) 
Stop
}
}

ACTOR Flamearrowtrail
{
- SOLID
+NOGRAVITY
+CLIENTSIDEONLY
alpha 0.7
renderstyle add
States
{
Spawn:
WBAL CDE 4 bright
Stop
}
}

ACTOR Icearrowtrail
{
- SOLID
+NOGRAVITY
+CLIENTSIDEONLY
alpha 0.9
renderstyle add
scale 0.3
States
{
Spawn:
CRYT ABCD 4 bright
Stop
}
}

actor FireRadius
{
+NOBLOCKMAP
Obituary "%o got too close to %k's magic."
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(60,152,0)
TNT1 BCDE 1
Stop
}
}

actor IceRadius : FireRadius
{
damagetype "Ice"
}

actor LightningRadius : FireRadius
{
damagetype "Lightning"
}

actor BotBow : Bow //The bow made for bots so they play a bit better.
{
Weapon.AmmoGive1 0
    States 
    { 
    Spawn: 
       BOWP A -1 
       Stop 
    Ready: 
       BOWA H 0 ACS_ExecuteAlways(998,0)
	   BOWA H 1 A_WeaponReady 
       Goto Ready+1
    Deselect: 
       BOWA H 1 A_Lower
	   Loop
    Select: 
       BOWA H 1 A_Raise
       Loop
    Fire:    
       BOWA HIJKL 3
	   BOWA H 0 ACS_ExecuteAlways(999,0)
	   BOWA L 2 A_Playsound("weapons/bowdraw")
	Goto Hold
	Hold:
	   BOWA M 0 A_JumpIfInventory("Huntermagic", 3, "Hold.Lightning")
	   BOWA M 0 A_JumpIfInventory("Huntermagic", 2, "Hold.Ice")
	   BOWA M 0 A_JumpIfInventory("Huntermagic", 1, "Hold.Fire")
       BOWA M 1
	   BOWA O 0 A_FireCustomMissile("ArrowFire", 0, 1, 8, 0)
	   BOWA O 0 A_GunFlash
       BOWA P 12
	   BOWA G 4 ACS_ExecuteAlways(998,0)
       Goto Ready     
	   Flash:
	   TNT1 A 19
	   Stop
	Hold.Fire:
	   BOWF D 0 A_Playweaponsound("weapons/bowonfire")
	   BOWF DEC 3 bright offset (0, 32) 
	   BOWA H 0 A_Light0
	   BOWA O 0 A_FireCustomMissile("FlameArrow", 0, 1, 8, 0)
	   BOWA O 0 ACS_ExecuteAlways(998,0)
       BOWA P 12 
	   BOWA G 4
	   Goto Ready
	Hold.Ice:
	   BOWI A 0 A_Playweaponsound("weapons/bowfreezing")
	   BOWI ABC 2 bright offset (0, 32) 
	   BOWA H 0 A_Light0
	   BOWA O 0 A_FireCustomMissile("IceArrow", 0, 1, 8, 0)
	   BOWA O 0 A_FireCustomMissile("IceArrow2", 5, 0, 8, 0)
	   BOWA O 0 A_FireCustomMissile("IceArrow2", -5, 0, 8, 0)
	   BOWA O 0 ACS_ExecuteAlways(998,0)
       BOWA P 2
	   BOWA G 2
	   Goto Ready
	Hold.Lightning:
	   BOWL CBA 2 bright offset (0, 32) 
	   BOWA H 0 A_Light0
	   BOWA O 0 A_FireCustomMissile("LightningArrow", 0, 1, 8, 0)
	   BOWA O 0 A_RailAttack(random(100,120), 8, 1, "none", "yellow", 0, 1, 0) 
	   BOWA O 0 ACS_ExecuteAlways(998,0)
       BOWA P 22
	   BOWA G 4
	   Goto Ready
    } 
}

actor HunterMagic : Inventory
{
inventory.amount 1
inventory.maxamount 5
}

ACTOR ArrowSingle : Ammo 9902
{ 
   Inventory.Amount 1
   Inventory.MaxAmount 40
   Ammo.BackpackAmount 40
   Ammo.BackpackMaxAmount 50
   Inventory.PickupMessage "You picked an Arrow" 
   Inventory.Icon ARRWA3A7 
   +INVENTORY.IGNORESKILL
   Scale .5
   Radius 2
   Height 2
   States 
   { 
   Spawn: 
      ARRW A 600
      Stop
   } 
} 

ACTOR Arrowdropped : CustomInventory
{ 
   Inventory.PickupMessage "You picked an Arrow" 
   Inventory.PickupSound "misc/a_pkup" 
   Scale .5
   Radius 8
   Height 2 
   States 
   { 
   Spawn: 
	ARRW A 500
	Stop
	Pickup:
    TNT1 A 0 A_JumpIfInventory("Bow", 1, 1)
    Fail
    TNT1 A 0 A_GiveInventory("ArrowSingle", 1)
    Stop
   } 
} 

