initial commit
This commit is contained in:
463
scripts/vscripts/abilities/abilityminamitsu.lua
Executable file
463
scripts/vscripts/abilities/abilityminamitsu.lua
Executable file
@@ -0,0 +1,463 @@
|
||||
local BasePoint =
|
||||
{
|
||||
[0] = Vector(-3880,1880,128),
|
||||
[1] = Vector(3880,1880,128),
|
||||
[2] = Vector(3880,-1880,128),
|
||||
[3] = Vector(-3880,-1880,128),
|
||||
}
|
||||
|
||||
local StartPoint1 =
|
||||
{
|
||||
[0] = Vector(-4300,1588,128),
|
||||
[1] = Vector(4300,1588,128),
|
||||
[2] = Vector(4300,-1588,128),
|
||||
[3] = Vector(-4300,-1588,128),
|
||||
}
|
||||
|
||||
local EndPoint1 =
|
||||
{
|
||||
[0] = Vector(-1750,1588,128),
|
||||
[1] = Vector(1750,1588,128),
|
||||
[2] = Vector(1750,-1588,128),
|
||||
[3] = Vector(-1750,-1588,128),
|
||||
}
|
||||
|
||||
local StartPoint2 =
|
||||
{
|
||||
[0] = Vector(-4150,4100,128),
|
||||
[1] = Vector(4150,4100,128),
|
||||
[2] = Vector(4150,-4100,128),
|
||||
[3] = Vector(-4150,-4100,128),
|
||||
}
|
||||
|
||||
local EndPoint2 =
|
||||
{
|
||||
[0] = Vector(-4150,1600,128),
|
||||
[1] = Vector(4150,1600,128),
|
||||
[2] = Vector(4150,-1600,128),
|
||||
[3] = Vector(-4150,-1600,128),
|
||||
}
|
||||
|
||||
function OnMinamitsu01SpellStart(keys)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
local hero = caster:GetOwner()
|
||||
local id = caster:GetPlayerOwnerID()
|
||||
|
||||
local targetPoint, forward
|
||||
local pos = caster:GetAbsOrigin()
|
||||
if math.abs(pos.x - BasePoint[id].x) > math.abs(pos.y - BasePoint[id].y) then
|
||||
targetPoint = StartPoint1[id]
|
||||
forward = (EndPoint1[id] - StartPoint1[id]):Normalized()
|
||||
caster.thtd_minamitsu_01_first = true
|
||||
caster.water_start_point = StartPoint1[id]
|
||||
caster.water_end_point = EndPoint1[id]
|
||||
else
|
||||
targetPoint = StartPoint2[id]
|
||||
forward = (EndPoint2[id] - StartPoint2[id]):Normalized()
|
||||
caster.thtd_minamitsu_01_first = false
|
||||
caster.water_start_point = StartPoint2[id]
|
||||
caster.water_end_point = EndPoint2[id]
|
||||
end
|
||||
|
||||
if caster.thtd_minamitsu_01_rect == nil then
|
||||
caster.thtd_minamitsu_01_rect = {}
|
||||
end
|
||||
|
||||
if caster.thtd_minamitsu_01_rect["effectIndexList"] ~= nil then
|
||||
for k,v in pairs(caster.thtd_minamitsu_01_rect["effectIndexList"]) do
|
||||
ParticleManager:DestroyParticleSystem(v,true)
|
||||
end
|
||||
end
|
||||
|
||||
caster.thtd_minamitsu_01_rect =
|
||||
{
|
||||
["rectOrigin"] = targetPoint,
|
||||
["rectForward"] = forward,
|
||||
["effectIndexList"] = {}
|
||||
}
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_minamitsu/ability_minamitsu_01_ship.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, targetPoint)
|
||||
ParticleManager:SetParticleControl(effectIndex, 1, forward*600)
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
||||
|
||||
|
||||
local time = 4
|
||||
caster:SetContextThink(DoUniqueString("thtd_minamitsu_01_move_think"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
if time > 0 then
|
||||
time = time - 0.2
|
||||
local waterIndex = ParticleManager:CreateParticle("particles/heroes/thtd_minamitsu/ability_minamitsu_01_ship_water.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(waterIndex, 3, targetPoint+forward*600*(4 - time))
|
||||
table.insert(caster.thtd_minamitsu_01_rect["effectIndexList"],waterIndex)
|
||||
return 0.2
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end,
|
||||
0)
|
||||
end
|
||||
|
||||
function OnMinamitsu01DebuffThink(keys)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
|
||||
if caster.thtd_minamitsu_01_rect ~= nil and caster.thtd_minamitsu_01_rect["rectOrigin"] ~= nil then
|
||||
if caster:THTD_IsHidden() then
|
||||
for k,v in pairs(caster.thtd_minamitsu_01_rect["effectIndexList"]) do
|
||||
ParticleManager:DestroyParticleSystem(v,true)
|
||||
end
|
||||
caster.thtd_minamitsu_01_rect =
|
||||
{
|
||||
["rectOrigin"] = nil,
|
||||
["rectForward"] = nil,
|
||||
["effectIndexList"] = {}
|
||||
}
|
||||
else
|
||||
local enemies = FindUnitsInLine(
|
||||
caster:GetTeamNumber(),
|
||||
caster.thtd_minamitsu_01_rect["rectOrigin"],
|
||||
caster.thtd_minamitsu_01_rect["rectOrigin"]+caster.thtd_minamitsu_01_rect["rectForward"]*2500,
|
||||
nil,
|
||||
300,
|
||||
DOTA_UNIT_TARGET_TEAM_ENEMY,
|
||||
DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
|
||||
0)
|
||||
for k,v in pairs(enemies) do
|
||||
local modifier = v:FindModifierByName("modifier_minamitsu_01_slow_buff")
|
||||
if modifier == nil then
|
||||
keys.ability:ApplyDataDrivenModifier(caster, v, "modifier_minamitsu_01_slow_buff", {duration=0.2})
|
||||
else
|
||||
modifier:SetDuration(0.2,false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function OnCreatedMinamitsu02Buff(keys)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
local target = keys.target
|
||||
|
||||
-- local effectIndex = ParticleManager:CreateParticle("particles/heroes/minamitsu/ability_minamitsu_03.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
-- ParticleManager:SetParticleControlEnt(effectIndex , 0, caster, 5, "attach_minamitsu_attack", Vector(0,0,0), true)
|
||||
|
||||
local powerBonus = 0
|
||||
local powerCd = 0
|
||||
local pv = caster:GetAbilityPowerValue(keys.ability:GetAbilityName())
|
||||
if pv ~= nil then
|
||||
powerBonus = pv[1]
|
||||
powerCd = pv[2]
|
||||
end
|
||||
if powerCd > 0 then
|
||||
caster:ReCooldown(keys.ability, powerCd)
|
||||
end
|
||||
|
||||
local effectIndex2 = ParticleManager:CreateParticle("particles/heroes/minamitsu/ability_minamitsu_03_body.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex2 , 0, caster, 5, "follow_origin", Vector(0,0,0), true)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex2 , 1, caster, 5, "follow_origin", Vector(0,0,0), true)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex2 , 3, caster, 5, "follow_origin", Vector(0,0,0), true)
|
||||
ParticleManager:SetParticleControlEnt(effectIndex2 , 4, caster, 5, "follow_origin", Vector(0,0,0), true)
|
||||
|
||||
ParticleManager:DestroyParticleSystemTime(effectIndex2, keys.ability_duration)
|
||||
|
||||
local bonus = keys.power_bonus + powerBonus
|
||||
target:THTD_AddPowerPercentage(bonus, "thtd_minamitsu_03_bonus")
|
||||
target:THTD_AddAttackPercentage(bonus, "thtd_minamitsu_03_bonus")
|
||||
end
|
||||
|
||||
function OnDestroyMinamitsu02Buff(keys)
|
||||
local target = keys.target
|
||||
target:THTD_AddPowerPercentage("thtd_minamitsu_03_bonus")
|
||||
target:THTD_AddAttackPercentage("thtd_minamitsu_03_bonus")
|
||||
end
|
||||
|
||||
function OnMinamitsu02AttackLanded(keys)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
local vecCaster = caster:GetOrigin()
|
||||
local target = keys.target
|
||||
|
||||
local targets = THTD_FindUnitsInRadius(caster,target:GetOrigin(),keys.Radius)
|
||||
local damage = caster:THTD_GetAbilityPowerDamage(keys.ability)
|
||||
for k,v in pairs(targets) do
|
||||
local damage_table = {
|
||||
ability = keys.ability,
|
||||
victim = v,
|
||||
attacker = caster,
|
||||
damage = damage,
|
||||
damage_type = keys.ability:GetAbilityDamageType(),
|
||||
damage_flags = keys.ability:GetAbilityTargetFlags()
|
||||
}
|
||||
UnitDamageTarget(damage_table)
|
||||
end
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/econ/items/kunkka/divine_anchor/hero_kunkka_dafx_weapon/kunkka_spell_tidebringer_fxset.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, vecCaster)
|
||||
ParticleManager:SetParticleControlForward(effectIndex, 0, caster:GetForwardVector())
|
||||
ParticleManager:SetParticleControl(effectIndex, 18, vecCaster)
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,false)
|
||||
end
|
||||
|
||||
function OnMinamitsu03SpellStart(keys)
|
||||
if keys.ability:GetLevel() < 1 then return end
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
|
||||
if caster.thtd_minamitsu_01_rect == nil or caster.thtd_minamitsu_01_rect["rectOrigin"] == nil then
|
||||
CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner(), "display_custom_error", {msg="only_water_area_use"})
|
||||
return
|
||||
end
|
||||
|
||||
local targetPoint = keys.target_points[1]
|
||||
local isValidPoint = false
|
||||
local id = caster:GetPlayerOwnerID()
|
||||
if caster.thtd_minamitsu_01_first == true then
|
||||
if math.abs(targetPoint.x - StartPoint1[id].x) + math.abs(targetPoint.x - EndPoint1[id].x) <= math.abs(StartPoint1[id].x - EndPoint1[id].x) + 10 and math.abs(targetPoint.y - StartPoint1[id].y) <= 250 then
|
||||
isValidPoint = true
|
||||
end
|
||||
else
|
||||
if math.abs(targetPoint.y - StartPoint2[id].y) + math.abs(targetPoint.y - EndPoint2[id].y) <= math.abs(StartPoint2[id].y - EndPoint2[id].y) + 10 and math.abs(targetPoint.x - StartPoint2[id].x) <= 250 then
|
||||
isValidPoint = true
|
||||
end
|
||||
end
|
||||
if isValidPoint then
|
||||
local vecCaster = caster:GetOrigin()
|
||||
local distance = GetDistanceBetweenTwoVec2D(vecCaster,targetPoint)
|
||||
local speed = distance * 0.03
|
||||
local rad = GetRadBetweenTwoVec2D(vecCaster,targetPoint)
|
||||
local vecHook = caster:GetOrigin()
|
||||
local forwardVector = caster:GetForwardVector()
|
||||
local timeCount = 0
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/minamitsu/ability_minamitsu_02_body.vpcf", PATTACH_CUSTOMORIGIN, nil)
|
||||
ParticleManager:SetParticleControl(effectIndex, 3, vecHook)
|
||||
ParticleManager:SetParticleControlForward(effectIndex, 3, forwardVector)
|
||||
|
||||
caster:SetContextThink(
|
||||
DoUniqueString("ability_thdots_minamitsu_02_stage_01"),
|
||||
function ()
|
||||
if GameRules:IsGamePaused() then
|
||||
return 0.03
|
||||
end
|
||||
timeCount = timeCount + 0.03
|
||||
distance = distance - speed
|
||||
if distance >= 0 then
|
||||
vecHook = vecHook + Vector(math.cos(rad)*speed,math.sin(rad)*speed,0)
|
||||
ParticleManager:SetParticleControl(effectIndex, 3, vecHook)
|
||||
else
|
||||
ParticleManager:DestroyParticleSystem(effectIndex,true)
|
||||
local effectIndex2 = ParticleManager:CreateParticle("particles/heroes/minamitsu/ability_minamitsu_02.vpcf", PATTACH_CUSTOMORIGIN, nil)
|
||||
ParticleManager:SetParticleControl(effectIndex2, 0, vecHook)
|
||||
ParticleManager:SetParticleControl(effectIndex2, 3, vecHook)
|
||||
Timer.Wait 'OnMinamitsu02Vortex' (0.5,
|
||||
function()
|
||||
caster:EmitSound("Voice_Thdots_Minamitsu.AbilityMinamitsu022")
|
||||
OnMinamitsu02Vortex(keys,caster.thtd_minamitsu_01_rect["rectOrigin"],caster.thtd_minamitsu_01_rect["rectForward"])
|
||||
end
|
||||
)
|
||||
Timer.Wait 'OnMinamitsu02Vortex' (3.2,
|
||||
function()
|
||||
ParticleManager:SetParticleControl(effectIndex2, 0, caster.thtd_minamitsu_01_rect["rectOrigin"]+caster.thtd_minamitsu_01_rect["rectForward"]*2500)
|
||||
ParticleManager:SetParticleControl(effectIndex2, 3, caster.thtd_minamitsu_01_rect["rectOrigin"]+caster.thtd_minamitsu_01_rect["rectForward"]*2500)
|
||||
end
|
||||
)
|
||||
return nil
|
||||
end
|
||||
return 0.03
|
||||
end,
|
||||
0.03
|
||||
)
|
||||
else
|
||||
keys.ability:EndCooldown()
|
||||
CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner(), "display_custom_error", {msg="only_water_area_use"})
|
||||
end
|
||||
end
|
||||
|
||||
function OnMinamitsu02Vortex(keys,origin,forward)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
local vecCaster = caster:GetOrigin()
|
||||
local targetPoint = keys.target_points[1]
|
||||
local distance = GetDistanceBetweenTwoVec2D(vecCaster,targetPoint)
|
||||
local rad = GetRadBetweenTwoVec2D(vecCaster,targetPoint)
|
||||
local timeCount = 0
|
||||
caster.ability_minamitsu_02_group = {}
|
||||
local range = keys.range
|
||||
|
||||
caster:SetContextThink(DoUniqueString("ability_thdots_minamitsu_02_stage_02"),
|
||||
function ()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
|
||||
timeCount = timeCount + 0.15
|
||||
local targets = THTD_FindUnitsInRadius(caster,targetPoint,range)
|
||||
local damage = caster:THTD_GetAbilityPowerDamage(keys.ability) * 0.15
|
||||
for k,v in pairs(targets) do
|
||||
if v:IsNull() == false and v~=nil then
|
||||
local damage_table = {
|
||||
ability = keys.ability,
|
||||
victim = v,
|
||||
attacker = caster,
|
||||
damage = damage,
|
||||
damage_type = keys.ability:GetAbilityDamageType(),
|
||||
damage_flags = keys.ability:GetAbilityTargetFlags()
|
||||
}
|
||||
UnitDamageTarget(damage_table)
|
||||
table.insert(caster.ability_minamitsu_02_group,v)
|
||||
|
||||
if v:HasModifier("modifier_minamitsu02_vortex_pause_target") == false then
|
||||
keys.ability:ApplyDataDrivenModifier( caster, v, "modifier_minamitsu02_vortex_pause_target", {} )
|
||||
end
|
||||
if v:HasModifier("modifier_minamitsu02_vortex_target") == false then
|
||||
local vecTarget = v:GetOrigin()
|
||||
local distance = GetDistanceBetweenTwoVec2D(vecTarget,targetPoint)
|
||||
local targetRad = GetRadBetweenTwoVec2D(targetPoint,vecTarget)
|
||||
if distance > 150 then
|
||||
v:SetAbsOrigin(Vector(vecTarget.x - math.cos(targetRad - math.pi/3) * 55 * 1.5, vecTarget.y - math.sin(targetRad - math.pi/3) * 55 * 1.5, vecTarget.z))
|
||||
else
|
||||
-- v:AddNoDraw()
|
||||
keys.ability:ApplyDataDrivenModifier( caster, v, "modifier_minamitsu02_vortex_target", {} )
|
||||
v:SetAbsOrigin(targetPoint)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if timeCount >= 1.5 then
|
||||
Timer.Wait 'OnMinamitsu02Vortex_starge_2' (1.0,
|
||||
function()
|
||||
caster:EmitSound("Ability.Torrent")
|
||||
OnMinamitsu02VortexEnd(keys,origin,forward)
|
||||
end
|
||||
)
|
||||
return nil
|
||||
end
|
||||
return 0.15
|
||||
end,
|
||||
0.03)
|
||||
end
|
||||
|
||||
function OnMinamitsu02VortexEnd(keys,origin,forward)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
local vecCaster = caster:GetOrigin()
|
||||
local targetPoint = origin + forward * 2500
|
||||
local speed = 2
|
||||
local g = 0.18
|
||||
local timeCount = 0
|
||||
|
||||
for k,v in pairs(caster.ability_minamitsu_02_group) do
|
||||
if v:IsNull() == false and v~=nil then
|
||||
if v.thtd_is_minamitsu_03_damaged ~= true then
|
||||
v.thtd_is_minamitsu_03_damaged = true
|
||||
local random = RandomVector(150)
|
||||
v:SetAbsOrigin(targetPoint+random)
|
||||
FindClearSpaceForUnit(v, v:GetOrigin(), false)
|
||||
if caster.thtd_minamitsu_01_first == true then
|
||||
v.next_move_forward = v.first_move_forward
|
||||
v.next_move_point = v.first_move_point
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
caster:SetContextThink(
|
||||
DoUniqueString("ability_thdots_minamitsu_02_stage_02"),
|
||||
function ()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
timeCount = timeCount + 0.03
|
||||
speed = speed - g
|
||||
if caster.ability_minamitsu_02_group ~= nil then
|
||||
for k,v in pairs(caster.ability_minamitsu_02_group) do
|
||||
if v~=nil and v:IsNull() == false then
|
||||
if v:HasModifier("modifier_minamitsu02_vortex_target") then
|
||||
-- v:RemoveNoDraw()
|
||||
v:RemoveModifierByName("modifier_minamitsu02_vortex_target")
|
||||
end
|
||||
if v:HasModifier("modifier_minamitsu02_vortex_pause_target") then
|
||||
if v:GetOrigin().z >= GetGroundHeight(v:GetOrigin(),nil) then
|
||||
v:SetAbsOrigin(v:GetOrigin() + Vector(0,0,speed))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if timeCount >= 1.0 then
|
||||
for k2,v2 in pairs(caster.ability_minamitsu_02_group) do
|
||||
if v2:HasModifier("modifier_minamitsu02_vortex_pause_target") then
|
||||
v2:RemoveModifierByName("modifier_minamitsu02_vortex_pause_target")
|
||||
end
|
||||
FindClearSpaceForUnit(v2, v2:GetOrigin(), false)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
end
|
||||
return 0.03
|
||||
end,
|
||||
0.03
|
||||
)
|
||||
end
|
||||
|
||||
function OnMinamitsu04SpellStart(keys)
|
||||
local caster = EntIndexToHScript(keys.caster_entindex)
|
||||
|
||||
if caster:HasModifier("modifier_byakuren_03_buff") then
|
||||
caster:ReCooldown(keys.ability, caster.thtd_byakuren_buff_minamitsu)
|
||||
end
|
||||
|
||||
if caster.thtd_minamitsu_01_rect == nil or caster.thtd_minamitsu_01_rect["rectOrigin"] == nil then
|
||||
CustomGameEventManager:Send_ServerToPlayer(caster:GetPlayerOwner(), "display_custom_error", {msg="only_water_area_use"})
|
||||
return
|
||||
end
|
||||
|
||||
local powerDamage = 0
|
||||
local powerCount = 0
|
||||
local pv = caster:GetAbilityPowerValue(keys.ability:GetAbilityName())
|
||||
if pv ~= nil then
|
||||
powerDamage = pv[1]
|
||||
powerCount = pv[2]
|
||||
end
|
||||
|
||||
local origin = caster.thtd_minamitsu_01_rect["rectOrigin"]
|
||||
local forward = caster.thtd_minamitsu_01_rect["rectForward"]
|
||||
|
||||
local count = 1 + powerCount
|
||||
if caster:IsPower999() then count = count + 7 end
|
||||
caster:SetContextThink(DoUniqueString("thtd_minamitsu_04"),
|
||||
function()
|
||||
if not THTD_IsValid(caster) then return nil end
|
||||
if count <= 0 then return nil end
|
||||
count = count - 1
|
||||
|
||||
local effectIndex = ParticleManager:CreateParticle("particles/heroes/thtd_minamitsu/ability_minamitsu_01_ship.vpcf", PATTACH_CUSTOMORIGIN, caster)
|
||||
ParticleManager:SetParticleControl(effectIndex, 0, origin)
|
||||
ParticleManager:SetParticleControl(effectIndex, 1, forward*1200)
|
||||
ParticleManager:DestroyParticleSystemTime(effectIndex,2.0)
|
||||
|
||||
local time = 2
|
||||
caster:SetContextThink(DoUniqueString("thtd_minamitsu_04_move_think"),
|
||||
function()
|
||||
if GameRules:IsGamePaused() then return 0.03 end
|
||||
if time > 0 then
|
||||
time = time - 0.2
|
||||
local targets = THTD_FindUnitsInRadius(caster,origin+forward*1200*(2 - time),300)
|
||||
local damage = caster:THTD_GetAbilityPowerDamage(keys.ability) + powerDamage * caster:THTD_GetStarDamage()
|
||||
if caster:IsPower666() then
|
||||
damage = damage + count * 20 * caster:THTD_GetStarDamage()
|
||||
end
|
||||
damage = damage * (1 + THTD_GetStarLotusTowerCount(caster) * keys.damage_up/100)
|
||||
for k,v in pairs(targets) do
|
||||
local DamageTable = {
|
||||
ability = keys.ability,
|
||||
victim = v,
|
||||
attacker = caster,
|
||||
damage = damage ,
|
||||
damage_type = keys.ability:GetAbilityDamageType(),
|
||||
damage_flags = DOTA_DAMAGE_FLAG_NONE
|
||||
}
|
||||
UnitDamageTarget(DamageTable)
|
||||
end
|
||||
return 0.2
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end,
|
||||
0)
|
||||
|
||||
return 0.5
|
||||
end,
|
||||
0)
|
||||
end
|
||||
Reference in New Issue
Block a user