53class Crossbow_Base : Archery_Base
62 override void InitStateMachine()
65 m_abilities.Insert(
new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED));
66 m_abilities.Insert(
new AbilityRecord(WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL));
67 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_OPENED));
68 m_abilities.Insert(
new AbilityRecord(WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_CLOSED));
69 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL));
70 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED));
71 m_abilities.Insert(
new AbilityRecord(WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED));
79 WeaponChargingStretch Mech_U =
new WeaponChargingStretch(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED);
80 WeaponEjectBullet Mech_L =
new WeaponEjectBullet(
this, NULL, WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL);
82 WeaponChambering Chamber_U =
new WeaponChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_OPENED);
83 WeaponChambering Chamber_C =
new WeaponChambering(
this, NULL, WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_CLOSED);
86 WeaponStateBase Trigger_U =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED);
87 WeaponStateBase Trigger_C =
new WeaponDryFire(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED);
88 WeaponStateBase Trigger_L =
new WeaponFireLast(
this, NULL, WeaponActions.FIRE, WeaponActionFireTypes.FIRE_NORMAL);
114 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _fin_, C, null,
new WeaponGuardChamberEmpty(
this)));
116 m_fsm.AddTransition(
new WeaponTransition( Mech_L, _abt_, C, null,
new WeaponGuardChamberEmpty(
this)));
122 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _fin_,
L, null,
new WeaponGuardChamberFull(
this)));
123 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _fin_, C, null,
new WeaponGuardWeaponCharged(
this)));
125 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _abt_,
L, null,
new WeaponGuardChamberFull(
this)));
126 m_fsm.AddTransition(
new WeaponTransition( Chamber_U, _abt_, C, null,
new WeaponGuardWeaponCharged(
this)));
131 m_fsm.AddTransition(
new WeaponTransition( Chamber_C, _fin_,
L, null,
new WeaponGuardChamberFull(
this)));
133 m_fsm.AddTransition(
new WeaponTransition( Chamber_C, _abt_,
L, null,
new WeaponGuardChamberFull(
this)));
154 SelectionBulletHide();
161 override float GetChanceToJam()
166 override void OnDebugSpawnEx(DebugSpawnParams params)
168 SpawnAmmo(
"Ammo_HuntingBolt",SAMF_DEFAULT);
171 GetInventory().CreateInInventory(
"ACOGOptic_6x" );
178 inv = params.m_Player.GetInventory();
181 SpawnInInventoryOrGroundPos(
"Ammo_HuntingBolt", inv,
GetPosition());
182 SpawnInInventoryOrGroundPos(
"Ammo_ImprovisedBolt_1", inv,
GetPosition());
183 SpawnInInventoryOrGroundPos(
"Ammo_ImprovisedBolt_2", inv,
GetPosition());
185 SpawnInInventoryOrGroundPos(
"ACOGOptic", inv,
GetPosition());
186 entity = SpawnInInventoryOrGroundPos(
"M68Optic", inv,
GetPosition());
187 entity.GetInventory().CreateInInventory(
"Battery9V" );
188 entity = SpawnInInventoryOrGroundPos(
"M4_T3NRDSOptic", inv,
GetPosition());
189 entity.GetInventory().CreateInInventory(
"Battery9V" );
190 entity = SpawnInInventoryOrGroundPos(
"ReflexOptic", inv,
GetPosition());
191 entity.GetInventory().CreateInInventory(
"Battery9V" );
192 entity = SpawnInInventoryOrGroundPos(
"StarlightOptic", inv,
GetPosition());
193 entity.GetInventory().CreateInInventory(
"Battery9V" );
200 GetCartridgeInfo(GetCurrentMuzzle(), ammoDamage, ammoTypeName);
201 if (ammoTypeName ==
"Bullet_CupidsBolt")
204 return super.CanBeUsedForSuicide();