GECKkin Posted May 28, 2018 Share Posted May 28, 2018 This is my first mod I make the animations myself I don't know how to code... But somehow get the prince to follow and aid the player (you give him petals) But, he can't do any damage to anything, I need help badly... I spent hours learning how to generate it to the world or not mess up the code but this time I really have no idea, I can only give up... local assets = { Asset("ANIM", "anim/frogprince.zip"), } local prefabs = { "petals", "petals_evil", } local brain = require("brains/frogprince_brain") local MAX_TARGET_SHARES = 5 local SHARE_TARGET_DIST = 30 local function ShouldAcceptItem(inst, item) return ( --accept all hats! item.components.equippable ~= nil and item.components.equippable.equipslot == EQUIPSLOTS.HEAD ) or ( --accept food, but not too many carrots for loyalty! item.components.edible ~= nil and ( (item.prefab ~= "petals" and item.prefab ~= "petals_evil") or inst.components.follower.leader == nil or inst.components.follower:GetLoyaltyPercent() <= .9 ) ) end local function OnGetItemFromPlayer(inst, giver, item) --I eat food if item.components.edible ~= nil then if item.prefab == "petals" or item.prefab == "petals_evil" then if inst.components.combat:TargetIs(giver) then inst.components.combat:SetTarget(nil) elseif giver.components.leader ~= nil then giver:PushEvent("makefriend") giver.components.leader:AddFollower(inst) inst.components.follower:AddLoyaltyTime( TUNING.RABBIT_CARROT_LOYALTY*5 ) end end end --I wear hats if item.components.equippable ~= nil and item.components.equippable.equipslot == EQUIPSLOTS.HEAD then local current = inst.components.inventory:GetEquippedItem(EQUIPSLOTS.HEAD) if current ~= nil then inst.components.inventory:DropItem(current) end inst.components.inventory:Equip(item) end end local function OnRefuseItem(inst, item) inst.sg:GoToState("refuse") end local function OnAttacked(inst, data) inst.components.combat:SetTarget(data.attacker) inst.components.combat:ShareTarget(data.attacker, SHARE_TARGET_DIST, function(dude) return dude.prefab == inst.prefab end, MAX_TARGET_SHARES) end local function OnNewTarget(inst, data) inst.components.combat:ShareTarget(data.target, SHARE_TARGET_DIST, function(dude) return dude.prefab == inst.prefab end, MAX_TARGET_SHARES) end local function is_meat(item) return item.components.edible ~= nil and item.components.edible.foodtype == FOODTYPE.MEAT end local function NormalRetargetFn(inst) return FindEntity(inst, TUNING.PIG_TARGET_DIST, function(guy) return inst.components.combat:CanTarget(guy) and (guy:HasTag("monster") or (guy.components.inventory ~= nil and guy:IsNear(inst, TUNING.BUNNYMAN_SEE_MEAT_DIST) and guy.components.inventory:FindItem(is_meat) ~= nil)) end, { "_combat", "_health" }, -- see entityreplica.lua nil, { "monster", "player" }) end local function NormalKeepTargetFn(inst, target) return not (target.sg ~= nil and target.sg:HasStateTag("hiding")) and inst.components.combat:CanTarget(target) end local function giveupstring() return "RABBIT_GIVEUP", math.random(#STRINGS["RABBIT_GIVEUP"]) end local function GetStatus(inst) return inst.components.follower.leader ~= nil and "FOLLOWER" or nil end local function fn() local inst = CreateEntity() inst.entity:AddTransform() inst.entity:AddAnimState() inst.entity:AddSoundEmitter() inst.entity:AddDynamicShadow() inst.entity:AddLightWatcher() inst.entity:AddNetwork() inst.AnimState:SetBuild("frogprince") MakeCharacterPhysics(inst, 20, .5) inst.DynamicShadow:SetSize(2.5, 1.5) inst.Transform:SetFourFaced() inst.Transform:SetScale( 1, 1, 1) inst:AddTag("character") inst:AddTag("pig") inst:AddTag("manrabbit") inst:AddTag("scarytoprey") inst.AnimState:SetBank("frogprince") inst.AnimState:PlayAnimation("idle_loop", true) inst.AnimState:Hide("hat") --trader (from trader component) added to pristine state for optimization inst:AddTag("trader") --Sneak these into pristine state for optimization inst:AddTag("_named") inst:AddComponent("talker") inst.components.talker.fontsize = 24 inst.components.talker.font = TALKINGFONT inst.components.talker.offset = Vector3(0, -500, 0) inst.components.talker:MakeChatter() inst.entity:SetPristine() inst:AddComponent("locomotor") -- locomotor must be constructed before the stategraph inst.components.locomotor.runspeed = TUNING.PIG_RUN_SPEED * 2.2 -- account for them being stopped for part of their anim inst.components.locomotor.walkspeed = TUNING.PIG_WALK_SPEED * 1.9 -- account for them being stopped for part of their anim ------------------------------------------ inst:AddComponent("eater") inst.components.eater:SetDiet({ FOODTYPE.VEGGIE }, { FOODTYPE.VEGGIE }) inst.components.eater:SetCanEatRaw() ------------------------------------------ inst:AddComponent("combat") inst.components.combat:SetDefaultDamage(TUNING.ROOK_DAMAGE) inst.components.combat:SetRange(TUNING.DEER_ATTACK_RANGE, TUNING.BEEQUEEN_HIT_RANGE) inst.components.combat:SetAttackPeriod(TUNING.DEER_ATTACK_PERIOD) inst.components.combat:SetKeepTargetFunction(NormalKeepTargetFn) inst.components.combat:SetRetargetFunction(3, NormalRetargetFn) inst.components.combat.hiteffectsymbol = "manrabbit_torso" inst.components.combat.GetGiveUpString = giveupstring MakeMediumBurnableCharacter(inst, "manrabbit_torso") inst:AddComponent("named") inst.components.named.possiblenames = STRINGS.BUNNYMANNAMES inst.components.named:PickNewName() ------------------------------------------ inst:AddComponent("follower") inst.components.follower.maxfollowtime = TUNING.PIG_LOYALTY_MAXTIME ------------------------------------------ inst:AddComponent("health") inst.components.health:SetMaxHealth(TUNING.SPAT_HEALTH) inst.components.health:StartRegen(TUNING.BUNNYMAN_HEALTH_REGEN_AMOUNT, TUNING.BUNNYMAN_HEALTH_REGEN_PERIOD) ------------------------------------------ inst:AddComponent("inventory") ------------------------------------------ inst:AddComponent("knownlocations") ------------------------------------------ inst:AddComponent("trader") inst.components.trader:SetAcceptTest(ShouldAcceptItem) inst.components.trader.onaccept = OnGetItemFromPlayer inst.components.trader.onrefuse = OnRefuseItem inst.components.trader.deleteitemonaccept = true ------------------------------------------ MakeMediumFreezableCharacter(inst, "pig_torso") ------------------------------------------ inst:AddComponent("inspectable") inst.components.inspectable.getstatus = GetStatus ------------------------------------------ inst:ListenForEvent("attacked", OnAttacked) inst:ListenForEvent("newcombattarget", OnNewTarget) ------------------------------------------ MakeHauntablePanic(inst, 5, nil, 5) inst:SetBrain(brain) inst:SetStateGraph("SGfrogprince") return inst end return Prefab("frogprince", fn, assets, prefabs) Link to comment https://forums.kleientertainment.com/forums/topic/91170-creature-i-create-can-attack-but-do-no-damage-to-anything/ Share on other sites More sharing options...
Andreasgamming Posted June 17, 2018 Share Posted June 17, 2018 I don't see a Variable for Damage, I've never made a creature, but I do know they have a damage number, it not being there may be the problem, why he can't do damage to anything. Link to comment https://forums.kleientertainment.com/forums/topic/91170-creature-i-create-can-attack-but-do-no-damage-to-anything/#findComment-1051175 Share on other sites More sharing options...
Leonardo Cox Posted June 18, 2018 Share Posted June 18, 2018 Could be a stategraph issue, show us the stategraph. Link to comment https://forums.kleientertainment.com/forums/topic/91170-creature-i-create-can-attack-but-do-no-damage-to-anything/#findComment-1051895 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now