Spellpack Catherine Torsche, the Assassine

Ayanami

칼리
Reaction score
288
Introduction
Got bored and decided to make another spell pack. Catherine Torsche is an assassin type hero, best for killing off isolated heroes. Hope you like it. Note that three spells are named in French. Don't ask me why :p


Catherine Torsche
catherinen.png

  • Fente [Active]
  • Blessure Mortelle [Active]
  • Penetration [Passive]
  • Cauchemar [Active]

Details
- The spells are GUI.
- The spells should be leakless. Feedback will be appreciated if otherwise.
- It is MUI, meaning that the spell can run multiple times at the same instance.
- A character from Granado Espada


Requirements
- GDD


Other Trigger
Trigger:
  • Global Configurables
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Fente --------
      • -------- Set this variable to the base ability "Fente" --------
      • Set FeAbility[0] = Fente
      • -------- Set this variable to the ability "Fente (Shuffle)" --------
      • Set FeAbility[1] = Fente (Shuffle)
      • -------- Set this variable to the ability "Fente (Stun)" --------
      • Set FeAbility[2] = Fente (Stun)
      • -------- Set this variable to the ability "Fente (Illusion)" --------
      • Set FeAbility[3] = Fente (Illusion)
      • -------- Set this variable to the ability "Fente (Visual)" --------
      • Set FeAbility[4] = Fente (Visual)
      • -------- Initial speed of charge (units/0.03s) --------
      • Set FeRealGlobal[0] = 10.00
      • -------- Acceleration of charge (units/0.03s) --------
      • Set FeRealGlobal[1] = 2.50
      • -------- Minimum damage dealt. Arrays represent corresponding level values --------
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set FeRealDamageMin[(Integer A)] = 50.00
      • -------- Maximum damage dealt. Arrays represent corresponding level values --------
      • Set FeRealDamageMax[1] = 80.00
      • Set FeRealDamageMax[2] = 120.00
      • Set FeRealDamageMax[3] = 160.00
      • Set FeRealDamageMax[4] = 200.00
      • -------- Blessure Mortelle --------
      • -------- Set this variable to the base ability "Blessure Mortelle" --------
      • Set BMAbility[0] = Blessure Mortelle
      • -------- Set this variable to the ability "Blessure Mortelle (Armor 10's)" --------
      • Set BMAbility[1] = Blessure Mortelle (Armor 10's)
      • -------- Set this variable to the ability "Blessure Mortelle (Armor 1's)" --------
      • Set BMAbility[2] = Blessure Mortelle (Armor 1's)
      • -------- Set this variable to the ability "Blessure Mortelle (Sight)" --------
      • Set BMAbility[3] = Blessure Mortelle (Sight)
      • -------- Set this variable to the ability "Blessure Mortelle (Info)" --------
      • Set BMAbility[4] = Blessure Mortelle (Info)
      • -------- Set this variable to the ability "Blessure Mortelle (Mortal Wound)" --------
      • Set BMAbility[5] = Blessure Mortelle (Mortal Wound)
      • -------- Set this variable to the buff "Blessure Mortelle" --------
      • Set BMBuff[0] = Blessure Mortelle
      • -------- Set this variable to the buff "Blessure Mortelle (Mortal Wound)" --------
      • Set BMBuff[1] = Blessure Mortelle (Mortal Wound)
      • -------- Area of effect of the spell --------
      • Set BMRealGlobal = 400.00
      • -------- Chanc to inflict Mortal Wound (%). Arrays represent corresponding level values --------
      • Set BMIntChance[1] = 20
      • Set BMIntChance[2] = 30
      • Set BMIntChance[3] = 40
      • Set BMIntChance[4] = 50
      • -------- Physical damage dealt. Arrays represent corresponding level values --------
      • Set BMRealDamagePhysical[1] = 50.00
      • Set BMRealDamagePhysical[2] = 70.00
      • Set BMRealDamagePhysical[3] = 90.00
      • Set BMRealDamagePhysical[4] = 110.00
      • -------- Magical damage dealt. Arrays represent corresponding level values --------
      • Set BMRealDamageMagical[1] = 50.00
      • Set BMRealDamageMagical[2] = 70.00
      • Set BMRealDamageMagical[3] = 90.00
      • Set BMRealDamageMagical[4] = 110.00
      • -------- Duration of the spell. Arrays represent corresponding level values --------
      • Set BMRealDuration[1] = 3.00
      • Set BMRealDuration[2] = 4.00
      • Set BMRealDuration[3] = 5.00
      • Set BMRealDuration[4] = 6.00
      • -------- Penetration --------
      • -------- Set this variable to the base ability "Penetration" --------
      • Set PeAbility[0] = Penetration
      • -------- Set this variable to the base ability "Penetration (Visual)" --------
      • Set PeAbility[1] = Penetration (Visual)
      • -------- Set this variable to the buff "Penetration (Non-stacking)" --------
      • Set PeBuff[0] = Penetration (Non-stacking)
      • -------- Set this variable to the buff "Penetration (Stacking)" --------
      • Set PeBuff[1] = Penetration (Stacking)
      • -------- Base chance (%). Arrays represent corresponding level values --------
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set PeRealChance[(Integer A)] = 15.00
      • -------- Base multiplier. Arrays represent corresponding level values --------
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set PeRealMultiplier[(Integer A)] = 1.50
      • -------- Chance increment (%/s). Arrays represent corresponding level values --------
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set PeRealChanceInc[(Integer A)] = 6.50
      • -------- Multiplier increment per second. Arrays represent corresponding level values --------
      • For each (Integer A) from 1 to 4, do (Actions)
        • Loop - Actions
          • Set PeRealMultiplierInc[(Integer A)] = 0.25
      • -------- Cauchemar --------
      • -------- Set this variable to the base ability "Cauchemar" --------
      • Set CaAbility[0] = Cauchemar
      • -------- Set this variable to the base "Cauchemar (Cleave 10%'s)" --------
      • Set CaAbility[1] = Cauchemar (Cleave 10%'s)
      • -------- Set this variable to the base "Cauchemar (Cleave 1%'s)" --------
      • Set CaAbility[2] = Cauchemar (Cleave 1%'s)
      • -------- Set this variable to the base "Cauchemar (AS 100%'s)" --------
      • Set CaAbility[3] = Cauchemar (AS 100%'s)
      • -------- Set this variable to the base "Cauchemar (AS 10%'s)" --------
      • Set CaAbility[4] = Cauchemar (AS 10%'s)
      • -------- Set this variable to the base "Cauchemar (AS 1%'s)" --------
      • Set CaAbility[5] = Cauchemar (AS 1%'s)
      • -------- Set this variable to the base "Cauchemar (Spell Book)" --------
      • Set CaAbility[6] = Cauchemar (Spell Book)
      • -------- Duration of the spell. Arrays represent corresponding level values --------
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set CaRealDuration[(Integer A)] = 10.00
      • -------- Initial cleave (%). Arrays represent corresponding level values --------
      • Set CaRealCleave[1] = 30.00
      • Set CaRealCleave[2] = 50.00
      • Set CaRealCleave[3] = 70.00
      • -------- Initial attack speed (%). Arrays represent corresponding level values --------
      • Set CaRealAS[1] = 50.00
      • Set CaRealAS[2] = 75.00
      • Set CaRealAS[3] = 100.00
      • -------- ----------------------------------------- --------
      • -------- Set this variable to the unit "Caster Dummy" --------
      • Set CasterDummy = Caster Dummy
      • -------- Set this variable to the unit "Hidden Dummy" --------
      • Set HiddenDummy = Hidden Dummy
      • -------- ----------------------------------------- --------
      • Hashtable - Create a hashtable
      • Set Hashtable = (Last created hashtable)
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Player - Disable CaAbility[6] for (Picked player)


Trigger:
  • Remove Dummy
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Triggering unit)) Equal to CasterDummy
    • Actions
      • Unit - Remove (Triggering unit) from the game


Spells

Fente (Lunge)
fente.png


Description:
Catherine awakens her runed daggers, causing them to emit an incredible amount of energy. Catherine accelerates towards a target at extreme speed, dealing magic damage and stunning it for 1.0 second. The greater the distance between Catherine and her target, the stronger the blow, with a minimum damage of 50. After striking her target, Catherine creates 4 images of herself in random areas within 500 units. The images does not deal damage and receive 100% damage. While the images are present, Catherine is able to shuffle among the images. Images last 5 seconds.

Level 1 - 80 maximum damage.
Level 2 - 120 maximum damage.
Level 3 - 160 maximum damage.
Level 4 - 200 maximum damage.

Cast Range - 800
Target Type - Unit
Cooldown - 14 seconds

Screenshot:

fentess.jpg

Code:
Trigger:
  • Fente Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to FeAbility[0]
    • Actions
      • Set TempPoint = (Position of (Triggering unit))
      • Set TempOffset = (Position of (Target unit of ability being cast))
      • Set TempReal = (Distance between TempPoint and TempOffset)
      • Set TempInt = (Level of FeAbility[0] for (Triggering unit))
      • Set TempReal = (((Distance between TempPoint and TempOffset) / 800.00) x (FeRealDamageMax[TempInt] - FeRealDamageMin[TempInt]))
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Fedamage"), udg_TempReal)
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Feduration"), 5)
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Fespeed"), udg_FeRealGlobal[0])
      • Custom script: call SaveBoolean(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Feboolean1"), false)
      • Custom script: call SaveBoolean(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Feboolean2"), false)
      • Custom script: call SaveUnitHandle(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Fetarget"), GetSpellTargetUnit())
      • Animation - Change (Triggering unit)'s vertex coloring to (70.00%, 70.00%, 70.00%) with 0.00% transparency
      • Unit - Add FeAbility[4] to (Triggering unit)
      • Unit Group - Add (Triggering unit) to FeUnitGroup
      • Set FeGroupInteger = (FeGroupInteger + 1)
      • Trigger - Turn on Fente Periodic <gen>
      • Custom script: call RemoveLocation(udg_TempPoint)
      • Custom script: call RemoveLocation(udg_TempOffset)


Trigger:
  • Fente Periodic - Initially off
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • FeGroupInteger Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in FeUnitGroup and do (Actions)
            • Loop - Actions
              • Custom script: set udg_TempBoolean = LoadBoolean(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Feboolean1"))
              • Custom script: set udg_TempUnit = LoadUnitHandle(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Fetarget"))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TempBoolean Equal to True
                • Then - Actions
                  • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Feduration"))
                  • Custom script: set udg_TempBoolean = LoadBoolean(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Feboolean2"))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Or - Any (Conditions) are true
                        • Conditions
                          • TempReal Less than or equal to 0.00
                          • TempBoolean Equal to True
                    • Then - Actions
                      • Unit - Remove FeAbility[1] from (Picked unit)
                      • Player - Enable FeAbility[0] for (Owner of (Picked unit))
                      • Unit Group - Remove (Picked unit) from FeUnitGroup
                      • Set FeGroupInteger = (FeGroupInteger - 1)
                    • Else - Actions
                      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Feduration"), udg_TempReal - 0.03)
                • Else - Actions
                  • Set TempPoint = (Position of (Picked unit))
                  • Set TempOffset = (Position of TempUnit)
                  • Set FePoint = (TempOffset offset by 100.00 towards ((Facing of TempUnit) - 180.00) degrees)
                  • Special Effect - Create a special effect at TempPoint using Abilities\Spells\Orc\MirrorImage\MirrorImageCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • (Distance between TempPoint and FePoint) Less than or equal to 50.00
                    • Then - Actions
                      • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Fedamage"))
                      • Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
                      • Special Effect - Create a special effect attached to the chest of TempUnit using Abilities\Spells\Other\FrostBolt\FrostBoltMissile.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Move (Picked unit) instantly to FePoint, facing TempOffset
                      • Unit - Order (Picked unit) to Attack TempUnit
                      • Unit - Cause (Picked unit) to damage TempUnit, dealing TempReal damage of attack type Spells and damage type Magic
                      • Unit - Remove FeAbility[4] from (Picked unit)
                      • Unit - Add FeAbility[1] to (Picked unit)
                      • Player - Disable FeAbility[0] for (Owner of (Picked unit))
                      • Unit - Turn collision for (Picked unit) On
                      • Unit - Create 1 CasterDummy for (Owner of (Picked unit)) at TempPoint facing Default building facing degrees
                      • Unit - Add a 1.00 second Generic expiration timer to (Last created unit)
                      • Unit - Add FeAbility[2] to (Last created unit)
                      • Unit - Order (Last created unit) to Human Mountain King - Storm Bolt TempUnit
                      • For each (Integer A) from 1 to 4, do (Actions)
                        • Loop - Actions
                          • Unit - Create 1 CasterDummy for (Owner of (Picked unit)) at TempPoint facing Default building facing degrees
                          • Unit - Add a 0.50 second Generic expiration timer to (Last created unit)
                          • Unit - Add FeAbility[3] to (Last created unit)
                          • Custom script: call IssueTargetOrderById(GetLastCreatedUnit(), 852274, GetEnumUnit())
                      • Custom script: call SaveBoolean(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Feboolean1"), true)
                    • Else - Actions
                      • Custom script: set udg_FeReal[0] = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Fespeed"))
                      • Unit - Turn collision for (Picked unit) Off
                      • Custom script: call RemoveLocation(udg_TempOffset)
                      • Set TempReal = (Angle from TempPoint to FePoint)
                      • Set TempOffset = (TempPoint offset by FeReal[0] towards TempReal degrees)
                      • Unit - Move (Picked unit) instantly to TempOffset, facing TempReal degrees
                      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Fespeed"), udg_FeReal[0] + udg_FeRealGlobal[1])
                  • Custom script: call RemoveLocation(udg_FePoint)
                  • Custom script: call RemoveLocation(udg_TempOffset)
                  • Custom script: call RemoveLocation(udg_TempPoint)

Shuffle
fenteshuffle.png


Description:
Shuffles with any images in an area of 500.

Note - Shuffle only appears while Fente images are present.

Code:
Trigger:
  • Fente Shuffle
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to FeAbility[1]
    • Actions
      • Unit Group - Pick every unit in FeUnitGroup and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Triggering unit) Equal to (Picked unit)
            • Then - Actions
              • Set TempPoint = (Position of (Triggering unit))
              • Set TempUnitGroup = (Units within 500.00 of TempPoint matching (((Unit-type of (Matching unit)) Equal to Assassine) and (((Matching unit) is an illusion) Equal to True)))
              • Set TempUnit = (Random unit from TempUnitGroup)
              • Set TempOffset = (Position of TempUnit)
              • Set FeReal[0] = (Facing of (Triggering unit))
              • Set FeReal[1] = (Facing of TempUnit)
              • Unit - Turn collision for TempUnit Off
              • Unit - Move (Triggering unit) instantly to TempOffset, facing FeReal[1] degrees
              • Unit - Move TempUnit instantly to TempPoint, facing FeReal[0] degrees
              • Unit - Turn collision for TempUnit On
              • Custom script: call RemoveLocation(udg_TempOffset)
              • Special Effect - Create a special effect at TempPoint using Abilities\Spells\Orc\MirrorImage\MirrorImageCaster.mdl
              • Special Effect - Destroy (Last created special effect)
              • Unit Group - Pick every unit in TempUnitGroup and do (Actions)
                • Loop - Actions
                  • Set TempOffset = (Position of (Picked unit))
                  • Special Effect - Create a special effect at TempOffset using Abilities\Spells\Orc\MirrorImage\MirrorImageCaster.mdl
                  • Special Effect - Destroy (Last created special effect)
                  • Custom script: call RemoveLocation(udg_TempOffset)
              • Custom script: call DestroyGroup(udg_TempUnitGroup)
              • Custom script: call RemoveLocation(udg_TempPoint)
              • Custom script: call SaveBoolean(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Feboolean2"), true)
            • Else - Actions


Blessure Mortelle (Mortal Wound)
blessuremortelle.png


Description:
Catherine inflicts a deadly blow imbuned with the element of darkness. The target has its armor reduced by one tenth of Catherine's agility for a duration. Maximum of 99 armor penalty. Enemies in an area of 400 have complete vision loss for the duration. Catherine also has a chance to inflict Mortal Wound to the target when this skill is used.

Mortal Wound - Receives 50% more damage.

Level 1 - 50 physical and 50 magic damage. 20% chance to inflict Mortal Wound. Lasts 3 seconds.
Level 2 - 70 physical and 70 magic damage. 30% chance to inflict Mortal Wound. Lasts 4 seconds.
Level 3 - 90 physical and 90 magic damage. 40% chance to inflict Mortal Wound. Lasts 5 seconds.
Level 4 - 110 physical and 110 magic damage. 50% chance to inflict Mortal Wound. Lasts 6 seconds.

Cast Range - 150
Target Type - Unit
Cooldown - 15 seconds

Screenshot:
blessuremortelless.jpg

Code:
Trigger:
  • Blessure Mortelle Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to BMAbility[0]
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BMCustomValue Less than 100
        • Then - Actions
          • Set BMCustomValue = (BMCustomValue + 1)
        • Else - Actions
          • Set BMCustomValue = 1
      • Set TempPoint = (Position of (Target unit of ability being cast))
      • Set TempInt = (Level of BMAbility[0] for (Triggering unit))
      • Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing BMRealDamageMagical[TempInt] damage of attack type Spells and damage type Magic
      • Unit - Cause (Triggering unit) to damage (Target unit of ability being cast), dealing BMRealDamagePhysical[TempInt] damage of attack type Hero and damage type Normal
      • Unit - Create 1 HiddenDummy for (Owner of (Triggering unit)) at TempPoint facing Default building facing degrees
      • Set TempUnit = (Last created unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Random integer number between 1 and 100) Less than or equal to BMIntChance[TempInt]
        • Then - Actions
          • Floating Text - Create floating text that reads Mortal Wound! above (Triggering unit) with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the lifespan of (Last created floating text) to 2.50 seconds
          • Floating Text - Change the fading age of (Last created floating text) to 2.50 seconds
          • Unit - Add BMAbility[5] to (Target unit of ability being cast)
          • Custom script: call SaveBoolean(udg_Hashtable, GetHandleId(udg_TempUnit), StringHash("BMboolean"), true)
          • Custom script: call SaveUnitHandle(udg_Hashtable, GetHandleId(udg_TempUnit), StringHash("BMtarget"), GetSpellTargetUnit())
        • Else - Actions
          • Custom script: call SaveBoolean(udg_Hashtable, GetHandleId(udg_TempUnit), StringHash("BMboolean"), false)
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(udg_TempUnit), StringHash("BMduration"), udg_BMRealDuration[udg_TempInt])
      • Set TempReal = ((Real((Agility of (Triggering unit) (Include bonuses)))) / 10.00)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • TempReal Greater than or equal to 99.00
        • Then - Actions
          • For each (Integer A) from 1 to 2, do (Actions)
            • Loop - Actions
              • Unit - Add BMAbility[(Integer A)] to (Target unit of ability being cast)
              • Unit - Set level of BMAbility[(Integer A)] for (Target unit of ability being cast) to 10
        • Else - Actions
          • Set TempDivider = 10
          • For each (Integer A) from 1 to 2, do (Actions)
            • Loop - Actions
              • Unit - Add BMAbility[(Integer A)] to (Target unit of ability being cast)
              • Set TempInt = ((Integer(TempReal)) / TempDivider)
              • Unit - Set level of BMAbility[(Integer A)] for (Target unit of ability being cast) to (TempInt + 1)
              • Set TempReal = (TempReal - (Real((TempInt x TempDivider))))
              • Set TempDivider = (TempDivider / 10)
      • Set BMUnitGroup[BMCustomValue] = (Units within BMRealGlobal of TempPoint matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of
      • Unit Group - Pick every unit in BMUnitGroup[BMCustomValue] and do (Actions)
        • Loop - Actions
          • For each (Integer A) from 3 to 4, do (Actions)
            • Loop - Actions
              • Unit - Add BMAbility[(Integer A)] to (Picked unit)
      • Special Effect - Create a special effect at TempPoint using war3mapImported\DarkLightningNova.mdx
      • Special Effect - Destroy (Last created special effect)
      • Unit - Set the custom value of TempUnit to BMCustomValue
      • Unit Group - Add TempUnit to BMDummyGroup
      • Set BMGroupInteger = (BMGroupInteger + 1)
      • Trigger - Turn on Blessure Mortelle Periodic <gen>
      • Custom script: call RemoveLocation(udg_TempPoint)


Trigger:
  • Blessure Mortelle Periodic - Initially off
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BMGroupInteger Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in BMDummyGroup and do (Actions)
            • Loop - Actions
              • Set TempInt = (Custom value of (Picked unit))
              • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("BMduration"))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TempReal Less than or equal to 0.00
                • Then - Actions
                  • Custom script: set udg_TempBoolean = LoadBoolean(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("BMboolean"))
                  • Custom script: set udg_TempUnit = LoadUnitHandle(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("BMtarget"))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • TempBoolean Equal to True
                    • Then - Actions
                      • Unit - Remove BMAbility[5] from TempUnit
                      • Unit - Remove BMBuff[1] buff from TempUnit
                    • Else - Actions
                  • For each (Integer A) from 1 to 2, do (Actions)
                    • Loop - Actions
                      • Unit - Remove BMAbility[(Integer A)] from TempUnit
                  • Unit Group - Pick every unit in BMUnitGroup[TempInt] and do (Actions)
                    • Loop - Actions
                      • For each (Integer A) from 3 to 4, do (Actions)
                        • Loop - Actions
                          • Unit - Remove BMAbility[(Integer A)] from (Picked unit)
                      • Unit - Remove BMBuff[0] buff from (Picked unit)
                  • Custom script: call DestroyGroup(udg_BMUnitGroup[udg_TempInt])
                  • Unit Group - Remove (Picked unit) from BMDummyGroup
                  • Set BMGroupInteger = (BMGroupInteger - 1)
                  • Unit - Remove (Picked unit) from the game
                • Else - Actions
                  • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("BMduration"), udg_TempReal - 0.10)


Trigger:
  • Blessure Mortelle Damage
    • Events
      • Game - GDD_Event becomes Equal to 0.00
    • Conditions
      • (GDD_DamagedUnit has buff BMBuff[1]) Equal to True
      • GDD_Damage Greater than 0.00
    • Actions
      • Trigger - Turn off (This trigger)
      • Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing (GDD_Damage x 0.50) damage of attack type Chaos and damage type Universal
      • Special Effect - Create a special effect attached to the chest of GDD_DamagedUnit using Objects\Spawnmodels\Human\HumanBlood\HumanBloodPeasant.mdl
      • Special Effect - Destroy (Last created special effect)
      • Floating Text - Create floating text that reads (|cff9932cc+ + (String((Integer((GDD_Damage x 0.50)))))) above GDD_DamagedUnit with Z offset 0.00, using font size 10.00, color (100.00%, 100.00%, 100.00%), and 0.00% transparency
      • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
      • Floating Text - Change (Last created floating text): Disable permanence
      • Floating Text - Change the lifespan of (Last created floating text) to 2.50 seconds
      • Floating Text - Change the fading age of (Last created floating text) to 2.50 seconds
      • Trigger - Turn on (This trigger)


Penetration
penetrationbmp.png


Description:
Catherine strikes her enemies at their vital areas, causing critical damage. As more time passes, her first blow gains more potential. Catherine has a base critical chance of 15% and base multiplier of 1.5x. She gains 6.5% critical chance and 0.25x multipler per second.

Level 1 - Maximum chance of 41% and multiplier of 2.5x.
Level 2 - Maximum chance of 54% and multiplier of 3.0x.
Level 3 - Maximum chance of 67% and multiplier of 3.5x.
Level 4 - Maximum chance of 80% and multiplier of 4.0x.

Passive

BUff Placer

Note - The critical damage is a targeted damage, meaning that it cannot be cleaved.

Screenshot:
penetrationss.jpg

Code:
Trigger:
  • Penetration Learned
    • Events
      • Unit - A unit Learns a skill
    • Conditions
      • (Learned Hero Skill) Equal to Penetration
      • (Level of PeAbility[0] for (Triggering unit)) Equal to 1
      • ((Triggering unit) is an illusion) Equal to False
    • Actions
      • Set TempInt = (Level of PeAbility[0] for (Triggering unit))
      • Unit Group - Add (Triggering unit) to PeUnitGroup
      • Set PeGroupInteger = (PeGroupInteger + 1)
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Pechance"), udg_PeRealChance[udg_TempInt])
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Pecrit"), udg_PeRealMultiplier[udg_TempInt])
      • Trigger - Turn on Penetration Periodic <gen>


Trigger:
  • Penetration Periodic - Initially off
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • PeGroupInteger Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in PeUnitGroup and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of PeAbility[0] for (Picked unit)) Greater than 0
                • Then - Actions
                  • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Pechance"))
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • TempReal Greater than or equal to 80.00
                    • Then - Actions
                      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Pechance"), 80)
                      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Pecrit"), 4)
                      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Level of PeAbility[1] for (Picked unit)) Equal to 0
                        • Then - Actions
                          • Unit - Add PeAbility[1] to (Picked unit)
                        • Else - Actions
                    • Else - Actions
                      • Set TempInt = (Level of PeAbility[0] for (Picked unit))
                      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Pechance"), udg_TempReal + (udg_PeRealChanceInc[udg_TempInt] * 0.10))
                      • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Pecrit"))
                      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Pecrit"), udg_TempReal + (udg_PeRealMultiplierInc[udg_TempInt] * 0.10))
                • Else - Actions
                  • Unit Group - Remove (Picked unit) from PeUnitGroup
                  • Set PeGroupInteger = (PeGroupInteger - 1)


Trigger:
  • Penetration Damage
    • Events
      • Game - GDD_Event becomes Equal to 0.00
    • Conditions
      • GDD_Damage Greater than 0.00
      • Or - Any (Conditions) are true
        • Conditions
          • (GDD_DamagedUnit has buff PeBuff[0]) Equal to True
          • (GDD_DamagedUnit has buff PeBuff[1]) Equal to True
    • Actions
      • Trigger - Turn off (This trigger)
      • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(udg_GDD_DamageSource), StringHash("Pechance"))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Random real number between 1.00 and 100.00) Less than or equal to TempReal
        • Then - Actions
          • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(udg_GDD_DamageSource), StringHash("Pecrit"))
          • Unit - Cause GDD_DamageSource to damage GDD_DamagedUnit, dealing (GDD_Damage x (TempReal - 1.00)) damage of attack type Chaos and damage type Universal
          • Floating Text - Create floating text that reads ((String((Integer((GDD_Damage x TempReal))))) + !) above GDD_DamageSource with Z offset 0.00, using font size 10.00, color (100.00%, 0.00%, 0.00%), and 0.00% transparency
          • Floating Text - Set the velocity of (Last created floating text) to 64.00 towards 90.00 degrees
          • Floating Text - Change (Last created floating text): Disable permanence
          • Floating Text - Change the lifespan of (Last created floating text) to 2.50 seconds
          • Floating Text - Change the fading age of (Last created floating text) to 2.50 seconds
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of PeAbility[1] for GDD_DamageSource) Greater than 0
            • Then - Actions
              • Unit - Remove PeAbility[1] from GDD_DamageSource
            • Else - Actions
          • Set TempInt = (Level of PeAbility[0] for GDD_DamageSource)
          • Custom script: call SaveReal(udg_Hashtable, GetHandleId(udg_GDD_DamageSource), StringHash("Pechance"), udg_PeRealChance[udg_TempInt])
          • Custom script: call SaveReal(udg_Hashtable, GetHandleId(udg_GDD_DamageSource), StringHash("Pecrit"), udg_PeRealMultiplier[udg_TempInt])
        • Else - Actions
      • For each (Integer A) from 0 to 1, do (Actions)
        • Loop - Actions
          • Unit - Remove PeBuff[(Integer A)] buff from GDD_DamagedUnit
      • Trigger - Turn on (This trigger)

Cauchemar (Nightmare)
cauchemar.png


Description:
Catherine drowns herself in darkness, granting her enhanced power. She is granted a 15% chance critical with a 3x multiplier. She is also granted 350 area cleave and enhanced attack speed that decrease over 10 seconds.

Level 1 - 30% cleave and 50% attack speed.
Level 2 - 50% cleave and 75% attack speed.
Level 3 - 70% cleave and 100% attack speed.

Cast Range - Self
Target Type - Instant
Cooldown - 70 seconds

Screenshot:
cauchemarss.jpg

Code:
Trigger:
  • Cauchemar Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to CaAbility[0]
    • Actions
      • Set TempPoint = (Position of (Triggering unit))
      • Special Effect - Create a special effect at TempPoint using war3mapImported\DarkLightning.mdx
      • Special Effect - Destroy (Last created special effect)
      • Special Effect - Create a special effect at TempPoint using war3mapImported\DarkLightningNova.mdx
      • Special Effect - Destroy (Last created special effect)
      • Unit - Add CaAbility[6] to (Triggering unit)
      • Set TempReal = CaRealCleave[(Level of CaAbility[0] for (Triggering unit))]
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Cacleave"), udg_TempReal)
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Cacleaveinc"), udg_TempReal / 100)
      • Set TempDivider = 10
      • For each (Integer A) from 1 to 2, do (Actions)
        • Loop - Actions
          • Set TempInt = ((Integer(TempReal)) / TempDivider)
          • Unit - Set level of CaAbility[(Integer A)] for (Triggering unit) to (TempInt + 1)
          • Set TempReal = (TempReal - (Real((TempInt x TempDivider))))
          • Set TempDivider = (TempDivider / 10)
      • Set TempReal = CaRealAS[(Level of CaAbility[0] for (Triggering unit))]
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Caas"), udg_TempReal)
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Caasinc"), udg_TempReal / 100)
      • Set TempDivider = 100
      • For each (Integer A) from 3 to 5, do (Actions)
        • Loop - Actions
          • Unit - Add CaAbility[(Integer A)] to (Triggering unit)
          • Set TempInt = ((Integer(TempReal)) / TempDivider)
          • Unit - Set level of CaAbility[(Integer A)] for (Triggering unit) to (TempInt + 1)
          • Set TempReal = (TempReal - (Real((TempInt x TempDivider))))
          • Set TempDivider = (TempDivider / 10)
      • Set TempInt = (Level of CaAbility[0] for (Triggering unit))
      • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetTriggerUnit()), StringHash("Caduration"), udg_CaRealDuration[udg_TempInt])
      • Unit Group - Add (Triggering unit) to CaUnitGroup
      • Set CaGroupInteger = (CaGroupInteger + 1)
      • Trigger - Turn on Cauchemar Periodic <gen>
      • Custom script: call RemoveLocation(udg_TempPoint)


Trigger:
  • Cauchemar Periodic - Initially off
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • CaGroupInteger Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in CaUnitGroup and do (Actions)
            • Loop - Actions
              • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Caduration"))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • TempReal Less than or equal to 0.00
                • Then - Actions
                  • Unit - Remove CaAbility[6] from (Picked unit)
                  • For each (Integer A) from 3 to 5, do (Actions)
                    • Loop - Actions
                      • Unit - Remove CaAbility[(Integer A)] from (Picked unit)
                  • Unit Group - Remove (Picked unit) from CaUnitGroup
                  • Set CaGroupInteger = (CaGroupInteger - 1)
                • Else - Actions
                  • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Cacleave")) - LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Cacleaveinc"))
                  • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Cacleave"), udg_TempReal)
                  • Set TempDivider = 10
                  • For each (Integer A) from 1 to 2, do (Actions)
                    • Loop - Actions
                      • Set TempInt = ((Integer(TempReal)) / TempDivider)
                      • Unit - Set level of CaAbility[(Integer A)] for (Picked unit) to (TempInt + 1)
                      • Set TempReal = (TempReal - (Real((TempInt x TempDivider))))
                      • Set TempDivider = (TempDivider / 10)
                  • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Caas")) - LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Caasinc"))
                  • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Caas"), udg_TempReal)
                  • Set TempDivider = 100
                  • For each (Integer A) from 3 to 5, do (Actions)
                    • Loop - Actions
                      • Set TempInt = ((Integer(TempReal)) / TempDivider)
                      • Unit - Set level of CaAbility[(Integer A)] for (Picked unit) to (TempInt + 1)
                      • Set TempReal = (TempReal - (Real((TempInt x TempDivider))))
                      • Set TempDivider = (TempDivider / 10)
                  • Custom script: set udg_TempReal = LoadReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Caduration"))
                  • Custom script: call SaveReal(udg_Hashtable, GetHandleId(GetEnumUnit()), StringHash("Caduration"), udg_TempReal - 0.10)



