Archideas
Active Member
- Reaction score
- 32
This is probably a more odd request if anything, but I found this spell on Hive Workshop that I took a very strong liking to, but unfortunately it's rather old and therefor bugged and some changes are needed.
This is where the problem rises. I'm not capable of Jass, vJass, Zinc or any other coding language that the World Editor uses except for GUI. The spell is in Jass and does not utilize a damage detection system so it's rather poor in that aspect, but the idea is what makes me want to perfect it for my benefit. Here's the description of the spell itself.
This in turn gives the hero another ability which allows him to enhance his blade with the souls, dealing extra damage on the next attack.
In the Spellpack I found this ability in, this ability uses a Jump system to throw the enemy backwards by about 350 units, which I want changed to nothing more than a simple attack, followed up by a modified thunderclap.
The way the spell works now is that whenever you kill an enemy unit, it adds 1 "soul" to the integer and when you activate the second ability given to you, the next attack made will unleash the souls and throw the enemy backwards.
The other effect I'm looking for is that instead of simply dealing the damage via a trigger, I'd prefer if for each soul unleashed into the blade before attacking, his attack damage would increase by 20 for each soul.
These are the Jass triggers themselves. If anyone has a solution to this dilemma, I'd be more than thankful for a helping hand.
Unholy Blade
Unholy Blade Attack
Unholy Blade Activate
P.S
The Jump system itself is in the MapName.w3x so I didn't bother copying it as it would be deleted anyway.
This is where the problem rises. I'm not capable of Jass, vJass, Zinc or any other coding language that the World Editor uses except for GUI. The spell is in Jass and does not utilize a damage detection system so it's rather poor in that aspect, but the idea is what makes me want to perfect it for my benefit. Here's the description of the spell itself.
Enhances Kelendor's blade with the power to steal souls, allowing him to store his victim's souls in his weapon. Kelendor can at any time unleash all the stored souls, allowing the next attack to unleash an incredible blow, throwing the enemy away and dealing 20 damage per soul.
Level 1 - Max 4 souls.
Level 2 - Max 6 souls.
Level 3 - Max 8 souls.
This in turn gives the hero another ability which allows him to enhance his blade with the souls, dealing extra damage on the next attack.
Enchants Kelendor's blade with the power of his stored souls, allowing the next attack to deal 20 times the current souls as extra damage and throwing the enemy backwards.
In the Spellpack I found this ability in, this ability uses a Jump system to throw the enemy backwards by about 350 units, which I want changed to nothing more than a simple attack, followed up by a modified thunderclap.
The way the spell works now is that whenever you kill an enemy unit, it adds 1 "soul" to the integer and when you activate the second ability given to you, the next attack made will unleash the souls and throw the enemy backwards.
The other effect I'm looking for is that instead of simply dealing the damage via a trigger, I'd prefer if for each soul unleashed into the blade before attacking, his attack damage would increase by 20 for each soul.
These are the Jass triggers themselves. If anyone has a solution to this dilemma, I'd be more than thankful for a helping hand.
Unholy Blade
JASS:
function Trig_UnholyBladeCheck takes nothing returns boolean
return GetUnitAbilityLevel(GetKillingUnit(), 039;A004039;) > 0
endfunction
function Trig_Unholy_Blade_Actions takes nothing returns nothing
local unit U = GetKillingUnit()
local player p = GetOwningPlayer(U)
local integer maxsouls = 2 + (2*GetUnitAbilityLevel(U, 039;A004039;))
if udg_KR_KillCount[GetPlayerId(p) + 1] < (maxsouls + 1) then
set udg_KR_KillCount[GetPlayerId(p) + 1] = udg_KR_KillCount[GetPlayerId(p) + 1] + 1
call CreateTextTagUnit( I2S(udg_KR_KillCount[GetPlayerId(p) + 1]) + "/" + I2S(maxsouls) + " Souls!", U, 0.00, 10.00, 200, 200, 200, 255, 0, 0.03, 3.00, false, true)
endif
endfunction
//===========================================================================
function InitTrig_UnholyBlade takes nothing returns nothing
local integer index
set gg_trg_UnholyBlade = CreateTrigger( )
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_UnholyBlade, Player(index), EVENT_PLAYER_UNIT_DEATH, Filter(function AntiLeak))
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition( gg_trg_UnholyBlade, Condition( function Trig_UnholyBladeCheck ) )
call TriggerAddAction( gg_trg_UnholyBlade, function Trig_Unholy_Blade_Actions )
endfunction
Unholy Blade Attack
JASS:
function Trig_UnholyBladeAttackCheck takes nothing returns boolean
local player P = GetOwningPlayer(GetAttacker())
return GetUnitAbilityLevel(GetAttacker(), 039;A004039;) > 0 and udg_KR_HitOrNo[GetPlayerId(P) + 1]
endfunction
function Trig_Unholy_Blade_Attack_Actions takes nothing returns nothing
local unit U = GetAttacker()
local unit u = GetTriggerUnit()
local player p = GetOwningPlayer(U)
local integer maxsouls = 2 + (2*GetUnitAbilityLevel(U, 039;A004039;))
local real x = GetUnitX(U)
local real y = GetUnitY(U)
local real x1 = GetUnitX(u)
local real y1 = GetUnitY(u)
local real d = Atan2(y1 - y, x1 - x)
local real x2 = x1 + 350 * Cos(d)
local real y2 = y1 + 350 * Sin(d)
call QueueUnitAnimation(U, "attack slam")
call CreateTextTagUnit( "Unleash! +" + I2S(R2I(20.00*udg_KR_KillCount[GetPlayerId(p) + 1])) + " Damage", U, 0.00, 10.00, 100, 100, 100, 255, 0, 0.03, 5.00, false, true)
call DestroyEffect(udg_KR_Effect[GetPlayerId(p) + 1])
call Jump(u, 0.50, x2, y2, 1.80, 100, "Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl", "war3mapImported\\Desecrate.mdx")
call UnitDamageTarget(U, u, 20.00*udg_KR_KillCount[GetPlayerId(p) + 1], true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
set udg_KR_KillCount[GetPlayerId(p) + 1] = 0
set udg_KR_HitOrNo[GetPlayerId(p) + 1] = false
set U = null
set u = null
endfunction
//===========================================================================
function InitTrig_UnholyBladeAttack takes nothing returns nothing
local integer index
call Preload("Abilities\\Weapons\\ZigguratMissile\\ZigguratMissile.mdl")
set gg_trg_UnholyBladeAttack = CreateTrigger( )
set index = 0
loop
call TriggerRegisterPlayerUnitEvent(gg_trg_UnholyBladeAttack, Player(index), EVENT_PLAYER_UNIT_ATTACKED, Filter(function AntiLeak))
set index = index + 1
exitwhen index == bj_MAX_PLAYER_SLOTS
endloop
call TriggerAddCondition( gg_trg_UnholyBladeAttack, Condition( function Trig_UnholyBladeAttackCheck ) )
call TriggerAddAction( gg_trg_UnholyBladeAttack, function Trig_Unholy_Blade_Attack_Actions )
endfunction
Unholy Blade Activate
JASS:
function Trig_UnholyBladeActivate_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 039;A006039;
endfunction
function Trig_UnholyBladeActivate_Actions takes nothing returns nothing
local unit caster = GetSpellAbilityUnit()
local player casterowner = GetOwningPlayer(caster)
if udg_KR_KillCount[GetPlayerId(casterowner) + 1] > 0 then
set udg_KR_HitOrNo[GetPlayerId(casterowner) + 1] = true
set udg_KR_Effect[GetPlayerId(casterowner) + 1] = AddSpecialEffectTarget("Abilities\\Weapons\\AvengerMissile\\AvengerMissile.mdl", caster, "weapon")
endif
set caster = null
endfunction
//===========================================================================
function InitTrig_UnholyBladeActivate takes nothing returns nothing
set gg_trg_UnholyBladeActivate = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_UnholyBladeActivate, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_UnholyBladeActivate, Condition( function Trig_UnholyBladeActivate_Conditions ) )
call TriggerAddAction( gg_trg_UnholyBladeActivate, function Trig_UnholyBladeActivate_Actions )
endfunction
P.S
The Jump system itself is in the MapName.w3x so I didn't bother copying it as it would be deleted anyway.