Jump to content

Recommended Posts

I have a character mod who could do some "power" attack when certain criterias are met. This would be hotkeyed to a button. Let's say x.

When the char has this ability enabled, player could press x and he would be able to "right click" an enemy and does a melee "power" attack with more damage.

Once this attack is done, I need to disable this ability until the next time certain criterias met again.

How do you do this?

 

I copied from Starve Wars mod "Force strike" but it's not working. I don't have fancy button on the hud to enable/disable +cooldown etc.

So far my code is below in modmain:

 

Spoiler

 

local BK_IRONFIST = AddAction("BK_IRONFIST", "Iron Fist", function(act)
    local target = act.target
    local attacker = act.doer
    local old_damage = attacker.components.combat.damagemultiplier
    local targetPos = GLOBAL.Vector3(target.Transform:GetWorldPosition())

    if     attacker.components.combat:IsValidTarget(target) then
        attacker.components.combat.damagemultiplier = old_damage*5
        attacker.components.combat:DoAttack(target)
        attacker.ironfistenabled = false --disable ironfist
        attacker.components.combat.damagemultiplier = old_damage
    end
        
    if targetPos ~= nil then    
        GLOBAL.SpawnPrefab("shock_fx").Transform:SetPosition(targetPos:Get())
    end
    
    BK_IRONFIST.rmb = false --what does this do?
    
    return true
end)
BK_IRONFIST.rmb = false --what does this do?

AddStategraphActionHandler("wilson", GLOBAL.ActionHandler(GLOBAL.ACTIONS.BK_IRONFIST, 
    function(inst)
        if not (inst.components.health:IsDead() or inst.replica.health:IsDead()) and not inst.sg:HasStateTag("attack") then
            return "attack"
        end
    end
))
AddStategraphActionHandler("wilson_client", GLOBAL.ActionHandler(GLOBAL.ACTIONS.BK_IRONFIST, 
    function(inst)
        if not inst.replica.health:IsDead() and not inst.sg:HasStateTag("attack") then
            return "attack"
        end
    end
))

local function IronFist(inst)
    if inst:HasTag("playerghost") then return end --ignore if ghost
    if inst.sg:HasStateTag("busy") then return end --ignore if busy

    if inst.ironfistenabled == false then
        if inst.components.talker ~= nil then
            inst.components.talker:Say("I need more Crown Power for that", 4) --4 seconds
        end
        return
    end
    
    BK_IRONFIST.rmb = true --what does this do?
end

AddModRPCHandler("MyChar", "IronFist", IronFist)

 

 

Thanks.

Edited by SenL
4 hours ago, SenL said:

I have a character mod who could do some "power" attack when certain criterias are met. This would be hotkeyed to a button. Let's say x.

When the char has this ability enabled, player could press x and he would be able to "right click" an enemy and does a melee "power" attack with more damage.

Once this attack is done, I need to disable this ability until the next time certain criterias met again.

How do you do this?

 

I copied from Starve Wars mod "Force strike" but it's not working. I don't have fancy button on the hud to enable/disable +cooldown etc.

So far my code is below in modmain:

 

Hidden Content

 

Thanks.

You need to add a component action through AddComponentAction. You can look at the mod More Actions to see how it's done better.

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...