Credits
Code:
[COLOR="Red"]GDD[/COLOR] - [URL="http://www.thehelper.net/forums/member.php?u=26460"]Weep[/URL]
[COLOR="Red"]Hero Model[/COLOR] - debode @ [url]www.hiveworkshop.com[/url]
[COLOR="Red"]Fente Model[/COLOR] - Thrikodius @ [url]www.hiveworkshop.com[/url]
[COLOR="Red"]Blessure Mortelle Model[/COLOR] - JetFangInferno @ [url]www.hiveworkshop.com[/url]
[COLOR="Red"]Cauchemar Model[/COLOR] - JetFangInferno @ [url]www.hiveworkshop.com[/url]
[COLOR="Red"]Spell Icons[/COLOR] - [url]http://www.swordofthenewworldwiki.com/[/url]



Changelogs
Code:
[B]Version 1.0[/B]
- Initial release
[B]Version 1.1[/B]
- Fixed an issue where icons caused Mac Version of Warcraft 3 to freeze.


Any type of feedback will be appreciated. Please post constructive criticisms if you're intending to criticize this spell pack. Thank you.
 

Attachments

  • Assassine Spellpack v1.1.w3x
    308.6 KB · Views: 484

Laiev

Hey Listen!!
Reaction score
188
If i'm not wrong, this model got a better icon (which correspond the model) <suggestion>

