Guest User

Untitled

a guest
Jun 23rd, 2023
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. ;SBA_Util.psc
  2.  
  3. ScriptName SBA_Util hidden
  4.  
  5. Form[] Function GetSBAArmorArray(Actor actorRef) global
  6. Form[] wornForms = new Form[30]
  7. int count = 0
  8. int slotsChecked = 0
  9. slotsChecked += 0x00100000
  10. slotsChecked += 0x00200000
  11. slotsChecked += 0x80000000
  12.  
  13. int thisSlot = 0x00000001
  14. while(thisSlot < 0x80000000)
  15. if (Math.LogicalAnd(slotsChecked, thisSlot) != thisSlot)
  16. SBA_Armor sbaArmor = actorRef.GetWornForm(thisSlot) as SBA_Armor
  17. if sbaArmor != none
  18. wornForms[count] = sbaArmor
  19. count += 1
  20. slotsChecked += sbaArmor.GetSlotMask()
  21. else
  22. slotsChecked += thisSlot
  23. endif
  24. endif
  25. thisSlot *= 2
  26. endWhile
  27.  
  28. int i = 0
  29. Form[] retForms = Utility.CreateFormArray(count)
  30. while i < count
  31. retForms[i] = wornForms[i]
  32. i += 1
  33. endWhile
  34.  
  35. return retForms
  36. EndFunction
  37.  
  38. Function StripArmor(Actor actorRef, Form wornForm, int breakRate, int dropRate) global
  39. if wornForm
  40. actorRef.UnequipItem(wornForm)
  41. if Utility.RandomInt(0, 99) < breakRate
  42. MiscObject broken = (wornForm as SBA_Armor).BrokenItem
  43. actorRef.RemoveItem(wornForm, 1, true)
  44. actorRef.AddItem(broken, 1, true)
  45. if Utility.RandomInt(0, 99) < dropRate
  46. actorRef.DropObject(broken)
  47. endif
  48. else
  49. if Utility.RandomInt(0, 99) < dropRate
  50. actorRef.DropObject(wornForm)
  51. endif
  52. endif
  53. endif
  54. EndFunction
  55.  
  56. Function StripAllArmor(Actor actorRef, int breakRate, int dropRate) global
  57. Form[] wornForms = SBA_Util.GetSBAArmorArray(actorRef)
  58. int n = wornForms.Length
  59. int i = 0
  60. while i < n
  61. SBA_Util.StripArmor(actorRef, wornForms[i], breakRate, dropRate)
  62. i += 1
  63. endWhile
  64. EndFunction
  65.  
  66. Function StripTop(Actor actorRef, int breakRate, int dropRate) global
  67. SBA_Armor sbaArmor = actorRef.GetWornForm(0x00000004) as SBA_Armor
  68. SBA_Util.StripArmor(actorRef, sbaArmor, breakRate, dropRate)
  69. EndFunction
  70.  
  71. Function StripBottom(Actor actorRef, int breakRate, int dropRate) global
  72. SBA_Armor sbaArmor = actorRef.GetWornForm(0x00400000) as SBA_Armor
  73. SBA_Util.StripArmor(actorRef, sbaArmor, breakRate, dropRate)
  74. EndFunction
  75.  
  76. Function StripTasset(Actor actorRef, int breakRate, int dropRate) global
  77. SBA_Armor sbaArmor = actorRef.GetWornForm(0x00080000) as SBA_Armor
  78. SBA_Util.StripArmor(actorRef, sbaArmor, breakRate, dropRate)
  79. EndFunction
  80.  
  81.  
Advertisement
Add Comment
Please, Sign In to add comment