Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local STRINGS = GLOBAL.STRINGS
- local UPGRADETYPES = GLOBAL.UPGRADETYPES
- local GetString = GLOBAL.GetString
- UPGRADETYPES.POCKETWATCH_WEAPON = "pocketwatch_weapon"
- TUNING.POCKETWATCH_WEAPON_HORROR_PLANAR_DAMAGE = GetModConfigData("clock_planar_dmg") or 15
- STRINGS.CHARACTERS.GENERIC.ANNOUNCE_HORRORCLOCK = "I think it liked that."
- STRINGS.CHARACTERS.WANDA.ANNOUNCE_HORRORCLOCK = "What could go wrong?"
- STRINGS.CHARACTERS.GENERIC.ANNOUNCE_HORRORCLOCK_FUEL = "It hungers for something else."
- STRINGS.CHARACTERS.WANDA.ANNOUNCE_HORRORCLOCK_FUEL = "Oh botheration, that won't do anymore..."
- local Fueled = require("components/fueled")
- local OldTakeFuelItem = Fueled.TakeFuelItem
- function Fueled:TakeFuelItem(item, ...)
- if self.inst.MakeHorrorClock and not self.inst:HasTag("horrorclock") and item.prefab == "horrorfuel" then
- local owner = self.inst.components.inventoryitem and self.inst.components.inventoryitem:GetGrandOwner()
- self.inst:MakeHorrorClock()
- if owner and owner.components.talker then
- owner.components.talker:Say(GetString(owner, "ANNOUNCE_HORRORCLOCK"))
- end
- end
- return OldTakeFuelItem(self, item, ...)
- end
- local OldCanAcceptFuelItem = Fueled.CanAcceptFuelItem
- function Fueled:CanAcceptFuelItem(item, ...)
- if self.inst:HasTag("horrorclock") and item.prefab ~= "horrorfuel" then
- local owner = self.inst.components.inventoryitem and self.inst.components.inventoryitem:GetGrandOwner()
- if owner and owner.components.talker then
- owner:DoTaskInTime(0, function() owner.components.talker:Say(GetString(owner, "ANNOUNCE_HORRORCLOCK_FUEL")) end)
- end
- return false
- end
- return OldCanAcceptFuelItem(self, item, ...)
- end
- local function MakeHorrorClock(inst)
- if inst.components.planardamage == nil then
- inst:AddComponent("planardamage")
- end
- inst.components.planardamage:SetBaseDamage(TUNING.POCKETWATCH_WEAPON_HORROR_PLANAR_DAMAGE)
- inst:AddTag("horrorclock")
- inst:AddTag("magiciantool")
- end
- local OldOnSave
- local function OnSave(inst, data, ...)
- if OldOnSave then
- OldOnSave(inst, data, ...)
- end
- data.horrorclock = inst:HasTag("horrorclock")
- end
- local OldOnLoad
- local function OnLoad(inst, data, ...)
- if OldOnLoad then
- OldOnLoad(inst, data, ...)
- end
- if data and data.horrorclock then
- inst:MakeHorrorClock()
- end
- end
- AddPrefabPostInit("pocketwatch_weapon", function(inst)
- if not GLOBAL.TheWorld.ismastersim then
- return
- end
- inst.MakeHorrorClock = MakeHorrorClock
- if not OldOnSave then
- OldOnSave = inst.OnSave
- end
- inst.OnSave = OnSave
- if not OldOnLoad then
- OldOnLoad = inst.OnLoad
- end
- inst.OnLoad = OnLoad
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement