Advertisement
HaoDZ

Horror Clock by TheLoneCatt

May 3rd, 2024
881
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.62 KB | None | 0 0
  1. local STRINGS = GLOBAL.STRINGS
  2. local UPGRADETYPES = GLOBAL.UPGRADETYPES
  3. local GetString = GLOBAL.GetString
  4.  
  5. UPGRADETYPES.POCKETWATCH_WEAPON = "pocketwatch_weapon"
  6.  
  7. TUNING.POCKETWATCH_WEAPON_HORROR_PLANAR_DAMAGE = GetModConfigData("clock_planar_dmg") or 15
  8.  
  9. STRINGS.CHARACTERS.GENERIC.ANNOUNCE_HORRORCLOCK = "I think it liked that."
  10. STRINGS.CHARACTERS.WANDA.ANNOUNCE_HORRORCLOCK = "What could go wrong?"
  11.  
  12. STRINGS.CHARACTERS.GENERIC.ANNOUNCE_HORRORCLOCK_FUEL = "It hungers for something else."
  13. STRINGS.CHARACTERS.WANDA.ANNOUNCE_HORRORCLOCK_FUEL = "Oh botheration, that won't do anymore..."
  14.  
  15. local Fueled = require("components/fueled")
  16.  
  17. local OldTakeFuelItem = Fueled.TakeFuelItem
  18. function Fueled:TakeFuelItem(item, ...)
  19.     if self.inst.MakeHorrorClock and not self.inst:HasTag("horrorclock") and item.prefab == "horrorfuel" then
  20.         local owner = self.inst.components.inventoryitem and self.inst.components.inventoryitem:GetGrandOwner()
  21.        
  22.         self.inst:MakeHorrorClock()
  23.         if owner and owner.components.talker then
  24.             owner.components.talker:Say(GetString(owner, "ANNOUNCE_HORRORCLOCK"))
  25.         end
  26.     end
  27.    
  28.     return OldTakeFuelItem(self, item, ...)
  29. end
  30.  
  31. local OldCanAcceptFuelItem = Fueled.CanAcceptFuelItem
  32. function Fueled:CanAcceptFuelItem(item, ...)
  33.     if self.inst:HasTag("horrorclock") and item.prefab ~= "horrorfuel" then
  34.         local owner = self.inst.components.inventoryitem and self.inst.components.inventoryitem:GetGrandOwner()
  35.        
  36.         if owner and owner.components.talker then
  37.             owner:DoTaskInTime(0, function() owner.components.talker:Say(GetString(owner, "ANNOUNCE_HORRORCLOCK_FUEL")) end)
  38.         end
  39.        
  40.         return false
  41.     end
  42.    
  43.     return OldCanAcceptFuelItem(self, item, ...)
  44. end
  45.  
  46. local function MakeHorrorClock(inst)
  47.     if inst.components.planardamage == nil then
  48.         inst:AddComponent("planardamage")
  49.     end
  50.     inst.components.planardamage:SetBaseDamage(TUNING.POCKETWATCH_WEAPON_HORROR_PLANAR_DAMAGE)
  51.    
  52.     inst:AddTag("horrorclock")
  53.     inst:AddTag("magiciantool")
  54. end
  55.  
  56. local OldOnSave
  57. local function OnSave(inst, data, ...)
  58.     if OldOnSave then
  59.         OldOnSave(inst, data, ...)
  60.     end
  61.     data.horrorclock = inst:HasTag("horrorclock")
  62. end
  63.  
  64. local OldOnLoad
  65. local function OnLoad(inst, data, ...)
  66.     if OldOnLoad then
  67.         OldOnLoad(inst, data, ...)
  68.     end
  69.     if data and data.horrorclock then
  70.         inst:MakeHorrorClock()
  71.     end
  72. end
  73.  
  74. AddPrefabPostInit("pocketwatch_weapon", function(inst)
  75.     if not GLOBAL.TheWorld.ismastersim then
  76.         return
  77.     end
  78.    
  79.     inst.MakeHorrorClock = MakeHorrorClock
  80.    
  81.     if not OldOnSave then
  82.         OldOnSave = inst.OnSave
  83.     end
  84.     inst.OnSave = OnSave
  85.    
  86.     if not OldOnLoad then
  87.         OldOnLoad = inst.OnLoad
  88.     end
  89.     inst.OnLoad = OnLoad
  90. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement