• Announcements

    • JoeW

      Support Email Error (Zendesk)   08/12/2019

      We are migrating to a new customer support ticketing system (desk.com) and unfortunately while moving over our old tickets the new system (Zendesk) sent an auto reply to "new users". We weren't aware this would happen and so and email was sent out in error. You do not need to create an account and you can ignore the email entirely. You can find more info about this over on our forums here: https://forums.kleientertainment.com/forums/topic/110413-zendesk/ Sorry for the confusion

TheSpecter

  • Content count

    6
  • Joined

  • Last visited

Community Reputation

0 Neutral

About TheSpecter

  • Rank
    Junior Member
  1. Specific bird type spawning

    Okay, either I am getting the idea or getting more confused I have Modmain.lua fiddlesticks.lua 1.I post the AddComponent to Modmain.lua 2. Change v.prefab=="scarecrow" to v.prefab=="fiddlesticks" 3. Add al function feather_equip(inst, owner) onequip(inst, owner) local attractor = owner.components.birdattractor if attractor then attractor.spawnmodifier:SetModifier(inst, TUNING.BIRD_SPAWN_MAXDELTA_FEATHERHAT, "maxbirds") attractor.spawnmodifier:SetModifier(inst, TUNING.BIRD_SPAWN_DELAYDELTA_FEATHERHAT.MIN, "mindelay") attractor.spawnmodifier:SetModifier(inst, TUNING.BIRD_SPAWN_DELAYDELTA_FEATHERHAT.MAX, "maxdelay") local birdspawner = TheWorld.components.birdspawner if birdspawner ~= nil then birdspawner:ToggleUpdate(true) end end end to modmain.lua? 4. Add local function feather_unequip(inst, owner) onunequip(inst, owner) local attractor = owner.components.birdattractor if attractor then attractor.spawnmodifier:RemoveModifier(inst) local birdspawner = TheWorld.components.birdspawner if birdspawner ~= nil then birdspawner:ToggleUpdate(true) end end end To fiddlesticks.lua? How do I replace "TUNING.BIRD_SPAWN_MAXDELTA_FEATHERHAT" to make it character specific? I am lost.
  2. Specific bird type spawning

    should it still be "fiddlesticks" if his Tag in the character.lua is "scarecrow"? I am guessing that by birdattractor you mean the percentage value in if shouldSpawnCrow and (math.random line, I changed it to .9 from .3 I also changed the character to if pt==pt_2 and v.prefab=="fiddlesticks", and it... still doesn't seems to have any effect... It's probably something very obvious that I am too retarded to see
  3. Specific bird type spawning

    Hm, it still doesn't seem to spawn more crows. I tried putting it in modmain.lua, it doesn't crash my game anymore, but it doesn't seem to have any effect on the bird spawn rate or type no matter what I try. Here's how the modmain.lua looks: PrefabFiles = { "fiddlesticks", "scare_scythe" } Assets = { Asset( "IMAGE", "images/saveslot_portraits/fiddlesticks.tex" ), Asset( "ATLAS", "images/saveslot_portraits/fiddlesticks.xml" ), Asset( "IMAGE", "images/selectscreen_portraits/fiddlesticks.tex" ), Asset( "ATLAS", "images/selectscreen_portraits/fiddlesticks.xml" ), Asset( "IMAGE", "images/selectscreen_portraits/fiddlesticks_silho.tex" ), Asset( "ATLAS", "images/selectscreen_portraits/fiddlesticks_silho.xml" ), Asset( "IMAGE", "bigportraits/fiddlesticks.tex" ), Asset( "ATLAS", "bigportraits/fiddlesticks.xml" ), Asset( "IMAGE", "images/map_icons/fiddlesticks.tex" ), Asset( "ATLAS", "images/map_icons/fiddlesticks.xml" ), Asset( "IMAGE", "images/avatars/avatar_fiddlesticks.tex" ), Asset( "ATLAS", "images/avatars/avatar_fiddlesticks.xml" ), Asset( "IMAGE", "images/avatars/avatar_ghost_fiddlesticks.tex" ), Asset( "ATLAS", "images/avatars/avatar_ghost_fiddlesticks.xml" ), } local function RecheckForThreat(inst) local busy = inst.sg:HasStateTag("sleeping") or inst.sg:HasStateTag("busy") or inst.sg:HasStateTag("flying") if not busy then local threat = GLOBAL.FindEntity(inst, 5, nil, nil, {'notarget', 'scarecrow'}, {'player', 'monster', 'scarytoprey'}) return threat ~= nil or GLOBAL.TheWorld.state.isnight end end AddStategraphPostInit("bird", function(sg) local old = sg.events.flyaway.fn sg.events.flyaway.fn = function(inst) if RecheckForThreat(inst) then old(inst) end end end) local function HealthPostInit(self) local OldRecalculatePenalty = self.RecalculatePenalty local function RecalculatePenalty(self, forceupdatewidget) local mult = GLOBAL.TUNING.REVIVE_HEALTH_PENALTY_AS_MULTIPLE_OF_EFFIGY mult = mult * GLOBAL.TUNING.EFFIGY_HEALTH_PENALTY local maxrevives = (self.maxhealth - 40)/mult if self.numrevives > maxrevives then self.numrevives = maxrevives end OldRecalculatePenalty(self, forceupdatewidget) end self.RecalculatePenalty = RecalculatePenalty end AddComponentPostInit('health', HealthPostInit) local require = GLOBAL.require local STRINGS = GLOBAL.STRINGS -- The character select screen lines STRINGS.CHARACTER_TITLES.fiddlesticks = "The Harbinger of Doom" STRINGS.CHARACTER_NAMES.fiddlesticks = "Fiddlesticks" STRINGS.CHARACTER_DESCRIPTIONS.fiddlesticks = "*Can craft a mysterious weapon\n*crows love him\n*Doesn't like fire and summer" STRINGS.CHARACTER_QUOTES.fiddlesticks = "\"I think I'll let you suffer for a while...\"" -- Custom speech strings STRINGS.CHARACTERS.FIDDLESTICKS = require "speech_fiddlesticks" -- The character's name as appears in-game STRINGS.NAMES.FIDDLESTICKS = "Fiddlesticks" -- The default responses of examining the character STRINGS.CHARACTERS.GENERIC.DESCRIBE.FIDDLESTICKS = { GENERIC = "A scarecrow?", ATTACKER = "That Fiddlesticks looks shifty...", MURDERER = "Murderer!", REVIVER = "Fiddlesticks, friend of ghosts.", GHOST = "Fiddlesticks looks scarier.", } -- From 492792310 ------------------------------ local function RecheckForThreat(inst) local busy = inst.sg:HasStateTag("sleeping") or inst.sg:HasStateTag("busy") or inst.sg:HasStateTag("flying") if not busy then local threat = GLOBAL.FindEntity(inst, 5, nil, nil, {'notarget', 'scarecrow'}, {'player', 'monster', 'scarytoprey'}) return threat ~= nil or GLOBAL.TheWorld.state.isnight end end AddStategraphPostInit("bird", function(sg) local old = sg.events.flyaway.fn sg.events.flyaway.fn = function(inst) if RecheckForThreat(inst) then old(inst) end end end) ------------------------------------------------ local function RecheckForThreat(inst) local busy = inst.sg:HasStateTag("sleeping") or inst.sg:HasStateTag("busy") or inst.sg:HasStateTag("flying") if not busy then local threat = GLOBAL.FindEntity(inst, 5, nil, nil, {'notarget', 'scarecrow'}, {'player', 'monster', 'scarytoprey'}) return threat ~= nil or GLOBAL.TheWorld.state.isnight end end AddStategraphPostInit("crow", function(sg) local old = sg.events.flyaway.fn sg.events.flyaway.fn = function(inst) if RecheckForThreat(inst) then old(inst) end end end) local comb_rep = GLOBAL.require "components/combat_replica" local old_IsAlly = comb_rep.IsAlly function comb_rep:IsAlly(guy,...) if guy:HasTag("bird") then return true end return old_IsAlly(self,guy,...) end AddComponentPostInit( "birdspawner", function(inst) if GLOBAL.TheWorld.ismastersim then if inst.SpawnBird and inst.GetSpawnPoint then local shouldSpawnCrow = false local GetSpawnPoint_old = inst.GetSpawnPoint inst.GetSpawnPoint = function(self, pt, ...) shouldSpawnCrow = false local spawnpoint_calculated = GetSpawnPoint_old(self, pt, ...) if spawnpoint_calculated then for _,v in pairs(GLOBAL.AllPlayers) do local pt_2 = v:GetPosition() if pt==pt_2 and v.prefab=="scarecrow" -- We have the owner being our mod character, in this case 'wilson' then shouldSpawnCrow = true break end end end if shouldSpawnCrow and (math.random() > .3) -- 30% chance to force a crow spawn, 70% of doing default behaviour. then shouldSpawnCrow = false end return spawnpoint_calculated end local SpawnBird_old = inst.SpawnBird inst.SpawnBird = function(self, spawnpoint, ignorebait, ...) if shouldSpawnCrow then shouldSpawnCrow = false local birdtype = "crow" local x, y, z = spawnpoint:Get() -- Crow to canary checks local canarylure = GLOBAL.TheSim:FindEntities(x, y, z, GLOBAL.TUNING.BIRD_CANARY_LURE_DISTANCE, { "scarecrow" }) if #canarylure ~= 0 then birdtype = "canary" end local bird = GLOBAL.SpawnPrefab(birdtype) if math.random() < .5 then bird.Transform:SetRotation(180) end if bird:HasTag("bird") then spawnpoint.y = 15 end -- Ignore traps and bait bird.Physics:Teleport(spawnpoint:Get()) return bird else return SpawnBird_old(self, spawnpoint, ignorebait, ...) end end end end end ) -- Recette Faux local Ingredient = GLOBAL.Ingredient local RECIPETABS = GLOBAL.RECIPETABS local STRINGS = GLOBAL.STRINGS local TECH = GLOBAL.TECH STRINGS.NAMES.SCARE_SCYTHE = "Scythe" STRINGS.RECIPE_DESC.SCARE_SCYTHE = "A mysterious scarecrow scythe." STRINGS.CHARACTERS.GENERIC.DESCRIBE.SCARE_SCYTHE = "A little scary.. no ?" AddRecipe("scare_scythe", { Ingredient("log", 2), Ingredient("rope", 1), Ingredient("razor", 1)}, RECIPETABS.WAR, TECH.NONE, nil, nil, nil, nil, "scarecrow", "images/inventoryimages/scare_scythe.xml", "scare_scythe.tex") AddMinimapAtlas("images/map_icons/fiddlesticks.xml") -- Add mod character to mod character list. Also specify a gender. Possible genders are MALE, FEMALE, ROBOT, NEUTRAL, and PLURAL. AddModCharacter("fiddlesticks", "MALE")
  4. Specific bird type spawning

    Yeah, I did. It is still crashing
  5. Specific bird type spawning

    I am trying to run it in DST, as I've just read it might not be compatible. If it's not, is there a way to do this for DST?
  6. Hello, I am trying to make adjustments to a mod that makes birds spawn more frequently, but I would like to make that specific to crows. I already checked an archived post here: But Mr.CarlZalph's code did not really go through, making the game say that "AddComponentPostInit" was not declared. I am not at all a lua strong guy, and I couldn't find any helpful information anywhere else but that one topic. The code was: AddComponentPostInit( "birdspawner", function(inst) if GLOBAL.TheWorld.ismastersim then if inst.SpawnBird and inst.GetSpawnPoint then local shouldSpawnCrow = false local GetSpawnPoint_old = inst.GetSpawnPoint inst.GetSpawnPoint = function(self, pt, ...) shouldSpawnCrow = false local spawnpoint_calculated = GetSpawnPoint_old(self, pt, ...) if spawnpoint_calculated then for _,v in pairs(GLOBAL.AllPlayers) do local pt_2 = v:GetPosition() if pt==pt_2 and v.prefab=="wilson" -- We have the owner being our mod character, in this case 'wilson' then shouldSpawnCrow = true break end end end if shouldSpawnCrow and (math.random() > .3) -- 30% chance to force a crow spawn, 70% of doing default behaviour. then shouldSpawnCrow = false end return spawnpoint_calculated end local SpawnBird_old = inst.SpawnBird inst.SpawnBird = function(self, spawnpoint, ignorebait, ...) if shouldSpawnCrow then shouldSpawnCrow = false local birdtype = "crow" local x, y, z = spawnpoint:Get() -- Crow to canary checks local canarylure = GLOBAL.TheSim:FindEntities(x, y, z, GLOBAL.TUNING.BIRD_CANARY_LURE_DISTANCE, { "scarecrow" }) if #canarylure ~= 0 then birdtype = "canary" end local bird = GLOBAL.SpawnPrefab(birdtype) if math.random() < .5 then bird.Transform:SetRotation(180) end if bird:HasTag("bird") then spawnpoint.y = 15 end -- Ignore traps and bait bird.Physics:Teleport(spawnpoint:Get()) return bird else return SpawnBird_old(self, spawnpoint, ignorebait, ...) end end end end end ) I ask for assistance, thank you. Since it could be used to identify the issue easier, here's the whole code: local MakePlayerCharacter = require "prefabs/player_common" local assets = { Asset( "ANIM", "anim/player_basic.zip" ), Asset( "ANIM", "anim/player_idles_shiver.zip" ), Asset( "ANIM", "anim/player_actions.zip" ), Asset( "ANIM", "anim/player_actions_axe.zip" ), Asset( "ANIM", "anim/player_actions_pickaxe.zip" ), Asset( "ANIM", "anim/player_actions_shovel.zip" ), Asset( "ANIM", "anim/player_actions_blowdart.zip" ), Asset( "ANIM", "anim/player_actions_eat.zip" ), Asset( "ANIM", "anim/player_actions_item.zip" ), Asset( "ANIM", "anim/player_actions_uniqueitem.zip" ), Asset( "ANIM", "anim/player_actions_bugnet.zip" ), Asset( "ANIM", "anim/player_actions_fishing.zip" ), Asset( "ANIM", "anim/player_actions_boomerang.zip" ), Asset( "ANIM", "anim/player_bush_hat.zip" ), Asset( "ANIM", "anim/player_attacks.zip" ), Asset( "ANIM", "anim/player_idles.zip" ), Asset( "ANIM", "anim/player_rebirth.zip" ), Asset( "ANIM", "anim/player_jump.zip" ), Asset( "ANIM", "anim/player_amulet_resurrect.zip" ), Asset( "ANIM", "anim/player_teleport.zip" ), Asset( "ANIM", "anim/wilson_fx.zip" ), Asset( "ANIM", "anim/player_one_man_band.zip" ), Asset( "ANIM", "anim/shadow_hands.zip" ), Asset( "SOUND", "sound/sfx.fsb" ), Asset( "ANIM", "anim/fiddlesticks.zip" ), Asset( "ANIM", "anim/ghost_fiddlesticks_build.zip" ), } local prefabs = {} -- Custom starting items local start_inv = { 'scare_scythe' } -- This initializes for both the server and client. Tags can be added here. local common_postinit = function(inst) -- Minimap icon inst.MiniMapEntity:SetIcon( "fiddlesticks.tex" ) inst:AddTag( "scarecrow" ) end -- This initializes for the server only. Components are added here. local master_postinit = function(inst) -- choose which sounds this character will play inst.soundsname = "webber" inst.talker_path_override = "dontstarve_DLC001/characters/" -- Stats inst.components.health:SetMaxHealth(100) inst.components.hunger:SetMax(150) inst.components.sanity:SetMax(200) -- Damage multiplier (optional) inst.components.combat.damagemultiplier = 1 -- Souffre de la chaleur inst.components.temperature.overheattemp = TUNING.OVERHEAT_TEMP - 11 inst.components.health.fire_damage_scale = 2 -- Increase birds spawn local birdspawner = TheWorld.components.birdspawner if not TheWorld.ismastersim then return inst end if birdspawner ~= nil then birdspawner:SetSpawnTimes({min=2, max=5}) birdspawner:SetMaxBirds(15) end AddComponentPostInit( "birdspawner", function(inst) if GLOBAL.TheWorld.ismastersim then if inst.SpawnBird and inst.GetSpawnPoint then local shouldSpawnCrow = false local GetSpawnPoint_old = inst.GetSpawnPoint inst.GetSpawnPoint = function(self, pt, ...) shouldSpawnCrow = false local spawnpoint_calculated = GetSpawnPoint_old(self, pt, ...) if spawnpoint_calculated then for _,v in pairs(GLOBAL.AllPlayers) do local pt_2 = v:GetPosition() if pt==pt_2 and v.prefab=="scarecrow" -- We have the owner being our mod character, in this case 'scarecrow' then shouldSpawnCrow = true break end end end if shouldSpawnCrow and (math.random() > .3) -- 30% chance to force a crow spawn, 70% of doing default behaviour. then shouldSpawnCrow = false end return spawnpoint_calculated end local SpawnBird_old = inst.SpawnBird inst.SpawnBird = function(self, spawnpoint, ignorebait, ...) if shouldSpawnCrow then shouldSpawnCrow = false local birdtype = "crow" local x, y, z = spawnpoint:Get() -- Crow to canary checks local canarylure = GLOBAL.TheSim:FindEntities(x, y, z, GLOBAL.TUNING.BIRD_CANARY_LURE_DISTANCE, { "scarecrow" }) if #canarylure ~= 0 then birdtype = "canary" end local bird = GLOBAL.SpawnPrefab(birdtype) if math.random() < .5 then bird.Transform:SetRotation(180) end if bird:HasTag("bird") then spawnpoint.y = 15 end -- Ignore traps and bait bird.Physics:Teleport(spawnpoint:Get()) return bird else return SpawnBird_old(self, spawnpoint, ignorebait, ...) end end end end end ) inst:ListenForEvent("killed", function(inst, data) local victim = data.victim if(victim~=nil and victim.prefab=="crow") then inst.components.sanity:DoDelta(-50) end end ) inst:ListenForEvent("killed", function(inst, data) local victim = data.victim if(victim~=nil and victim.prefab=="robin") then inst.components.sanity:DoDelta(-50) end end ) inst:ListenForEvent("killed", function(inst, data) local victim = data.victim if(victim~=nil and victim.prefab=="robin_winter") then inst.components.sanity:DoDelta(-50) end end ) end return MakePlayerCharacter("fiddlesticks", prefabs, assets, common_postinit, master_postinit, start_inv)