Skip to content
Home
Post Code
Jass (Warcraft III)
Wurst
GUI (Warcraft III)
Galaxy (StarCraft II)
GUI (StarCraft II)
C++
Java
Delphi
Text
Search Code
Compare Code
Uploads
Draw
Create New Drawing
View Drawings
Graph
Log in
[code][color=7777FF][b]package[/b][/color] GuardDevilUnbreakable [color=7777FF][b]import[/b][/color] DamageType [color=7777FF][b]import[/b][/color] StructuredDD [color=7777FF][b]import[/b][/color] ClosureTimers [color=7777FF][b]import[/b][/color] Players [color=7777FF][b]import[/b][/color] Invulnerable [color=7777FF][b]constant[/b][/color] [color=AA77FF]int[/color] ID_GUARD_DEVIL [b]=[/b] [color=FFFF77]'h03B'[/color] [color=7777FF][b]constant[/b][/color] [color=AA77FF]int[/color] ID_GUARD_DEVIL_GREATER [b]=[/b] [color=FFFF77]'h03C'[/color] [color=7777FF][b]constant[/b][/color] [color=AA77FF]int[/color] ID_ABILITY_UNBREAKABLE [b]=[/b] [color=FFFF77]'A01W'[/color] [color=7777FF][b]constant[/b][/color] [color=AA77FF]int[/color] ID_ABILITY_UNBREAKA_CD [b]=[/b] [color=FFFF77]'A01X'[/color] [color=7777FF][b]constant[/b][/color] [color=AA77FF]int[/color] ID_INVULNERABLE [b]=[/b] [color=FFFF77]'Avul'[/color] [color=7777FF][b]constant[/b][/color] [color=AA77FF]real[/color] RADIUS [b]=[/b] [color=FFFF77]600[/color]. [color=7777FF][b]constant[/b][/color] [color=AA77FF]real[/color] DURATION [b]=[/b] [color=FFFF77]1[/color]. [color=7777FF][b]constant[/b][/color] [color=AA77FF]real[/color] COOLDOWN [b]=[/b] [color=FFFF77]60[/color]. [color=7777FF][b]constant[/b][/color] [color=AA77FF]string[/color] SHIELD_FX [b]=[/b] [color=77FF77]"Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl"[/color] [color=AA77FF]group[/color] grp [b]=[/b] [url=http://starcraft-mapping.de/wiki/CreateGroup]CreateGroup[/url][b]([/b][b])[/b] [color=7777FF][b]function[/b][/color] isGuardDevil[b]([/b][color=AA77FF]unit[/color] u[b])[/b] [color=7777FF][b]returns[/b][/color] bool [color=7777FF][b]return[/b][/color] u.getTypeId[b]([/b][b])[/b] [b]=[/b][b]=[/b] ID_GUARD_DEVIL [color=7777FF][b]or[/b][/color] u.getTypeId[b]([/b][b])[/b] [b]=[/b][b]=[/b] ID_GUARD_DEVIL_GREATER [color=7777FF][b]end[/b][/color] [color=7777FF][b]function[/b][/color] findUnbreakable[b]([/b][color=AA77FF]unit[/color] u[b])[/b] [color=7777FF][b]returns[/b][/color] [color=AA77FF]unit[/color] [color=AA77FF]unit[/color] guard [b]=[/b] [color=7777FF][b]null[/b][/color] [color=AA77FF]unit[/color] iter grp.enumUnitsInRange[b]([/b]vec2[b]([/b]u.getX[b]([/b][b])[/b][b],[/b] u.getY[b]([/b][b])[/b][b])[/b][b],[/b] RADIUS[b])[/b] [color=7777FF][b]loop[/b][/color] iter [b]=[/b] [url=http://starcraft-mapping.de/wiki/FirstOfGroup]FirstOfGroup[/url][b]([/b]grp[b])[/b] [color=7777FF][b]exitwhen[/b][/color] iter [b]=[/b][b]=[/b] [color=7777FF][b]null[/b][/color] [color=7777FF][b]if[/b][/color] iter.isAlive[b]([/b][b])[/b] [color=7777FF][b]and[/b][/color] isGuardDevil[b]([/b]iter[b])[/b] [color=7777FF][b]and[/b][/color] iter.hasAbility[b]([/b]ID_ABILITY_UNBREAKABLE[b])[/b] guard [b]=[/b] iter [color=7777FF][b]end[/b][/color] grp.removeUnit[b]([/b]iter[b])[/b] [color=7777FF][b]end[/b][/color] [color=7777FF][b]return[/b][/color] guard [color=7777FF][b]end[/b][/color] [color=7777FF][b]function[/b][/color] h[b]([/b][b])[/b] [color=AA77FF]unit[/color] tU [b]=[/b] [url=http://starcraft-mapping.de/wiki/GetTriggerUnit]GetTriggerUnit[/url][b]([/b][b])[/b] [color=AA77FF]real[/color] damage [b]=[/b] [url=http://starcraft-mapping.de/wiki/GetEventDamage]GetEventDamage[/url][b]([/b][b])[/b] [color=7777FF][b]if[/b][/color] tU.getOwner[b]([/b][b])[/b].getId[b]([/b][b])[/b] < Players.COUNT [color=7777FF][b]and[/b][/color] DamageType.get[b]([/b][b])[/b] [b]=[/b][b]=[/b] DamageType.ATTACK [color=7777FF][b]and[/b][/color] [b]([/b]tU.getHP[b]([/b][b])[/b] [b]-[/b] damage < [color=FFFF77]1[/color].[b])[/b] [color=7777FF][b]and[/b][/color] [color=7777FF][b]not[/b][/color] tU.hasAbility[b]([/b]ID_INVULNERABLE[b])[/b] [color=AA77FF]unit[/color] unbreakableSource [b]=[/b] findUnbreakable[b]([/b]tU[b])[/b] [color=7777FF][b]if[/b][/color] unbreakableSource [b]![/b][b]=[/b] [color=7777FF][b]null[/b][/color] Invulnerable.apply[b]([/b]tU[b],[/b] DURATION[b])[/b] unbreakableSource.removeAbility[b]([/b]ID_ABILITY_UNBREAKABLE[b])[/b] unbreakableSource.addAbility[b]([/b] ID_ABILITY_UNBREAKA_CD[b])[/b] [color=AA77FF]effect[/color] shield [b]=[/b] tU.addEffect[b]([/b]SHIELD_FX[b],[/b] [color=77FF77]"origin"[/color][b])[/b] doAfter[b]([/b]DURATION[b],[/b] [b]([/b][b])[/b] [b]-[/b]> [color=7777FF][b]begin[/b][/color] shield.destr[b]([/b][b])[/b] [color=7777FF][b]end[/b][/color][b])[/b] doAfter[b]([/b]COOLDOWN[b],[/b] [b]([/b][b])[/b] [b]-[/b]> [color=7777FF][b]begin[/b][/color] unbreakableSource.addAbility[b]([/b] ID_ABILITY_UNBREAKABLE[b])[/b] unbreakableSource.removeAbility[b]([/b]ID_ABILITY_UNBREAKA_CD[b])[/b] [color=7777FF][b]end[/b][/color][b])[/b] [color=7777FF][b]end[/b][/color] [color=7777FF][b]end[/b][/color] [color=7777FF][b]end[/b][/color] [color=7777FF][b]init[/b][/color] StructuredDD.addHandler[b]([/b][color=7777FF][b]function[/b][/color] h[b])[/b] [color=7777FF][b]end[/b][/color] [/code]
select language
jass
java
delphi
C++
php
GSL
galaxy
visualBasic
> wurst
Text
Markdown
select style
default
> bbcode - default
Jasscraft
jasscraft html
visual
lightweight
lightweightNr
goto line:
Compare with:
text copy window
edit this code
post new code
package GuardDevilUnbreakable import DamageType import StructuredDD import ClosureTimers import Players import Invulnerable constant int ID_GUARD_DEVIL = 'h03B' constant int ID_GUARD_DEVIL_GREATER = 'h03C' constant int ID_ABILITY_UNBREAKABLE = 'A01W' constant int ID_ABILITY_UNBREAKA_CD = 'A01X' constant int ID_INVULNERABLE = 'Avul' constant real RADIUS = 600. constant real DURATION = 1. constant real COOLDOWN = 60. constant string SHIELD_FX = "Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl" group grp = CreateGroup() function isGuardDevil(unit u) returns bool return u.getTypeId() == ID_GUARD_DEVIL or u.getTypeId() == ID_GUARD_DEVIL_GREATER end function findUnbreakable(unit u) returns unit unit guard = null unit iter grp.enumUnitsInRange(vec2(u.getX(), u.getY()), RADIUS) loop iter = FirstOfGroup(grp) exitwhen iter == null if iter.isAlive() and isGuardDevil(iter) and iter.hasAbility(ID_ABILITY_UNBREAKABLE) guard = iter end grp.removeUnit(iter) end return guard end function h() unit tU = GetTriggerUnit() real damage = GetEventDamage() if tU.getOwner().getId() < Players.COUNT and DamageType.get() == DamageType.ATTACK and (tU.getHP() - damage < 1.) and not tU.hasAbility(ID_INVULNERABLE) unit unbreakableSource = findUnbreakable(tU) if unbreakableSource != null Invulnerable.apply(tU, DURATION) unbreakableSource.removeAbility(ID_ABILITY_UNBREAKABLE) unbreakableSource.addAbility( ID_ABILITY_UNBREAKA_CD) effect shield = tU.addEffect(SHIELD_FX, "origin") doAfter(DURATION, () -> begin shield.destr() end) doAfter(COOLDOWN, () -> begin unbreakableSource.addAbility( ID_ABILITY_UNBREAKABLE) unbreakableSource.removeAbility(ID_ABILITY_UNBREAKA_CD) end) end end end init StructuredDD.addHandler(function h) end