Also.. another wonderful spellpack :thup:
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
And Glenphir proves that he's an awesome spell scripter (again)
God-damn, I wish I was creative that way =/
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
@Glenphir
Note - Shuffle only appears while Fente images are present.

I think you should make it have the 'Passive' icon when there are no images nearby (unclickable) and change it to 'Active' when there are images.

It'll look kinda' weird if icons start disappearing and re-appearing, I think.
 

Ayanami

칼리
Reaction score
288
@Glenphir


I think you should make it have the 'Passive' icon when there are no images nearby (unclickable) and change it to 'Active' when there are images.

It'll look kinda' weird if icons start disappearing and re-appearing, I think.

Oh. Because the skill Shuffle is only meant to appear if the Fente images are present.
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
I know.
But making it passive and unclickable (You know, those passive skills have their icons really dark) when there are no Fente images would look a little cleaner (I think).

It'll seem weird to have an empty skill slot when there aren't any Fente images, I think.
It should be passive'd and have some tooltip saying that there are no Fente images or something XD
 

polo2005

Wana start playing LoL? http://tinyurl.com/369as27
Reaction score
97
good looking spells o_O
is all effects custom files?
Also the icon didn't match the hero imo^^
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
The icon is godly. (Or should I say, goddess-ly?)
It's the model, meh, hard to find any modeler who can make such detailed models anymore..

