Even enemy's Hero get assistant EXP (Normal their can't get).
JASS:
function Trig_Player_HeroDryLTB_Conditions takes nothing returns boolean
local unit HeroKiller = GetKillingUnit()
local unit HeroKilled = GetDyingUnit()
local player PlayerOwnHeroKilled = GetOwningPlayer(HeroKilled)
local integer N = 1
if (GetUnitTypeId(HeroKilled) == 'U000') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U001') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U002') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U003') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U004') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U005') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U006') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U00B') then
set N = 0
elseif (GetUnitTypeId(HeroKilled) == 'U00C') then
set N = 0
elseif (IsUnitIllusionBJ(HeroKilled) == true) then
set N = 0
elseif (IsUnitType(HeroKilled, UNIT_TYPE_HERO) == false) then
set N = 0
elseif (IsUnitEnemy(HeroKiller, PlayerOwnHeroKilled) == false) then
set N = 0
endif
set HeroKiller = null
set HeroKilled = null
set PlayerOwnHeroKilled = null
if ( N == 1) then
return true
else
return false
endif
endfunction
function Player_Own_Player_and_Hero001 takes unit HeroA returns boolean
local integer N =1
if (IsUnitType(HeroA, UNIT_TYPE_HERO) == false ) then
set N = 0
elseif (GetUnitTypeId(HeroA) == 'U000') then
set N = 0
elseif (GetUnitTypeId(HeroA) == 'U001') then
set N = 0
elseif (GetUnitTypeId(HeroA) == 'U002') then
set N = 0
elseif (GetUnitTypeId(HeroA) == 'U003') then
set N = 0
elseif (GetUnitTypeId(HeroA) == 'U004') then
set N = 0
elseif (GetUnitTypeId(HeroA) == 'U005') then
set N = 0
endif
if ( N == 1 ) then
return true
else
return false
endif
endfunction
function HeroDryLTB_ClearNoUse takes nothing returns nothing
local unit NextUnit = GetEnumUnit()
if (Player_Own_Player_and_Hero001(NextUnit) == false) then
call GroupRemoveUnitSimple( NextUnit, udg_UnitGroup_SpellEffect02 )
endif
set NextUnit = null
endfunction
function Hero_Have_ManaRegenKA_Item takes unit HeroA returns integer
local integer N = 0
if (UnitHasItemOfTypeBJ(HeroA, 'I006') == true) then
set N = 1
elseif (UnitHasItemOfTypeBJ(HeroA, 'I08V') == true) then
set N = 1
elseif (UnitHasItemOfTypeBJ(HeroA, 'I08W') == true) then
set N = 1
elseif (UnitHasItemOfTypeBJ(HeroA, 'I016') == true) then
set N = 1
elseif (UnitHasItemOfTypeBJ(HeroA, 'I01A') == true) then
set N = 1
elseif (UnitHasItemOfTypeBJ(HeroA, 'I01B') == true) then
set N = 1
endif
return N
endfunction
function HeroDryLTB_KillAssWork_Killer takes nothing returns nothing
local unit HeroKiller = GetEnumUnit()
local real HeroCurrentMana = 0.000
local integer EXPExtra = udg_UnitGroup_IntegerSent
local integer EXPGainSS = IMaxBJ((udg_GPlayTime + 100) / 2 + EXPExtra,50)
if (Hero_Have_ManaRegenKA_Item(HeroKiller)>0) then
set HeroCurrentMana = GetUnitState(HeroKiller,UNIT_STATE_MANA) + GetUnitState(HeroKiller,UNIT_STATE_MAX_MANA)*0.15
call SetUnitManaBJ( HeroKiller, HeroCurrentMana )
endif
call AddHeroXPSwapped( EXPGainSS, HeroKiller, true )
set HeroKiller = null
endfunction
function HeroDryLTB_KillAssWork_Asster takes nothing returns nothing
local unit HeroKiller = GetEnumUnit()
local real HeroCurrentMana = 0.000
local integer EXPExtra = udg_UnitGroup_IntegerSent
local integer EXPGainSS = IMaxBJ((udg_GPlayTime + 100) / 3 + EXPExtra/2,35)
if (Hero_Have_ManaRegenKA_Item(HeroKiller)>0) then
set HeroCurrentMana = GetUnitState(HeroKiller,UNIT_STATE_MANA) + GetUnitState(HeroKiller,UNIT_STATE_MAX_MANA)*0.15
call SetUnitManaBJ( HeroKiller, HeroCurrentMana )
endif
call DisplayTextToForce( GetPlayersAll(), I2S(EXPGainSS) )
call AddHeroXPSwapped( EXPGainSS, HeroKiller, true )
set HeroKiller = null
endfunction
function Trig_Player_HeroDryLTB_Actions takes nothing returns nothing
local unit HeroKiller = GetKillingUnit()
local unit HeroKilled = GetDyingUnit()
local player PlayerOwnHeroKiller = GetOwningPlayer(HeroKiller)
local player PlayerOwnHeroKilled = GetOwningPlayer(HeroKilled)
local integer OKN = GetConvertedPlayerId(PlayerOwnHeroKiller)-1
local integer ODN = GetConvertedPlayerId(PlayerOwnHeroKilled)-1
local integer I = 0
local integer I1 = udg_MaxPlayerJoinGame - 1
local real TaxK1 = udg_P_HeroS001_Kill[OKN] - udg_P_HeroS002_Die[OKN] + udg_P_HeroS003_Ass[OKN] / 5
local real TaxK2 = TaxK1 + udg_P_HeroS005_DeniceHero[OKN] + udg_P_HeroS006_DeniceMinion[OKN] / 5
local real TaxK3 = TaxK2 + udg_P_HeroS007_ChainKill[OKN] - udg_P_HeroS008_ChainDie[OKN]
local real BTaxK1 = udg_P_HeroS001_Kill[ODN] - udg_P_HeroS002_Die[ODN] + udg_P_HeroS003_Ass[ODN] / 5
local real BTaxK2 = BTaxK1 - udg_P_HeroS005_DeniceHero[ODN] - udg_P_HeroS006_DeniceMinion[ODN] / 5
local real BTaxK3 = BTaxK2 + udg_P_HeroS007_ChainKill[ODN] - udg_P_HeroS008_ChainDie[ODN]
local real FTaxK = 300 + (BTaxK3-TaxK3) * 15
local integer BountMoney = IMaxBJ(R2I(FTaxK),25)
local integer AssMoney = IMaxBJ(R2I(FTaxK),25)/3
if ( OKN < I1 ) then
set udg_P_HeroS001_Kill[OKN] = udg_P_HeroS001_Kill[OKN] + 1
set udg_P_HeroS007_ChainKill[OKN] = udg_P_HeroS007_ChainKill[OKN] + 1
set udg_P_HeroS008_ChainDie[OKN] = 0
set udg_P_HeroS009_CooldownKill [OKN] = 60
set udg_P_HeroS010_ComboKill[OKN] = udg_P_HeroS010_ComboKill[OKN] + 1
endif
if ( ODN < I1 ) then
set udg_P_HeroS002_Die[ODN] = udg_P_HeroS002_Die[ODN] + 1
set udg_P_HeroS008_ChainDie[ODN] = udg_P_HeroS008_ChainDie[ODN] + 1
set udg_P_HeroS007_ChainKill[ODN] = 0
endif
call AdjustPlayerStateBJ( BountMoney, PlayerOwnHeroKiller, PLAYER_STATE_RESOURCE_GOLD )
call GroupClear(udg_UnitGroup_SpellEffect02)
set udg_UnitGroup_IntegerSent = R2I((BTaxK3-TaxK3) * 15)
set udg_UnitGroup_SpellEffect02 = GetUnitsOfPlayerAll(Player(OKN))
call ForGroup(udg_UnitGroup_SpellEffect02, function HeroDryLTB_ClearNoUse )
call ForGroup(udg_UnitGroup_SpellEffect02, function HeroDryLTB_KillAssWork_Killer )
call GroupClear(udg_UnitGroup_SpellEffect02)
if (ODN == 0) then
set udg_GPlayer01_HeroBeHit[OKN] = 0
loop
exitwhen I > I1
if (udg_GPlayer01_HeroBeHit[I] > 0) then
set udg_P_HeroS003_Ass[I] = udg_P_HeroS003_Ass[I] + 1
call AdjustPlayerStateBJ( AssMoney, Player(I), PLAYER_STATE_RESOURCE_GOLD )
call GroupClear(udg_UnitGroup_SpellEffect04)
set udg_UnitGroup_SpellEffect04 = GetUnitsOfPlayerAll(Player(I))
call ForGroup(udg_UnitGroup_SpellEffect04, function HeroDryLTB_ClearNoUse )
call ForGroup(udg_UnitGroup_SpellEffect04, function HeroDryLTB_KillAssWork_Asster )
call GroupClear(udg_UnitGroup_SpellEffect04)
set udg_GPlayer01_HeroBeHit[I] = 0
endif
set I = I +1
endloop
endif
set HeroKiller = null
set HeroKilled = null
set PlayerOwnHeroKiller = null
set PlayerOwnHeroKilled = null
set udg_UnitGroup_IntegerSent = 0
call GroupClear(udg_UnitGroup_SpellEffect02)
call GroupClear(udg_UnitGroup_SpellEffect04)
endfunction
//===========================================================================
function InitTrig_Player_HeroDryLTB takes nothing returns nothing
set gg_trg_Player_HeroDryLTB = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Player_HeroDryLTB, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddCondition( gg_trg_Player_HeroDryLTB, Condition( function Trig_Player_HeroDryLTB_Conditions ) )
call TriggerAddAction( gg_trg_Player_HeroDryLTB, function Trig_Player_HeroDryLTB_Actions )
endfunction
Attachments
Last edited: