You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.5 KiB
64 lines
2.5 KiB
#ifndef YDWEItemAbilitySystemIncluded
|
|
#define YDWEItemAbilitySystemIncluded
|
|
|
|
#include "YDWEBase.j"
|
|
|
|
library YDWEItemAbilitySystem initializer YDWEItemAbilitySystemInit requires YDWEBase
|
|
|
|
//===========================================================================
|
|
//物品属性系
|
|
//===========================================================================
|
|
function YDWEItemAbilityStorage takes integer itid,integer ab returns nothing
|
|
local integer index = YDWEGetIntegerByString(I2S(itid),"AbilityStorageIndex")
|
|
set index = index + 1
|
|
call YDWESaveIntegerByString(I2S(itid),"AbilityStorage"+I2S(index),ab)
|
|
call YDWESaveIntegerByString(I2S(itid),"AbilityStorageIndex",index)
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//拾取物品触发
|
|
//===========================================================================
|
|
function YDWEItemAbilitySystemByAbility_CON takes nothing returns boolean
|
|
local unit hero = GetTriggerUnit()
|
|
local item it=GetManipulatedItem()
|
|
local trigger trg=YDWEGetTriggerByString(I2S(YDWEH2I(hero)), "MulItemSlotByAbility")
|
|
local integer itid=GetItemTypeId(it)
|
|
local integer index = YDWEGetIntegerByString(I2S(itid),"AbilityStorageIndex")
|
|
local integer array skills
|
|
local integer i=0
|
|
local integer N=YDWEGetIntegerByString(I2S(YDWEH2I(trg)), "ItemSlotNum")
|
|
local boolean OnOff=YDWEGetBooleanByString(I2S(YDWEH2I(hero)), "YDWEItemAbilitySystemTriggerClose")
|
|
if index==0 or OnOff==true then
|
|
set it=null
|
|
set hero=null
|
|
set trg=null
|
|
return false
|
|
endif
|
|
loop
|
|
set i=i+1
|
|
exitwhen i>index
|
|
set skills[i] = YDWEGetIntegerByString(I2S(itid),"AbilityStorage"+I2S(i))
|
|
if GetTriggerEventId()==EVENT_PLAYER_UNIT_DROP_ITEM then
|
|
call UnitRemoveAbility(hero,skills[i])
|
|
elseif GetTriggerEventId()==EVENT_PLAYER_UNIT_PICKUP_ITEM then
|
|
call UnitAddAbility(hero,skills[i])
|
|
call UnitMakeAbilityPermanent(hero,true,skills[i])
|
|
endif
|
|
endloop
|
|
set it=null
|
|
set hero=null
|
|
set trg=null
|
|
return false
|
|
endfunction
|
|
|
|
function YDWEItemAbilitySystemInit takes nothing returns nothing
|
|
local trigger trg = CreateTrigger()
|
|
call TriggerRegisterAnyUnitEventBJ(trg,EVENT_PLAYER_UNIT_PICKUP_ITEM)
|
|
call TriggerRegisterAnyUnitEventBJ(trg,EVENT_PLAYER_UNIT_DROP_ITEM)
|
|
call TriggerAddCondition(trg, Condition(function YDWEItemAbilitySystemByAbility_CON))
|
|
set trg=null
|
|
endfunction
|
|
|
|
endlibrary
|
|
|
|
#endif
|
|
|