Name | Type | is_array | initial_value |
AbiAmount | integer | No | |
AbilityBase | abilcode | Yes | |
ArmorFortified | string | No | |
ArmorHeavy | string | No | |
ArmorType | string | Yes | |
ArmorUnnarmored | string | No | |
AutoHealText | string | Yes | |
AutoHealTreshold | real | Yes | |
BuildPeriodTime | integer | No | |
CheckpointRegion | rect | Yes | |
Color | string | Yes | |
ColorName | string | Yes | |
CreepCount | integer | No | |
CreepsAliveCount | integer | No | |
CreepSpawns | integer | Yes | |
CreepType | unitcode | Yes | |
CS_PlayersPlaying | force | No | |
CS_SoundPoint | location | Yes | |
CurseTimer | timer | Yes | |
Dialog_Mode | dialog | No | |
DialogButtons | button | Yes | |
DifficultyText | string | Yes | |
FirstWaveTimer | timer | No | |
Force | force | No | |
GoldLevel | integer | Yes | |
Group | group | No | |
HasHealed | boolean | Yes | |
HealText | string | Yes | |
Income_array | integer | Yes | |
IncomeAreaRegion | rect | Yes | |
IncomePerCreep | integer | Yes | |
IsPlaying | boolean | Yes | |
ItemBase | itemcode | Yes | |
KingReg_array | rect | Yes | |
KingsArray | unit | Yes | |
KingsCursing | group | No | |
Level | integer | No | |
Lives | integer | Yes | |
loc | location | Yes | |
LoopInt1 | integer | No | |
LoopInt2 | integer | No | |
MaxLevel | integer | No | |
PengAmount | integer | Yes | |
PenguinWorkRegion | rect | Yes | |
Player_array | player | Yes | |
Player_Count | integer | No | |
Players | force | No | |
PlayersPlaying | force | No | |
Point | location | No | |
RegBarrackArray | rect | Yes | |
RegCastleArray | rect | Yes | |
RegCursedLodgeArray | rect | Yes | |
RegEliteBarrackArray | rect | Yes | |
SellCount | integer | No | |
SellGold | integer | Yes | |
SellLumber | integer | Yes | |
SellType | unitcode | Yes | |
SellValueG | real | No | |
SellValueL | real | No | |
SendableCreeps | unitcode | Yes | |
SinglePlayer | boolean | No | |
SpawnInterval | real | Yes | |
SpawnRects | rect | Yes | |
Spawns | force | No | |
SpecialWave | string | Yes | |
StatLevel | integer | No | |
StatLevelMax | integer | No | |
Temp_Player | player | No | |
Temp_Unit | unit | No | |
TempInt | integer | No | |
TempInt2 | integer | No | |
TempLoc | location | No | |
TempPlayer | player | No | |
TempPlayerId | integer | No | |
TowerType0 | unitcode | Yes | |
TowerType1 | unitcode | Yes | |
TreeRegion | rect | Yes | |
TutorPlayer | player | No | |
WaveMultBord | string | Yes | |
WaveMultBordC | string | Yes | |
WaveNotify | string | Yes | |
WaveTime | real | No | |
XCorpse | group | No | |
XTemp_Force | force | No | |
XTemp_LoopInt | integer | No | |
XTemp_LoopInt2 | integer | No | |
XTemp_LoopInt3 | integer | No | |
XTemp_Point | location | No |
function Trig_AbiInit_Actions takes nothing returns nothing
set udg_AbilityBase[1] = 'AKim'
set udg_ItemBase[1] = 'IKim'
set udg_AbilityBase[2] = 'AKsw'
set udg_ItemBase[2] = 'IKsw'
set udg_AbilityBase[3] = 'A00A'
set udg_ItemBase[3] = 'I000'
set udg_AbilityBase[4] = 'A00F'
set udg_ItemBase[4] = 'I001'
set udg_AbiAmount = 4
endfunction
//===========================================================================
function InitTrig_AbiInit takes nothing returns nothing
set gg_trg_AbiInit = CreateTrigger( )
call TriggerAddAction( gg_trg_AbiInit, function Trig_AbiInit_Actions )
endfunction
//
// Curse System by VictorAlvarado AKA iam20842
// - this system allow you to curse all enemy players
// - use a store with DUMMY UNITS selling (for avoid inventory full limit)
//
globals
hashtable CS_ActiveCurses = InitHashtable()
integer array CS_CurseDummyUnits
integer array CS_DebuffDummyUnits
integer array CS_DebuffStart
integer array CS_DebuffEnd
integer array CS_CurseTechIds
integer CS_CurseSeller = 'h00C'
integer CS_MaxCurses = 0
integer CS_MaxDebuff = 0
integer CS_MaxPlayersPlayingCount = 8
real array CS_CurseDuration
string array CS_PlayersColors
integer array CS_GetDebuffFor
boolean array CS_CurseAvailable
integer array CS_GetCurseFor
integer CS_FOR_CREEP = 0
integer CS_FOR_TOWER = 1
integer CS_FOR_KING = 2
integer CS_FOR_BOTH // CREEP AND TOWER
// CS_ActiveCurses CHILDKEYS
integer CS_PLAYER_ID = 0
integer CS_CURSE_ID = 1
endglobals
function CS_IsDebuff takes unit dummy returns boolean
local integer i = 0
local integer dummy_type_id = GetUnitTypeId(dummy)
loop
exitwhen i > CS_MaxDebuff
if CS_DebuffDummyUnits[i] == dummy_type_id then
return true
endif
set i = i + 1
endloop
return false
endfunction
function CS_GetDebuffId takes unit dummy returns integer
local integer i = 0
local integer dummy_type_id = GetUnitTypeId(dummy)
local integer response = -1
loop
exitwhen i > CS_MaxDebuff
if CS_DebuffDummyUnits[i] == dummy_type_id then
set response = i
endif
set i = i + 1
endloop
return response
endfunction
function CS_Debuff takes player caster, unit dummy returns nothing
local integer caster_id = GetPlayerId(caster)
local integer ally_id = caster_id + 8
local integer tech_id
local integer tech_before_level
local integer tech_after_level
local integer clock_id
local integer debuff_id = CS_GetDebuffId(dummy)
local integer debuff_start = CS_DebuffStart[debuff_id]
local integer debuff_end = CS_DebuffEnd[debuff_id]
local integer debuff_count_a
local integer debuff_count_b
local timer clock
local integer isDebuffFor = CS_GetDebuffFor[debuff_id]
local player ally = Player(ally_id)
if (isDebuffFor == CS_FOR_BOTH) then
set debuff_count_a = debuff_start
// SELF DEBUFF (TOWER+CREEP)
loop
exitwhen debuff_count_a > debuff_end
set tech_id = CS_CurseTechIds[debuff_count_a]
set tech_before_level = GetPlayerTechCountSimple(tech_id, caster)
set tech_after_level = tech_before_level - 1
call SetPlayerTechResearchedSwap(tech_id, tech_after_level, caster)
set clock = LoadTimerHandle(CS_ActiveCurses, caster_id, debuff_count_a)
set clock_id = GetHandleId(clock)
call FlushChildHashtable(CS_ActiveCurses, clock_id)
call FlushChildHashtable(CS_ActiveCurses, caster_id)
set CS_CurseAvailable[debuff_count_a] = true
call PauseTimer(clock)
call DestroyTimer(clock)
set clock = null
set debuff_count_a = debuff_count_a + 1
endloop
// CREEP ALLIES
set debuff_count_a = debuff_start
loop
exitwhen debuff_count_a > debuff_end
set tech_id = CS_CurseTechIds[debuff_count_a]
set tech_before_level = GetPlayerTechCountSimple(tech_id, ally)
set tech_after_level = tech_before_level - 1
call SetPlayerTechResearchedSwap(tech_id, tech_after_level, ally)
set clock = LoadTimerHandle(CS_ActiveCurses, ally_id, debuff_count_a)
set clock_id = GetHandleId(clock)
call FlushChildHashtable(CS_ActiveCurses, clock_id)
call FlushChildHashtable(CS_ActiveCurses, ally_id)
set CS_CurseAvailable[debuff_count_a] = true
call PauseTimer(clock)
call DestroyTimer(clock)
set clock = null
set debuff_count_a = debuff_count_a + 1
endloop
elseif(isDebuffFor == CS_FOR_KING) then
// DEBUFF KING
set debuff_count_a = debuff_start
loop
exitwhen debuff_count_a > debuff_end
set tech_id = CS_CurseTechIds[debuff_count_a]
set tech_before_level = GetPlayerTechCountSimple(tech_id, caster)
set tech_after_level = tech_before_level - 1
call SetPlayerTechResearchedSwap(tech_id, tech_after_level, caster)
set clock = LoadTimerHandle(CS_ActiveCurses, caster_id, debuff_count_a)
set clock_id = GetHandleId(clock)
call FlushChildHashtable(CS_ActiveCurses, clock_id)
call FlushChildHashtable(CS_ActiveCurses, caster_id)
set CS_CurseAvailable[debuff_count_a] = true
call PauseTimer(clock)
call DestroyTimer(clock)
set clock = null
set debuff_count_a = debuff_count_a + 1
endloop
endif
call DisplayTextToPlayer(caster, 0, 0, CS_PlayersColors[caster_id] + GetPlayerName(caster) +"|r" + " your curses were removed by the gods!")
call PlaySoundAtPointBJ( gg_snd_DivineShield, 100, udg_CS_SoundPoint[caster_id], 0 )
endfunction
function CS_IsCurse takes unit dummy returns boolean
local integer i = 0
local integer dummy_type_id = GetUnitTypeId(dummy)
loop
exitwhen i > CS_MaxCurses
if CS_CurseDummyUnits[i] == dummy_type_id then
return true
endif
set i = i + 1
endloop
return false
endfunction
function CS_IsCurseAvailable takes integer curse_id returns boolean
local boolean response = CS_CurseAvailable[curse_id]
return response
endfunction
function CS_GetCurseId takes unit dummy returns integer
local integer i = 0
local integer dummy_type_id = GetUnitTypeId(dummy)
local integer response = -1
loop
exitwhen i > CS_MaxCurses
if CS_CurseDummyUnits[i] == dummy_type_id then
set response = i
endif
set i = i + 1
endloop
return response
endfunction
function Trig_CSys_Configuration_Actions takes nothing returns nothing
local integer dummy_unit
local integer upgrade_id
local real duration
local integer dummy_debuff
local integer debuff_start
local integer debuff_end
// Adding more curse than 14.
// * You can copy and paste the Curse Seller and set new curse dummy units :D
// Setting a new curse
// * Create the dummy unit (see examples)
// * Add it to the Curse Store
// * Create the upgrade (see examples)
// * Add the upgrade to the units
// * set here the next values based on that dummy unit and upgrade
// 1. dummy_unit is the raw unit code (control + d)
// 2. upgrade_id is the raw upgrade code (control + d)
// 3. duration is the duration of the course
// 4. Be default we set the curse available for the players (TRUE value)
// 5. CurseSelf this value is for apply the effect over your units or enemy creeps :D
// Curse is based on upgrades BUT i want a curse with an effect that dont appear like upgrade, let say... reduce attack damage by %
// for this case you can use the upgrade Ability Level Bonus
// for that you need to create a unit spell with 2 level.
// Level 1: will have only 0 values, this is a dummy spell
// Level 2: will have the real values
// Add the spell to the unit
// see King attack damage or tower damage for an example
// ADD for every unit/building cursed the Curse Effect Aura ;)
// Creep Mov Speed 0
set dummy_unit = 'n01E'
set upgrade_id = 'R008'
set duration = 75.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_CREEP
set CS_MaxCurses = CS_MaxCurses + 1
// Creep Health 1
set dummy_unit = 'n01G'
set upgrade_id = 'R007'
set duration = 75.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_CREEP
set CS_MaxCurses = CS_MaxCurses + 1
// Tower Attack Damage 2
set dummy_unit = 'n01F'
set upgrade_id = 'R00D'
set duration = 75.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_TOWER
set CS_MaxCurses = CS_MaxCurses + 1
// Tower Attack Speed 3
set dummy_unit = 'n01L'
set upgrade_id = 'R00E'
set duration = 75.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_TOWER
set CS_MaxCurses = CS_MaxCurses + 1
// King Attack Damage 4
set dummy_unit = 'n01K'
set upgrade_id = 'R009'
set duration = 30.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_KING
set CS_MaxCurses = CS_MaxCurses + 1
// King Attack Speed 5
set dummy_unit = 'n01I'
set upgrade_id = 'R00A'
set duration = 30.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_KING
set CS_MaxCurses = CS_MaxCurses + 1
// King Health Regen 6
set dummy_unit = 'n01J'
set upgrade_id = 'R00B'
set duration = 30.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_KING
set CS_MaxCurses = CS_MaxCurses + 1
// King Mana Regen 7
set dummy_unit = 'n01M'
set upgrade_id = 'R00C'
set duration = 60.0
set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
set CS_CurseDuration[CS_MaxCurses] = duration
set CS_CurseAvailable[CS_MaxCurses] = TRUE
set CS_GetCurseFor[CS_MaxCurses] = CS_FOR_KING
set CS_MaxCurses = CS_MaxCurses + 1
// --- New Curse ---
//set dummy_unit = 'h007'
//set upgrade_id = 'R007'
//set duration = 30.0
//set CS_CurseDummyUnits[CS_MaxCurses] = dummy_unit
//set CS_CurseTechIds[CS_MaxCurses] = upgrade_id
//set CS_CurseDuration[CS_MaxCurses] = duration
//set CS_CurseAvailable[CS_MaxCurses] = TRUE
//set CS_MaxCurses = CS_MaxCurses + 1
// Setting a new debuff:
// * Create the dummy unit (see examples)
// * Add it to the Curse Store
// * set here the next values based on that dummy unit
// 1. dummy_debuff is the raw unit code (control + d)
// 2. debuff_start is the start value of the range of curse id that will be removed from player
// 3. debuff_end is the end value of the range of curse id that will be removed from player
// if you want to remove attack speed, attack damage and turn rate from creep you need to set
// the index of that curse like 1,2,3 or 6,7,8 because the debuff will loop in the start/end range for delete them
// Creep Debuff & Tower Debuff
set dummy_debuff = 'n01D'
set debuff_start = 0
set debuff_end = 3
set CS_DebuffDummyUnits[1] = dummy_debuff
set CS_DebuffStart[1] = debuff_start
set CS_DebuffEnd[1] = debuff_end
set CS_MaxDebuff = CS_MaxDebuff + 1
set CS_GetDebuffFor[CS_MaxDebuff] = CS_FOR_BOTH
// King Debuff
set dummy_debuff = 'n01H'
set debuff_start = 4
set debuff_end = 7
set CS_DebuffDummyUnits[2] = dummy_debuff
set CS_DebuffStart[2] = debuff_start
set CS_DebuffEnd[2] = debuff_end
set CS_MaxDebuff = CS_MaxDebuff + 1
set CS_GetDebuffFor[CS_MaxDebuff] = CS_FOR_KING
// Players Colors
set CS_PlayersColors[0] = "|cffff0303"
set CS_PlayersColors[1] = "|cff0042ff"
set CS_PlayersColors[2] = "|cff1ce6b9"
set CS_PlayersColors[3] = "|cff540081"
set CS_PlayersColors[4] = "|cfffffc00"
set CS_PlayersColors[5] = "|cfffe8a0e"
set CS_PlayersColors[6] = "|cff20c000"
set CS_PlayersColors[7] = "|cffe55bb0"
endfunction
//===========================================================================
function InitTrig_CSys_Configuration takes nothing returns nothing
local trigger trig = CreateTrigger( )
call TriggerRegisterTimerEventSingle( trig, 0.00 )
call TriggerAddAction( trig, function Trig_CSys_Configuration_Actions )
endfunction
function CS_RemoveCurse takes nothing returns nothing
local timer clock = GetExpiredTimer()
local integer clock_id = GetHandleId(clock)
local integer player_id = LoadInteger(CS_ActiveCurses, clock_id, CS_PLAYER_ID)
local integer curse_id = LoadInteger(CS_ActiveCurses, clock_id, CS_CURSE_ID)
local integer tech_id = CS_CurseTechIds[curse_id]
local integer tech_after_level = GetPlayerTechCountSimple(tech_id, Player(player_id))
local integer tech_before_level = tech_after_level - 1
local integer isCurseFor = CS_GetCurseFor[curse_id]
call SetPlayerTechResearchedSwap(tech_id, tech_before_level, Player(player_id))
call FlushChildHashtable(CS_ActiveCurses, clock_id)
call FlushChildHashtable(CS_ActiveCurses, player_id)
call PauseTimer(clock)
call DestroyTimer(clock)
set CS_CurseAvailable[curse_id] = true
set clock = null
if (isCurseFor == CS_FOR_KING or isCurseFor == CS_FOR_TOWER) then
call DisplayTextToPlayer(Player(player_id), 0, 0, CS_PlayersColors[player_id] + GetPlayerName(Player(player_id)) + "|r" + "|cffff0000the curse has banished|r")
call PlaySoundAtPointBJ( gg_snd_DispelMagicTarget, 100, udg_CS_SoundPoint[player_id], 0 )
else
call DisplayTextToPlayer(Player(player_id-8), 0, 0, CS_PlayersColors[player_id-8] + GetPlayerName(Player(player_id-8)) + "|r" + "|cffff0000the curse has banished|r")
call PlaySoundAtPointBJ( gg_snd_DispelMagicTarget, 100, udg_CS_SoundPoint[player_id-8], 0 )
endif
endfunction
function CS_ApplyCurse takes integer curse_id, player caster returns nothing
local player enemy
local player enemy_creep
local player caster_creep
local timer clock
local integer enemy_id
local integer enemy_creep_id
local integer i
local integer clock_id
local integer tech_after_level
local integer tech_before_level
local integer tech_id = CS_CurseTechIds[curse_id]
local integer isCurseFor = CS_GetCurseFor[curse_id]
local real duration = CS_CurseDuration[curse_id]
set i = 0
loop
if (isCurseFor == CS_FOR_KING or isCurseFor == CS_FOR_TOWER) then
// CURSE FOR THE KING OR TOWER
set enemy = Player(i)
if not (enemy == caster) then
set clock = CreateTimer()
set clock_id = GetHandleId(clock)
set tech_before_level = GetPlayerTechCountSimple(tech_id, enemy)
set tech_after_level = tech_before_level + 1
set enemy_id = GetPlayerId(enemy)
call SetPlayerTechResearchedSwap(tech_id, tech_after_level, enemy)
call SaveInteger(CS_ActiveCurses, clock_id, CS_PLAYER_ID, enemy_id)
call SaveInteger(CS_ActiveCurses, clock_id, CS_CURSE_ID, curse_id)
call SaveTimerHandle(CS_ActiveCurses, enemy_id, curse_id, clock)
call TimerStart(clock, duration, false, function CS_RemoveCurse)
call DisplayTextToPlayer(enemy, 0,0, ((CS_PlayersColors[enemy_id]) + GetPlayerName(enemy) +"|r" + " |cffff0000you have been cursed!|r"))
call PlaySoundAtPointBJ( gg_snd_SoulPreservation, 100, udg_CS_SoundPoint[enemy_id], 0)
endif
elseif (isCurseFor == CS_FOR_CREEP) then
set enemy = Player(i)
set enemy_id = GetPlayerId(enemy)
set enemy_creep = Player(i+8)
set enemy_creep_id = GetPlayerId(enemy_creep)
set caster_creep = Player(GetPlayerId(caster) + 8)
if not (enemy_creep == caster_creep) then
set clock = CreateTimer()
set clock_id = GetHandleId(clock)
set tech_before_level = GetPlayerTechCountSimple(tech_id, enemy_creep)
set tech_after_level = tech_before_level + 1
call SetPlayerTechResearchedSwap(tech_id, tech_after_level, enemy_creep)
call SaveInteger(CS_ActiveCurses, clock_id, CS_PLAYER_ID, enemy_creep_id)
call SaveInteger(CS_ActiveCurses, clock_id, CS_CURSE_ID, curse_id)
call SaveTimerHandle(CS_ActiveCurses, enemy_creep_id, curse_id, clock)
call TimerStart(clock, duration, false, function CS_RemoveCurse)
call DisplayTextToPlayer(enemy_creep, 0,0, ((CS_PlayersColors[enemy_id]) + GetPlayerName(enemy) +"|r" + " |cffff0000you have been cursed!|r"))
call PlaySoundAtPointBJ( gg_snd_SoulPreservation, 100, udg_CS_SoundPoint[enemy_id], 0)
endif
endif
set i = i + 1
exitwhen i == CS_MaxPlayersPlayingCount
endloop
endfunction
function Trig_CSys_Core_Conditions takes nothing returns boolean
local unit dummy
local boolean isCurse
local boolean isCurseAvailable
local boolean isDebuff
local integer dummy_id
local integer tech_id
local integer curse_id
local real duration
local player caster
local integer caster_id
if ( not ( GetUnitTypeId(GetSellingUnit()) == CS_CurseSeller ) ) then
return false
endif
set dummy = GetSoldUnit()
set isCurse = CS_IsCurse(dummy)
set isDebuff = CS_IsDebuff(dummy)
if not (isCurse) then
if not (isDebuff) then
return false
else
set caster = GetOwningPlayer(dummy)
call CS_Debuff(caster, dummy)
call RemoveUnit(dummy)
set dummy = null
return false
endif
endif
set dummy_id = GetUnitTypeId(dummy)
set curse_id = CS_GetCurseId(dummy)
set isCurseAvailable = CS_IsCurseAvailable(curse_id)
set caster = GetOwningPlayer(dummy)
set caster_id = GetPlayerId(caster)
if not (isCurseAvailable) then
call DisplayTextToPlayer(caster, 0, 0, CS_PlayersColors[caster_id] + GetPlayerName(caster) +"|r" + " |cffff0000This curse is not available|r")
set dummy = null
return false
endif
set CS_CurseAvailable[curse_id] = false
call CS_ApplyCurse(curse_id, caster)
call DisplayTextToPlayer(caster, 0, 0, CS_PlayersColors[caster_id] + GetPlayerName(caster) +"|r" + " |cffff0000You cast a curse!|r")
call RemoveUnit(dummy)
return true
endfunction
//===========================================================================
function InitTrig_CSys_Core takes nothing returns nothing
local trigger trig = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( trig, EVENT_PLAYER_UNIT_SELL )
call TriggerAddCondition( trig, Condition( function Trig_CSys_Core_Conditions ) )
endfunction