• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

[JASS] Slotindependant Itemcombining

Status
Not open for further replies.
Level 1
Joined
Apr 22, 2009
Messages
1
Hi guys,

I recently started to get interested in JASS, since I'm feeling kinda limited when using GUI. Luckily I'm not completely new into coding stuff and I had no trouble fixing syntax errors etc. My only problem is: my trigger doesn't do what it's supposed to, in fact it doesn't do anything at all.
So here it is, basic idea is to check for certain items in the inventory, then remove those items and place a new one in the inventory. (You could compare it to creating a fire kit out of a stick, a tinder and a flint as in troll tribes).

JASS:
function Building_Campfire_Condition takes nothing returns boolean
    local unit u = GetTriggerUnit()
    local integer i = 1
    local integer invsize = UnitInventorySize(u) + 1
    local boolean hasitema = false
    local boolean hasitemb = false
    local boolean hasitemc = false
    local boolean isspell = (GetSpellAbilityId() == 'A000')
    //check if items are in inventory
    loop
        if GetItemTypeId(UnitItemInSlot(u, i)) == 'I001' then
            set hasitema = true
        elseif GetItemTypeId(UnitItemInSlot(u, i)) == 'I002' then
            set hasitemb = true
        elseif GetItemTypeId(UnitItemInSlot(u, i)) == 'I000' then
            set hasitemc = true
        endif
        exitwhen i >= invsize
        set i = i + 1
    endloop
    //return true if its the right spell and all items are present
    set u = null
    if (hasitema == false) then
        return false
    elseif (hasitemb == false) then
        return false
    elseif (hasitemc == false) then
        return false
    elseif (isspell == false) then
        return false
    else
        return true
    endif
endfunction


function Building_Campfire_Action takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local integer i = 1
    local integer invsize = UnitInventorySize(u)
    local boolean isremoveda = false
    local boolean isremovedb = false
    local boolean isremovedc = false
    //remove materials from slots
    loop
        if GetItemTypeId(UnitItemInSlot(u, i)) == 'I001' then
            if isremoveda == false then
                call RemoveItem(UnitItemInSlot(u, i))
                set isremoveda = true
            endif
        elseif GetItemTypeId(UnitItemInSlot(u, i)) == 'I002' then
            if isremovedb == false then
                call RemoveItem(UnitItemInSlot(u, i))
                set isremovedb = true
            endif
        elseif GetItemTypeId(UnitItemInSlot(u, i)) == 'I000' then
            if isremovedc == false then
                call RemoveItem(UnitItemInSlot(u, i))
                set isremovedc = true
            endif
        endif
        exitwhen i >= invsize
        set i = i + 1
    endloop
    //place item in inventory
    call UnitAddItemById(u, 'I004')
    set u = null
endfunction


function Inittrig_Building_Campfire takes nothing returns nothing
    local trigger gg_trg_building_campfire = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_building_campfire, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(gg_trg_building_campfire, Condition(function Building_Campfire_Condition))
    call TriggerAddAction(gg_trg_building_campfire, function Building_Campfire_Action)
endfunction

Problem: When I execute the ability on a character, nothing happens (with all required items in the inventory).
 
Status
Not open for further replies.
Top