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)
172 GetInventory().CreateInInventory(
"ACOGOptic_6x" );
179 inv = params.m_Player.GetInventory();
182 SpawnInInventoryOrGroundPos(
"Ammo_HuntingBolt", inv,
GetPosition());
183 SpawnInInventoryOrGroundPos(
"Ammo_ImprovisedBolt_1", inv,
GetPosition());
184 SpawnInInventoryOrGroundPos(
"Ammo_ImprovisedBolt_2", inv,
GetPosition());
186 SpawnInInventoryOrGroundPos(
"ACOGOptic", inv,
GetPosition());
187 entity = SpawnInInventoryOrGroundPos(
"M68Optic", inv,
GetPosition());
188 entity.GetInventory().CreateInInventory(
"Battery9V" );
189 entity = SpawnInInventoryOrGroundPos(
"M4_T3NRDSOptic", inv,
GetPosition());
190 entity.GetInventory().CreateInInventory(
"Battery9V" );
191 entity = SpawnInInventoryOrGroundPos(
"ReflexOptic", inv,
GetPosition());
192 entity.GetInventory().CreateInInventory(
"Battery9V" );
193 entity = SpawnInInventoryOrGroundPos(
"StarlightOptic", inv,
GetPosition());
194 entity.GetInventory().CreateInInventory(
"Battery9V" );
197 override bool CanBeUsedForSuicide()
201 GetCartridgeInfo(GetCurrentMuzzle(), ammoDamage, ammoTypeName);
202 if (ammoTypeName ==
"Bullet_CupidsBolt")
205 return super.CanBeUsedForSuicide();