Jump to content

Recommended Posts

So, I'm rather new to modding so I'm probably making a very stupid mistake here. But I'm working on a mod of a huntress with a custom bow. My problem is that I can't seem to make the arrow projectile appear onscreen. I'm not sure how I should make the sprite for the arrow, does it need a BUILD animation?

 

Here are the codes to the bow and projectile prefabs

 

huntressbow.lua

local assets={     Asset("ANIM", "anim/huntressbow.zip"),    Asset("ANIM", "anim/swap_huntressbow.zip"),     Asset("ATLAS", "images/inventoryimages/huntressbow.xml"),    Asset("IMAGE", "images/inventoryimages/huntressbow.tex"),}local prefabs = {}local function onattack_huntressbow(inst, attacker, target)    if attacker and attacker.components.health and attacker.components.hunger then        attacker.components.health:DoDelta(-1)attacker.components.hunger:DoDelta(-4)    endendlocal function fn(colour)    local function OnEquip(inst, owner)                 owner.AnimState:OverrideSymbol("swap_object", "swap_huntressbow", "swap_huntressbow")        owner.AnimState:Show("ARM_carry")         owner.AnimState:Hide("ARM_normal")     end    local function OnUnequip(inst, owner)         owner.AnimState:Hide("ARM_carry")         owner.AnimState:Show("ARM_normal")     end    local inst = CreateEntity()    local trans = inst.entity:AddTransform()    local anim = inst.entity:AddAnimState()    MakeInventoryPhysics(inst)        anim:SetBank("huntressbow")    anim:SetBuild("huntressbow")    anim:PlayAnimation("idle")    inst:AddComponent("inventoryitem")    inst.components.inventoryitem.imagename = "huntressbow"    inst.components.inventoryitem.atlasname = "images/inventoryimages/huntressbow.xml"        inst:AddComponent("equippable")    inst.components.equippable:SetOnEquip( OnEquip )    inst.components.equippable:SetOnUnequip( OnUnequip )inst.components.inventoryitem.keepondeath = trueinst:AddComponent("inspectable")inst:AddTag("shadow")  inst:AddComponent("weapon")inst.components.weapon:SetOnAttack(onattack_huntressbow)    inst.components.weapon:SetDamage(55)    inst.components.weapon:SetRange(8, 10)inst.components.weapon:SetProjectile("callista_projectile")    return instendreturn  Prefab("common/inventory/huntressbow", fn, assets, prefabs)

callista_projectile.lua

local assets ={    Asset("ANIM", "anim/callista_projectile.zip"),}local function common(anim, bloom)    local inst = CreateEntity()    inst.entity:AddTransform()    inst.entity:AddAnimState()    inst.entity:AddNetwork()    MakeInventoryPhysics(inst)    RemovePhysicsColliders(inst)    inst.AnimState:SetBank("callista_projectile")    inst.AnimState:SetBuild("callista_projectile")    inst.AnimState:PlayAnimation(anim)    --anim:PlayAnimation("shot")		if bloom ~= nil then        inst.AnimState:SetBloomEffectHandle("shaders/anim.ksh")    end    inst:AddTag("projectile")    if not TheWorld.ismastersim then        return inst    end    inst.entity:SetPristine()        inst:AddComponent("projectile")    inst.components.projectile:SetSpeed(50)    inst.components.projectile:SetOnHitFn(inst.Remove)    inst.components.projectile:SetOnMissFn(inst.Remove)    return instend--local function ice()  --  return common("callista_spin_loop")--end--local function fire()  --  return common("callista_spin_loop", "shaders/anim.ksh")--endreturn Prefab("common/inventory/ice_projectile", ice, assets),        Prefab("common/inventory/callista_projectile", fire, assets)

What am I doing wrong?

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...