I remember there was this one dude..
But I've forgotten his name and he's no longer modeling for WC3 xD
 

Ayanami

칼리
Reaction score
288
Yeah, couldn't find a decent model for her, sadly. Here's a link to the ACTUAL Catherine Torsche in Granado Espada. Her skills are totally different, just used her name here :p. Be amazed!

Click me!
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
The vid was laggy T.T
I couldn't see the true beauty xD

Hmm..
I always wanted to try that game..
But I heard it was P2P (Pay-2-Play) =/
 

Ayanami

칼리
Reaction score
288
The vid was laggy T.T
I couldn't see the true beauty xD

Hmm..
I always wanted to try that game..
But I heard it was P2P (Pay-2-Play) =/

Nah, it's free actually.

Well on-topic, any suggestion to improve spells, or anything?
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
I've already added my suggestion xD
And I never did understand GUI =x
It's too complicated.
 

SineCosine

I'm still looking for my Tangent
Reaction score
77
Hmm..
You've inspired me to decide to just make a random spell pack..

*Wanders off*
 

polo2005

Wana start playing LoL? http://tinyurl.com/369as27
Reaction score
97
:O now i'm confused, doesn't it spell as "Assassin"? or do i think about wrong thing
 

polo2005

Wana start playing LoL? http://tinyurl.com/369as27
Reaction score
97
oO well atleast in d2 (diablo 2)
the "assassin" is spelled Assassin and she is a female character :D
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top