begin OnEquip
set Configuring to 1
ShowMessage DynamicCrosshairConfigureMessage
end
begin MenuMode
if Configuring
set button to GetButtonPressed
if button == -1
return
endif
if button == 0
if Configuring == 1
set Configuring to 2
ShowMessage DynamicCrosshairTypeMsg
return
elseif Configuring == 2
set Configuring to 1
set DynamicCrosshairQuest.CrossMode to 0
ShowMessage DynamicCrosshairConfigureMessage
return
elseif Configuring == 3
set DynamicCrosshairQuest.AlwaysOn to (1-DynamicCrosshairQuest.AlwaysOn)
ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
return
elseif Configuring == 4
set Configuring to 1
set DynamicCrosshairQuest.Opacity to 255
ShowMessage DynamicCrosshairConfigureMessage
return
endif
elseif button == 1
if Configuring == 1
set Configuring to 3
ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
return
elseif Configuring == 2
set Configuring to 1
set DynamicCrosshairQuest.CrossMode to 1
ShowMessage DynamicCrosshairConfigureMessage
return
elseif Configuring == 3
set DynamicCrosshairQuest.IronSights to (1-DynamicCrosshairQuest.IronSights)
ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
return
elseif Configuring == 4
set Configuring to 1
set DynamicCrosshairQuest.Opacity to 191
ShowMessage DynamicCrosshairConfigureMessage
return
endif
elseif button == 2
if Configuring == 1
set Configuring to 4
ShowMessage DynamicCrosshairOpacityMessage
return
elseif Configuring == 3
set DynamicCrosshairQuest.HostileTarget to (1-DynamicCrosshairQuest.HostileTarget)
ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
return
elseif Configuring == 4
set Configuring to 1
set DynamicCrosshairQuest.Opacity to 127
ShowMessage DynamicCrosshairConfigureMessage
return
endif
elseif button == 3
if Configuring == 1
set Configuring to 0
player.UnequipItem DynamicCrosshairToken 1 1
player.additem ammo10mm 1 1
player.removeitem ammo10mm 1 1
return
elseif Configuring == 3
set DynamicCrosshairQuest.DuringCombat to (1-DynamicCrosshairQuest.DuringCombat)
ShowMessage DynamicCrosshairBehaviorMsg DynamicCrosshairQuest.AlwaysOn DynamicCrosshairQuest.IronSights DynamicCrosshairQuest.HostileTarget DynamicCrosshairQuest.DuringCombat
return
elseif Configuring == 4
set Configuring to 1
set DynamicCrosshairQuest.Opacity to 63
ShowMessage DynamicCrosshairConfigureMessage
return
endif
else
set Configuring to 1
ShowMessage DynamicCrosshairConfigureMessage
return
endif
endif
end
begin GameMode
if GetQuestRunning DynamicCrosshairQuest == 0
startquest DynamicCrosshairQuest
endif
set weapon to player.GetEquippedObject 5
if weapon != 0
set WeaponType to GetWeaponType weapon
else
set WeaponType to 0
endif
if DynamicCrosshairQuest.AlwaysOn == 0
short found
set found to 0
if Player.GetCombatTarget != 0 && DynamicCrosshairQuest.HostileTarget
set found to 1
endif
if Player.IsControlPressed 6 && DynamicCrosshairQuest.IronSights
set found to 1
endif
if Player.IsInCombat && DynamicCrosshairQuest.DuringCombat
set found to 1
endif
if found == 0
SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 0
SetUIFloat "HUDMainMenu\AccuracyCross\Active" 0
return
endif
endif
if GetUIFloat "HUDMainMenu\ReticleCenter\Reticle_Center\Visible" == 0 || weapon == 0 || player.IsWeaponOut == 0 || WeaponType == 0 || WeaponType == 1 || WeaponType == 2 || WeaponType == 10 || WeaponType == 11 || WeaponType == 12
SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 0
SetUIFloat "HUDMainMenu\AccuracyCross\Active" 0
return
else
if DynamicCrosshairQuest.CrossMode == 0
SetUIFloat "HUDMainMenu\AccuracyCross\Active" 0
SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 1
else
SetUIFloat "HUDMainMenu\AccuracyCircle\Active" 0
SetUIFloat "HUDMainMenu\AccuracyCross\Active" 1
endif
set skilltype to GetWeaponSkill weapon
if skilltype == 33
set skill to player.GetAV BigGuns
elseif skilltype == 34
set skill to player.GetAV EnergyWeapons
elseif skilltype == 41
set skill to player.GetAV SmallGuns
else
set skill to 0
endif
if skill > 100
set skill to 100
elseif skill < 0
set skill to 0
endif
set GunSpreadIronSightsBase to GetNumericGameSetting fGunSpreadIronSightsBase
set GunSpreadIronSightsMult to GetNumericGameSetting fGunSpreadIronSightsMult
set GunSpreadCrouchBase to GetNumericGameSetting fGunSpreadCrouchBase
set GunSpreadCrouchMult to GetNumericGameSetting fGunSpreadCrouchMult
set GunSpreadCondBase to GetNumericGameSetting fGunSpreadCondBase
set GunSpreadCondMult to GetNumericGameSetting fGunSpreadCondMult
set GunSpreadSkillBase to GetNumericGameSetting fGunSpreadSkillBase
set GunSpreadSkillMult to GetNumericGameSetting fGunSpreadSkillMult
set GunSpreadWalkBase to GetNumericGameSetting fGunSpreadWalkBase
set GunSpreadWalkMult to GetNumericGameSetting fGunSpreadWalkMult
set GunSpreadRunBase to GetNumericGameSetting fGunSpreadRunBase
set GunSpreadRunMult to GetNumericGameSetting fGunSpreadRunMult
set GunSpreadArmBase to GetNumericGameSetting fGunSpreadArmBase
set GunSpreadArmMult to GetNumericGameSetting fGunSpreadArmMult
if Player.IsMoving
set running to player.IsRunning
set walking to 1-running
else
set running to 0
set walking to 0
endif
set IsUsingIronSights to IsControlPressed 6
set IronSightsBonus to GunSpreadIronSightsBase + GunSpreadIronSightsMult * IsUsingIronSights
set CrouchBonus to GunSpreadCrouchBase + GunSpreadCrouchMult * player.IsSneaking
set ConditionPenalty to GunSpreadCondBase + GunSpreadCondMult * (player.GetWeaponHealthPerc/100)
set SkillBonus to GunSpreadSkillBase + GunSpreadSkillMult * skill
set WalkPenalty to GunSpreadWalkBase * (1 - player.IsRunning) + GunSpreadWalkMult * walking
set RunPenalty to GunSpreadRunBase * player.IsRunning + GunSpreadRunMult * running
set ArmCondition to 1
if WeaponType == 3 || WeaponType == 4
if player.GetAV RightAttackCondition <= 0
set ArmCondition to ArmCondition - 0.5
endif
if player.GetAV LeftAttackCondition <= 0
set ArmCondition to ArmCondition - 0.5
endif
else
if player.GetAV RightAttackCondition <= 0
set ArmCondition to 0
endif
endif
set ArmPenalty to GunSpreadArmBase + GunSpreadArmMult * ArmCondition
set Spread to GetWeaponSpread weapon
set MinSpread to GetWeaponMinSpread weapon
set AimAngle to IronSightsBonus * CrouchBonus * (ConditionPenalty + SkillBonus) * (WalkPenalty + RunPenalty) + ArmPenalty
set SpreadAngle to MinSpread
set TargetSize to AimAngle * 126 + SpreadAngle * 42
if (TargetSize - (floor TargetSize)) < 0.5
set TargetSize to floor TargetSize
else
set TargetSize to ceil TargetSize
endif
if TargetSize < 0
set TargetSize to 0
endif
endif
set CurrentSize to GetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_50\Height"
if CurrentSize != TargetSize || GetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Alpha" != DynamicCrosshairQuest.Opacity
if TargetSize - CurrentSize > 1 || TargetSize - CurrentSize < -1
set CurrentSize to CurrentSize + ((TargetSize - CurrentSize)/5)
else
set CurrentSize to TargetSize
endif
set CrossSize to CurrentSize/3
if CrossSize < 10
set CrossSize to 10
elseif CrossSize > 50
set CrossSize to 50
endif
set CrossTop to GetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\Y" - CrossSize
set CrossLeft to GetUIFloat "HUDMainMenu\AccuracyCircle\Accuracy_Circle_25\X" - CrossSize
set CrossBottom to CrossTop + CurrentSize + CrossSize
set CrossRight to CrossLeft + CurrentSize + CrossSize