Anyway if anyone could pick up something like this it'd be super, it would give luck a higher use, and maybe even warrant a return of the old "Jinxed" trait?
SCN UGCriticalWeaponsFailureTokenScript;Token HolderRef Victim;MisfiringShort WeaponTypeShort WeaponHealthVarShort VictimLuckVarShort NonChanceVarShort ChanceRollOneShort MisfireVariableShort WeaponMisfired;Misfire OutcomeShort ChanceRollTwoShort WeaponMisfireResultBegin Gamemode Set Victim to GetContainer Set WeaponType to Victim.GetWeaponAnimType ;Check if carrier is recoiling If Victim.GetAnimAction == 8 ;Calculate Misfire Variable Set WeaponHealthVar to ( Victim.GetWeaponHealthPerc / 10 ) Set VictimLuckVar to ( Victim.GetAv Luck * 10 ) Set ChanceRollOne to ( GetRandomPercent ) Set NonChanceVar to ( VictimLuckVar * WeaponHealthVar ) Set MisfireVariable to ( NonChanceVar - ChanceRollOne ) Endif If MisfireVariable < 0 Set WeaponMisfired to 1 Endif;If Weapon Misfired Calculate Result If WeaponMisfired == 1 && WeaponType >=4 && WeaponType <=8 Set ChanceRollTwo to ( GetRandomPercent ) Set MisfireResult to ( VictimLuckVar + ChacneRollTwo) Endif If MisfireResult >= 100 ;Lucked Out do nothing Set WeaponMisfired to 0 Elseif MisfireResult < 100 && MisfireResult >= 75;Negative Effect Set WeaponMisfired to 0 Elseif MisfireResult < 75 && MisfireResult >= 50;Negative Effect Set WeaponMisfired to 0 Elseif MisfireResult < 50 && MisfireResult >= 25;Negative Effect Set WeaponMisfired to 0 Elseif MisfireResult < 25 && MisfireResult >= 0;Negative Effect Set WeaponMisfired to 0 Elseif MisfireResult < 0;Negative Effect Set WeaponMisfired to 0 EndifEnd
ref foo;set foo to getfirstref 35 3;while (foo) if (foo.isInCombat) if (foo.IsAttacking) ; <- Don't think this one exists, we need to check if the NPC is firing/attacking if (getrandompercent <= (10-foo.getav luck))endif endif endif set foo to getnextref;loop
ref foo;set foo to getfirstref 35 3;while (foo) if (foo.getitemcount CritFailToken < 1) foo.additem CritFailToken 1 endif set foo to getnextref;loop
begin gamemodeif getcontainer set victim to getcontainerelse returnendifset WeaponType to victim.getWeaponType(...)
begin gamemodeif getcontainer set victim to getcontainerelse returnendifset WeaponType to victim.getWeaponType(...)
ref contshort animbegin gamemodeif(cont) if(cont.GetAnimAction == 2 && anim == 0) set anim to 1 elseif(cont.getanimaction != 2 && anim == 1) ;WEAPON FIRED set anim to 0 endifelse set cont to getcontainerendifendIs what I use to track weapon firing http://www.fallout3nexus.com/downloads/file.php?id=12903
SCN UGCriticalWeaponsFailureTokenScript;Token HolderRef Victim;MisfiringShort WeaponTypeShort WeaponHealthVarShort VictimLuckVarShort NonChanceVarShort ChanceRollOneShort WeaponMisfiredBegin OnAdd If GetContainer Set Victim to GetContainer Else Return EndifEndBegin Gamemode Set WeaponType to Victim.GetWeaponAnimType ;Check if carrier is recoiling If Victim.GetAnimAction == 2 && WeaponType >=4 && WeaponType <=8 ;Calculate Misfire Variable Set WeaponHealthVar to ( Victim.GetWeaponHealthPerc ) Set VictimLuckVar to ( Victim.GetAv Luck * 5 ) Set ChanceRollOne to ( GetRandomPercent ) Set NonChanceVar to ( VictimLuckVar + WeaponHealthVar ) Endif If ChanceRollOne > NonChanceVar // NonChanceVar < 2 Set WeaponMisfired to 1 Endif If WeaponMisfired == 1 && Victim.GetItemCount UGMisfirePreventToken == 0 Victim.CastImmediateOnSelf UGCritFailureRandomEffect Set WeaponMisfired to 0 EndifEnd