• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Icon/Model/Spell Team Contest - Hive Member[+100 Rep]

Status
Not open for further replies.
@Kyrbi0 , your 'precise' definition adds exactly nothing technical to the current one, let's don't get ridiculous.

Giv more time plox.
Mostly because of time zone
That makes no sense now. Else, elaborate.

@MyPad , read the date definition again, and please explain which part exactly is confusing, but maybe we can work it out:

conclude on 30th December 2017 GMT (day is included)

-> I can still work on 30th december in GMT time, YEY!
-> When it gets 31th december in GMT time, I can't work anymore, NEY!

Not sure there will be again a same extension, maybe this time with a small % malus for ones who need an extra week. But we will announce this tomorrow, try to finish it! I guess one more day, so including 31 as final date would not help everyone anyways, or, for those who need more time?
 
Level 35
Joined
Oct 9, 2006
Messages
6,392
I guess one more day, so including 31 as final date would not help everyone anyways, or, for those who need more time?

Would love to include the 31th, Christmas is way too busy. Although I could easily use more time, mostly due to the a birthday on the 30th and the obvious for the 31th (as I find myself being the one to create a texture for the model as well, besides the icons - this contest does a great job at showing both the joys and frustration about teamwork, more so over a period where a lot of events make communication hard). Still don't really want to go overboard with extension given that we already had one, so though time is short, a very late night for the should make things a lot more possible.

Anyhow, time for some WIP's to prove that work is actually being done with this icon process - even if it perhaps spoils the surprise :wgrin:
icon-moose-jpg.288200
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
The ability is finally done :D here is the blue paint mechanic: BluePaintWIP

  • BPaint Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- --------
      • -------- CONFIG START --------
      • -------- --------
      • -------- --------
      • -------- imported object editor data --------
      • Set BPaint_PAINT_GOBLIN_UNIT_TYPE = Blue Paint Goblin
      • -------- ^ unit-type that is created when the blue paint can reaches the target location --------
      • -------- --------
      • -------- imported triggers --------
      • Set BPaint_TRIGGER_DEATH = BPaint Goblin Death <gen>
      • Set BPaint_TRIGGER_CREATE_POOL = BPaint Index <gen>
      • Set BPaint_TRIGGER_LOOP_POOL = BPaint Loop <gen>
      • -------- --------
      • -------- how many goblins will spawn after PBomb_MissileUnit[] reaches the target location --------
      • Set BPaint_GOBLIN_COUNT = 4
      • Set BPaint_GOBLIN_COUNT_PER_LEVEL = 1
      • -------- --------
      • -------- time (in seconds) the GOBLIN_UNIT_TYPE will last --------
      • Set BPaint_GOBLIN_DURATION = 45.00
      • Set BPaint_GOBLIN_DURATION_PER_LVL = 0.00
      • -------- --------
      • -------- time (in seconds) puddles will last after a Blue Goblin dies --------
      • Set BPaint_PUDDLE_DURATION = 6.00
      • Set BPaint_PUDDLE_DURATION_PER_LVL = 0.00
      • -------- --------
      • -------- how close a blue goblin must be to pick up the puddle --------
      • Set BPaint_AOE = 80.00
      • Set BPaint_AOE_PER_LEVEL = 0.00
      • -------- --------
      • -------- starting HP of the blue goblins (does not include Hit Points Maximum data field in Object Editor) --------
      • Set BPaint_START_HP = 25
      • Set BPaint_START_HP_PER_LEVEL = 25
      • -------- --------
      • -------- starting damage of the blue goblins (does not include Damage Base data field in Object Editor) --------
      • Set BPaint_START_DMG = 0
      • Set BPaint_START_DMG_PER_LEVEL = 3
      • -------- --------
      • -------- starting size of the blue goblins --------
      • Set BPaint_START_SIZE = 1.00
      • Set BPaint_START_SIZE_PER_LEVEL = 0.00
      • -------- --------
      • -------- bonus hit points given to blue goblins that walk over the puddle --------
      • Set BPaint_BONUS_HP = 70
      • Set BPaint_BONUS_HP_PER_LEVEL = 0
      • -------- --------
      • -------- bonus damage given to blue goblins that walk over the puddle --------
      • Set BPaint_BONUS_DMG = 5
      • Set BPaint_BONUS_DMG_PER_LEVEL = 0
      • -------- --------
      • -------- bonus size given to blue goblins that walk over the puddle --------
      • Set BPaint_BONUS_SIZE = 0.10
      • Set BPaint_BONUS_SIZE_PER_LEVEL = 0.00
      • -------- --------
      • -------- bonus movement speed given to blue goblins that walk over the puddle --------
      • Set BPaint_BONUS_MS = -5.00
      • Set BPaint_BONUS_MS_PER_LEVEL = 0.00
      • -------- --------
      • -------- bonus attack speed given to blue goblins that walk over the puddle --------
      • Set BPaint_BONUS_AS = -5
      • Set BPaint_BONUS_AS_PER_LEVEL = 0
      • -------- --------
      • -------- special effect for puddle --------
      • Set BPaint_SFX_PUDDLE = PaintBombPuddle_Blue.mdl
      • Set BPaint_SFX_PUDDLE_AP = origin
      • Set BPaint_SFX_PUDDLE_SIZE = 1.00
      • Set BPaint_SFX_PUDDLE_DEATH_TIMER = 0.25
      • -------- ^ how much time (in seconds) is needed for death sfx to play --------
      • -------- --------
      • -------- other --------
      • Set BPaint_ANIMATION_START = birth
      • -------- ^ animation that PAINT_GOBLIN_UNIT_TYPE will play when they are created --------
      • Set BPaint_ANIMATION_RESET = stand
      • -------- ^ animation PAINT_GOBLIN_UNIT_TYPE will reset to after ANIMATION_START finishes --------
      • Set BPaint_ANIMATION_PUDDLE = birth
      • -------- ^ animation that the goblin will play when they walk over a blue puddle --------
      • Set BPaint_PERIODIC_TIMER = 0.03
      • -------- --------
      • -------- --------
      • -------- CONFIG END --------
      • -------- --------
      • Trigger - Add to BPaint_TRIGGER_LOOP_POOL the event (Time - Every BPaint_PERIODIC_TIMER seconds of game time)
      • Set BPaint_KEY_SPELL_ID = 7
      • Set BPaint_KEY_CURRENT_SIZE = 8
      • Set BPaint_KEY_OWNER = 9
      • Set BPaint_KEY_ABILITY_LEVEL = 10
      • Set BPaint_KEY_PUDDLE_X = 11
      • Set BPaint_KEY_PUDDLE_Y = 12
      • Set BPaint_KEY_PUDDLE_DURATION = 13
      • Set BPaint_KEY_PUDDLE_RADIUS = 14
      • Set BPaint_KEY_PUDDLE_SFX = 15
      • -------- preload --------
      • Unit - Create 1 BPaint_PAINT_GOBLIN_UNIT_TYPE for Neutral Extra at PBomb_LocZ facing Default building facing degrees
      • Set BPaint_TempUnit = (Last created unit)
      • Special Effect - Create a special effect attached to the BPaint_SFX_PUDDLE_AP of BPaint_TempUnit using BPaint_SFX_PUDDLE
      • Special Effect - Destroy (Last created special effect)
      • Unit - Remove BPaint_TempUnit from the game
      • -------- math calculations --------
      • Set BPaint_START_SIZE = (BPaint_START_SIZE x 100.00)
      • Set BPaint_START_SIZE_PER_LEVEL = (BPaint_START_SIZE_PER_LEVEL x 100.00)
      • Set BPaint_BONUS_SIZE = (BPaint_BONUS_SIZE x 100.00)
      • Set BPaint_BONUS_SIZE_PER_LEVEL = (BPaint_BONUS_SIZE_PER_LEVEL x 100.00)
      • Set BPaint_BONUS_MS = (BPaint_BONUS_MS / 100.00)
      • Set BPaint_BONUS_MS_PER_LEVEL = (BPaint_BONUS_MS_PER_LEVEL / 100.00)
      • Set BPaint_SFX_PUDDLE_SIZE = (BPaint_SFX_PUDDLE_SIZE x 100.00)
  • BPaint Goblin Index
    • Events
    • Conditions
    • Actions
      • -------- BPaint Goblin Index --------
      • -------- this trigger will create the Blue Paint Goblins at the targeted location --------
      • -------- if the unit still has the buff at the end of the duration, they will be snared --------
      • -------- --------
      • -------- members --------
      • -------- Caster[] = unit who casted PBomb_ABILITY --------
      • -------- AbilityLvl[] = level of PBomb_ABILITY when the caster initially casted the ability --------
      • -------- CurrentColor[] - the color the caster had selected when they casted PBomb_ABILITY --------
      • -------- GoblinCount[] = current number of goblins in the squad --------
      • -------- --------
      • -------- --------
      • Set BPaint_SpellCount = (BPaint_SpellCount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BPaint_SpellCount Equal to 1
        • Then - Actions
          • Trigger - Turn on BPaint_TRIGGER_DEATH
        • Else - Actions
          • -------- do nothing --------
      • -------- --------
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BPaint_RecycledSize Equal to 0
        • Then - Actions
          • Set BPaint_MaxIndex = (BPaint_MaxIndex + 1)
          • Set BPaint_SpellId = BPaint_MaxIndex
        • Else - Actions
          • Set BPaint_RecycledSize = (BPaint_RecycledSize - 1)
          • Set BPaint_SpellId = BPaint_RecycledStack[BPaint_RecycledSize]
      • Set BPaint_NodeNext[BPaint_SpellId] = 0
      • Set BPaint_NodePrev[BPaint_SpellId] = BPaint_NodePrev[0]
      • Set BPaint_NodePrev[BPaint_NodePrev[0]] = BPaint_SpellId
      • Set BPaint_NodePrev[0] = BPaint_SpellId
      • -------- --------
      • Set BPaint_Caster[BPaint_SpellId] = PBomb_Caster[PBomb_SpellId]
      • Set BPaint_AbilityLvl[BPaint_SpellId] = PBomb_AbilityLvl[PBomb_SpellId]
      • Set BPaint_CurrentColor[BPaint_SpellId] = PBomb_CurrentColor[PBomb_SpellId]
      • Set BPaint_GoblinCount[BPaint_SpellId] = (BPaint_GOBLIN_COUNT + (BPaint_GOBLIN_COUNT_PER_LEVEL x BPaint_AbilityLvl[BPaint_SpellId]))
      • -------- --------
      • Set BPaint_TempReal = (BPaint_GOBLIN_DURATION + (BPaint_GOBLIN_DURATION_PER_LVL x (Real(BPaint_AbilityLvl[BPaint_SpellId]))))
      • Set BPaint_HitPoints = (BPaint_START_HP + (BPaint_START_HP_PER_LEVEL x BPaint_AbilityLvl[BPaint_SpellId]))
      • Set BPaint_Damage = (BPaint_START_DMG + (BPaint_START_DMG_PER_LEVEL x BPaint_AbilityLvl[BPaint_SpellId]))
      • Set BPaint_TempLoc = (Position of PBomb_MissileUnit[PBomb_SpellId])
      • For each (Integer BPaint_TempInt) from 1 to BPaint_GoblinCount[BPaint_SpellId], do (Actions)
        • Loop - Actions
          • Unit - Create 1 BPaint_PAINT_GOBLIN_UNIT_TYPE for PBomb_Owner[PBomb_SpellId] at BPaint_TempLoc facing Default building facing degrees
          • Set BPaint_TempUnit = (Last created unit)
          • Animation - Change BPaint_TempUnit's size to (BPaint_START_SIZE%, 100.00%, 100.00%) of its original size
          • Animation - Play BPaint_TempUnit's BPaint_ANIMATION_START animation
          • Animation - Queue BPaint_TempUnit's BPaint_ANIMATION_RESET animation
          • Unit - Add a BPaint_TempReal second Generic expiration timer to BPaint_TempUnit
          • -------- --------
          • Custom script: call CSS_AddBonus(udg_BPaint_TempUnit, udg_BPaint_Damage,2)
          • Custom script: call CSS_AddBonus(udg_BPaint_TempUnit, udg_BPaint_HitPoints,8)
          • -------- --------
          • Custom script: set udg_BPaint_UnitId = GetHandleId(udg_BPaint_TempUnit)
          • Hashtable - Save BPaint_SpellId as BPaint_KEY_SPELL_ID of BPaint_UnitId in PBomb_Hash
          • Hashtable - Save BPaint_START_SIZE as BPaint_KEY_CURRENT_SIZE of BPaint_UnitId in PBomb_Hash
      • -------- --------
      • Custom script: call RemoveLocation(udg_BPaint_TempLoc)
  • BPaint Goblin Death
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • -------- BPaint Goblin Death --------
      • -------- this trigger will check to see if the dying unit is a Paint Goblin --------
      • -------- if so, a puddle will be created and the number of paint goblins for its instance will decrement --------
      • -------- --------
      • -------- members --------
      • -------- Caster[] = unit who casted PBomb_ABILITY --------
      • -------- AbilityLvl[] = level of PBomb_ABILITY when the caster initially casted the ability --------
      • -------- CurrentColor[] - the color the caster had selected when they casted PBomb_ABILITY --------
      • -------- GoblinCount[] = current number of goblins in the squad --------
      • -------- --------
      • -------- --------
      • -------- checking if the dying unit is a Paint Goblin --------
      • Set BPaint_TempUnit = (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Unit-type of BPaint_TempUnit) Equal to BPaint_PAINT_GOBLIN_UNIT_TYPE
        • Then - Actions
          • -------- dying unit is a Paint Goblin --------
          • Trigger - Run BPaint_TRIGGER_CREATE_POOL (ignoring conditions)
          • -------- checking if the goblin was the last squad member --------
          • Custom script: set udg_BPaint_UnitId = GetHandleId(udg_BPaint_TempUnit)
          • -------- --------
          • -------- manually removing child key because other child keys still might be in use --------
          • Custom script: call RemoveSavedInteger(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_CURRENT_SIZE)
          • -------- --------
          • Set BPaint_SpellId = (Load BPaint_KEY_SPELL_ID of BPaint_UnitId from PBomb_Hash)
          • Set BPaint_GoblinCount[BPaint_SpellId] = (BPaint_GoblinCount[BPaint_SpellId] - 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BPaint_GoblinCount[BPaint_SpellId] Equal to 0
            • Then - Actions
              • -------- goblin was the last squad member; deallocate --------
              • -------- --------
              • -------- decreasing number of active puddles for this color --------
              • Custom script: set udg_SPaint_UnitId = GetHandleId(udg_BPaint_Caster[udg_BPaint_SpellId])
              • Hashtable - Save ((Load PBomb_KEY_ACTIVE_COLOR_COUNT[BPaint_CurrentColor[BPaint_SpellId]] of SPaint_UnitId from PBomb_Hash) - 1) as PBomb_KEY_ACTIVE_COLOR_COUNT[BPaint_CurrentColor[BPaint_SpellId]] of SPaint_UnitId in PBomb_Hash
              • -------- --------
              • Set BPaint_RecycledStack[BPaint_RecycledSize] = BPaint_SpellId
              • Set BPaint_RecycledSize = (BPaint_RecycledSize + 1)
              • Set BPaint_NodeNext[BPaint_NodePrev[BPaint_SpellId]] = BPaint_NodeNext[BPaint_SpellId]
              • Set BPaint_NodePrev[BPaint_NodeNext[BPaint_SpellId]] = BPaint_NodePrev[BPaint_SpellId]
              • -------- --------
              • Set BPaint_SpellCount = (BPaint_SpellCount - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BPaint_SpellCount Equal to 0
                • Then - Actions
                  • Trigger - Turn off BPaint_TRIGGER_DEATH
                • Else - Actions
                  • -------- do nothing --------
            • Else - Actions
              • -------- there are still other goblins alive in its squad; do nothing --------
          • -------- --------
          • -------- manually removing child keys because other child keys still might be in use --------
          • Custom script: call RemoveSavedInteger(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_SPELL_ID)
        • Else - Actions
          • -------- dying unit is not a Paint Goblin; do nothing --------
  • BPaint Index
    • Events
    • Conditions
    • Actions
      • -------- BPaint Index --------
      • -------- this trigger will create a puddle on the dying goblin's location --------
      • -------- --------
      • -------- --------
      • Custom script: set udg_BPaint_PuddleUnit = GetRecycledDummyAnyAngle(GetUnitX(udg_BPaint_TempUnit), GetUnitY(udg_BPaint_TempUnit) ,0.00)
      • Animation - Change BPaint_PuddleUnit's size to (BPaint_SFX_PUDDLE_SIZE%, 100.00%, 100.00%) of its original size
      • Special Effect - Create a special effect attached to the BPaint_SFX_PUDDLE_AP of BPaint_PuddleUnit using BPaint_SFX_PUDDLE
      • -------- --------
      • Unit Group - Add BPaint_PuddleUnit to BPaint_PuddleGroup
      • Set BPaint_GroupCount = (BPaint_GroupCount + 1)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • BPaint_GroupCount Equal to 1
        • Then - Actions
          • Trigger - Turn on BPaint_TRIGGER_LOOP_POOL
        • Else - Actions
          • -------- do nothing --------
      • -------- --------
      • Custom script: set udg_BPaint_PuddleX = GetUnitX(udg_BPaint_PuddleUnit)
      • Custom script: set udg_BPaint_PuddleY = GetUnitY(udg_BPaint_PuddleUnit)
      • -------- --------
      • Custom script: set udg_BPaint_UnitId = GetHandleId(udg_BPaint_PuddleUnit)
      • Hashtable - Save Handle Of(Owner of BPaint_TempUnit) as BPaint_KEY_OWNER of BPaint_UnitId in PBomb_Hash
      • Hashtable - Save BPaint_AbilityLvl[BPaint_SpellId] as BPaint_KEY_ABILITY_LEVEL of BPaint_UnitId in PBomb_Hash
      • Hashtable - Save BPaint_PuddleX as BPaint_KEY_PUDDLE_X of BPaint_UnitId in PBomb_Hash
      • Hashtable - Save BPaint_PuddleY as BPaint_KEY_PUDDLE_Y of BPaint_UnitId in PBomb_Hash
      • Hashtable - Save (BPaint_PUDDLE_DURATION + (BPaint_PUDDLE_DURATION_PER_LVL x (Real(BPaint_AbilityLvl[BPaint_SpellId])))) as BPaint_KEY_PUDDLE_DURATION of BPaint_UnitId in PBomb_Hash
      • Hashtable - Save (BPaint_AOE + (BPaint_AOE_PER_LEVEL x (Real(BPaint_AbilityLvl[BPaint_SpellId])))) as BPaint_KEY_PUDDLE_RADIUS of BPaint_UnitId in PBomb_Hash
      • Hashtable - Save Handle Of(Last created special effect) as BPaint_KEY_PUDDLE_SFX of BPaint_UnitId in PBomb_Hash
  • BPaint Loop
    • Events
    • Conditions
    • Actions
      • -------- BPaint Loop --------
      • -------- this trigger will periodically check if a blue goblin is near the blue puddle --------
      • -------- if there is a blue paint goblin near the paint puddle, the puddle will disappear and apply the bonus to the goblin --------
      • -------- --------
      • -------- --------
      • Unit Group - Pick every unit in BPaint_PuddleGroup and do (Actions)
        • Loop - Actions
          • Set BPaint_PuddleUnit = (Picked unit)
          • Custom script: set udg_BPaint_UnitId = GetHandleId(udg_BPaint_PuddleUnit)
          • -------- --------
          • -------- checking if the puddle reached the end of its life span --------
          • Set BPaint_Counter = (Load BPaint_KEY_PUDDLE_DURATION of BPaint_UnitId from PBomb_Hash)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • BPaint_Counter Less than or equal to 0.00
            • Then - Actions
              • -------- puddle reached the end of its lifespan; deallocate --------
              • Special Effect - Destroy (Load BPaint_KEY_PUDDLE_SFX of BPaint_UnitId in PBomb_Hash)
              • Custom script: call DummyAddRecycleTimer(udg_BPaint_PuddleUnit, udg_BPaint_SFX_PUDDLE_DEATH_TIMER)
              • -------- --------
              • -------- manually removing child keys because other child keys still might be in use --------
              • Custom script: call RemoveSavedHandle(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_OWNER)
              • Custom script: call RemoveSavedInteger(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_ABILITY_LEVEL)
              • Custom script: call RemoveSavedReal(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_PUDDLE_X)
              • Custom script: call RemoveSavedReal(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_PUDDLE_Y)
              • Custom script: call RemoveSavedReal(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_PUDDLE_DURATION)
              • Custom script: call RemoveSavedReal(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_PUDDLE_RADIUS)
              • Custom script: call RemoveSavedHandle(udg_PBomb_Hash, udg_BPaint_UnitId, udg_BPaint_KEY_PUDDLE_SFX)
              • -------- --------
              • Unit Group - Remove BPaint_PuddleUnit from BPaint_PuddleGroup
              • Set BPaint_GroupCount = (BPaint_GroupCount - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • BPaint_GroupCount Equal to 0
                • Then - Actions
                  • Custom script: call BJDebugMsg("LOOP OFF")
                  • Trigger - Turn off BPaint_TRIGGER_LOOP_POOL
                • Else - Actions
                  • -------- do nothing --------
            • Else - Actions
              • -------- puddle has not reached the end of its lifespan; continue searching for nearby goblin units --------
              • Hashtable - Save (BPaint_Counter - BPaint_PERIODIC_TIMER) as BPaint_KEY_PUDDLE_DURATION of BPaint_UnitId in PBomb_Hash
              • -------- --------
              • Set BPaint_Owner = (Load BPaint_KEY_OWNER of BPaint_UnitId in PBomb_Hash)
              • Set BPaint_Radius = (Load BPaint_KEY_PUDDLE_RADIUS of BPaint_UnitId from PBomb_Hash)
              • Set BPaint_PuddleX = (Load BPaint_KEY_PUDDLE_X of BPaint_UnitId from PBomb_Hash)
              • Set BPaint_PuddleY = (Load BPaint_KEY_PUDDLE_Y of BPaint_UnitId from PBomb_Hash)
              • -------- --------
              • -------- using FirstOfGroup so that only a single goblin can get the bonus --------
              • Custom script: call GroupEnumUnitsInRange(udg_PBomb_InRangeGroup, udg_BPaint_PuddleX, udg_BPaint_PuddleY, udg_BPaint_Radius, null)
              • Custom script: loop
              • Custom script: set udg_BPaint_TempUnit = FirstOfGroup(udg_PBomb_InRangeGroup)
              • Custom script: exitwhen (udg_BPaint_TempUnit == null)
              • -------- --------
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (BPaint_TempUnit is alive) Equal to True
                  • (BPaint_TempUnit belongs to an ally of BPaint_Owner) Equal to True
                  • (Unit-type of BPaint_TempUnit) Equal to BPaint_PAINT_GOBLIN_UNIT_TYPE
                • Then - Actions
                  • -------- a paint goblin is standing near the puddle; apply bonuses --------
                  • Set BPaint_TempInt = (Load BPaint_KEY_ABILITY_LEVEL of BPaint_UnitId from PBomb_Hash)
                  • Set BPaint_TempReal = (Real(BPaint_TempInt))
                  • -------- --------
                  • Set BPaint_AttackSpeed = (BPaint_BONUS_AS + (BPaint_BONUS_AS_PER_LEVEL x BPaint_TempInt))
                  • Set BPaint_Damage = (BPaint_START_DMG + (BPaint_START_DMG_PER_LEVEL x BPaint_TempInt))
                  • Set BPaint_HitPoints = (BPaint_START_HP + (BPaint_START_HP_PER_LEVEL x BPaint_TempInt))
                  • Set BPaint_Size = (BPaint_BONUS_SIZE + (BPaint_BONUS_SIZE_PER_LEVEL x BPaint_TempReal))
                  • Set BPaint_MoveSpeed = (BPaint_BONUS_MS + (BPaint_BONUS_MS_PER_LEVEL x BPaint_TempReal))
                  • -------- --------
                  • Custom script: call CSS_AddBonus(udg_BPaint_TempUnit, udg_BPaint_AttackSpeed,1)
                  • Custom script: call CSS_AddBonus(udg_BPaint_TempUnit, udg_BPaint_Damage,2)
                  • Custom script: call CSS_AddBonus(udg_BPaint_TempUnit, udg_BPaint_HitPoints,8)
                  • -------- --------
                  • Custom script: set udg_BPaint_TempInt = GetHandleId(udg_BPaint_TempUnit)
                  • Set BPaint_TempReal = (Load BPaint_KEY_CURRENT_SIZE of BPaint_UnitId from PBomb_Hash)
                  • Set BPaint_Size = ((Load BPaint_KEY_CURRENT_SIZE of BPaint_TempInt from PBomb_Hash) + BPaint_Size)
                  • Animation - Change BPaint_TempUnit's size to (BPaint_Size%, 100.00%, 100.00%) of its original size
                  • Hashtable - Save BPaint_Size as BPaint_KEY_CURRENT_SIZE of BPaint_TempInt in PBomb_Hash
                  • -------- --------
                  • Set BPaint_TempReal = (Current movement speed of BPaint_TempUnit)
                  • Unit - Set BPaint_TempUnit movement speed to (BPaint_TempReal + (BPaint_TempReal x BPaint_MoveSpeed))
                  • -------- --------
                  • Animation - Play BPaint_TempUnit's BPaint_ANIMATION_PUDDLE animation
                  • Animation - Queue BPaint_TempUnit's BPaint_ANIMATION_RESET animation
                  • -------- --------
                  • -------- setting counter to 0 to deallocate index on next timeout --------
                  • Hashtable - Save 0.00 as BPaint_KEY_PUDDLE_DURATION of BPaint_UnitId in PBomb_Hash
                  • -------- --------
                  • Unit Group - Remove all units from PBomb_InRangeGroup
                • Else - Actions
                  • -------- unit did not pass filters; do nothing --------
                  • Unit Group - Remove BPaint_TempUnit from PBomb_InRangeGroup
              • -------- --------
              • Custom script: endloop
Now I'm just going to spend the next hour or so debugging and reviewing the code o: then I will upload it into the Spell section!
 
Alright, here's the next WIP. I changed the name and removed some config to fit the newer concept.


  • SD Config
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- Ability --------
      • Set SD_Ability = Soul Distraction
      • -------- Bond break model --------
      • Set SD_ExplosionModel = Objects\Spawnmodels\Undead\UCancelDeath\UCancelDeath.mdl
      • -------- Channel time - make sure to set it equal to Follow Through Time in the ability --------
      • Set SD_ChannelTime[1] = 5.00
      • Set SD_ChannelTime[2] = 5.00
      • Set SD_ChannelTime[3] = 5.00
      • -------- Damage per second --------
      • Set SD_DamageCharge[1] = 25.00
      • Set SD_DamageCharge[2] = 50.00
      • Set SD_DamageCharge[3] = 100.00
      • -------- END CONFIG --------
      • Set SD_TimeOut = 0.03
      • Trigger - Add to SD Channel <gen> the event (Time - Every SD_TimeOut seconds of game time)
  • SD Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to SD_Ability
    • Actions
      • Set SD_Index = (SD_Index + 1)
      • Set SD_Caster[SD_Index] = (Triggering unit)
      • Set SD_Target[SD_Index] = (Target unit of ability being cast)
      • Set SD_Level[SD_Index] = (Level of SD_Ability for SD_Caster[SD_Index])
      • Set SD_Time[SD_Index] = 0.00
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SD_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on SD Channel <gen>
        • Else - Actions
 
So yes, let's draw a new deadline, this will be final date. There's no malus for the week.

New Deadline:

7th January 2018
GMT (day is included).

Don't all forget:

  • The final entry must be posted before the deadline in this thread using a demo/test map. The post should be a little presentation of the hero, and must link to all submitted components of the hero (link to Model, Icons, Spell in the resource section).
  • The test map's name should be "<team> + <hero name>" and it must have decent testing conditions. Which means the user can test various aspects and behavior of the spell/code under certain conditions without too much of effort. For example cliffs/water/trees might be provided already in a spell demonstration, or chat commands might be given as well.

Good luck, hope to see the entries during week!
 
Probably finished with the hero icon,
WIP of the ability icon I (morph-type ability, so this one depicts the hero actually activating it)
 

Attachments

  • BTNGeneralFrank.jpg
    BTNGeneralFrank.jpg
    3.7 KB · Views: 163
  • DISBTNGeneralFrank.png
    DISBTNGeneralFrank.png
    6.5 KB · Views: 162
  • General Frank Deploy Tank Factory.png
    General Frank Deploy Tank Factory.png
    106.4 KB · Views: 156
  • General Frank 6.png
    General Frank 6.png
    822.5 KB · Views: 182
Level 37
Joined
Jul 22, 2015
Messages
3,485
HeroPreview.png

Goblin Artist
by the DREAM TEAM
a.k.a Direfury, KILLCIDE, & Mr.Goblin



Mr.Goblin, The Goblin Artist
BTNMrGoblin.jpg

We decided to create Mr.Goblin because the idea of a tiny, rampaging Goblin with an orange beard, huge grin, and a humongous paint brush was too good to pass. Mr.Goblin was originally not a part of our team, but we figured to ask him to join us because who no better to draw the art of Mr.Goblin other than himself :D obviously, the Hero would be a goblin because of his avatar, and his name. The artist aspect came in because Mr.Goblin's godlike talent of 2D art.
Paint Bomb
BTNPaintBombV1.jpg
BTNPaintBombV2.jpg

Throws a can of paint at the target location. The color of the paint will determine what happens once the can hits the ground.

Red - After a short delay, nearby enemy units will take damage. (Preview)
Yellow - A pool of yellow paint will be created, slowing enemy units that walk over it. After a short delay, the slow will snare the unit. (Preview)
Blue - Creates a squad of Blue Paint Goblins. Whenever a Blue Paint Goblin dies, they will leave behind a pool of blue paint. Any friendly Blue Paint Goblin that walks over this pool will receive bonus stats. (Preview)
Switch Paint
SwitchPaint.jpg

Switches over to the next color in the color palette. (Preview)

1 - Red
2 - Yellow
3 - Blue



WIPsEntry

Direfury
1 2Hero Goblin Artist

KILLCIDE
1 2 3 4 5Paint Bomb

Mr.Goblin
1 2Mr.Goblin / Paint Bomb v1 / Paint Bomb v2
 

Attachments

  • DREAM TEAM + Goblin Artist.w3x
    1.4 MB · Views: 295
Last edited:
  • Like
Reactions: Kam
@KILLCIDE images seem not working for me.

Ehm, there's certain 'Theme Criteria', and I realize the rule with the entry could be phrased a bit better:
The post should be a little presentation of the hero
... ^what's meant here is that the hero is explained a bit in theme regards. For this hero it's pretty obvious, but could you explain shortly that you created the hero based on Mr.Goblin and took avatar or maybe name as association, because it's a goblin image or what ever. I would like to get the association for all heroes and the used theme.

Added this to entry rule:
The entry must contain a short explanation of the theme, naming the created hive member and it's theme association.
 
I don't think it's fair giving rep to all three from a team for each resource. I mean didn't just @Mr.Goblin paint/make the icons?

ouch.... I did the texture for the model, the concept-art for it, helped with the brainstorming of the spells, etc. The reason why Killcide made us co-author and the reason we did the same for all the related ressources it's because the making of this entry was a team effort.....period. so all the team should get the praise. :D
 
133888-a0b95ddedd18344d46629e0787aaf9b3.jpg

Lady Hive
By Team Alliance
(a.k.a @Misha @Hayate and @Chaosy )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Apheraz Lucent, the Lady Hive
134041-56c0d35ff8ac6eb62eb768a25bad538a_tn2.jpg

well.. making Apheraz was kind of my idea, among a few other that we discussed, including the Moose :) but i managed to convince the team to go along with the model i was building. @Apheraz Lucent is a dear person and a very, very nice texture/icon artist. especially with the sorceress texture and wrap, which i have found amusing enough to go with a same theme, borrowing a bit from the war3 lich and building upon it. I also have her a very big brush and a color palette, so she can go ahead with her artistic ways even on the fields of a digital battle =P

Artistic Mind:
134056-282e568b61d1e14baa226699e5f36415_tn2.jpg
134050-6c26c8ab0b90837d219102f9a996f69d_tn2.jpg

(also called 'brush swoosh' by me and Hayate :b)

Apheraz inspires all targets in an area, making their fantasies run rampant. Their own creations are unleashed on them. The creations last for 12/14/16 seconds unless killed. The creations will only deal damage to the origin.

53485221ae42d3a25410d014e9f3dbb1.gif

EDIT: updated with a tweaked map that Chaosy provided.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Model: 1 2 Final
Icons: 1 2 3 4 Final Final Final
Code: 1 2 Final
 

Attachments

  • HWC -Apheraz Lucent - Team Alliance.w3x
    228.8 KB · Views: 180
Last edited:
134998-a568aafdae82ef115e267f4bba54b7da_tn2.jpg

134934-079c6239d3456e58ad89030b5cf4ecd2_tn2.jpg

Direfury the Dark Paladin
BY CHAMPIONS
@Exarch @Stefan.K @Daffa the Mage


ENTRY DESCRIPTION :
[Character]
So our team, with all respect to @Direfury, created him as a hero with a concept of him as a dark knight, representing how he would be depicted with his values and as a person. As a Warcraft hero, he utilize the power to bend darkness power into his command. With a mace, magical book and his dark clothing to reflect his powerful capability, and a magical ability to retract life force from his opponent.


135241-089a2279259ec54ad1743a57a4918c61_tn2.jpg

134942-32838c3cd9793f6e58e866c8ceb8a3cc_tn2.jpg
134950-431c7304473b52f652006d2395435a81_tn2.jpg
[SPELL]
CHANNELING
Direfury breaks the bond of soul inside the opponent slowly, dealing damage over time and if their health is below 30%, doubles the damage, else drain their mana equals to their health lost. Lasts 5 seconds.
Damage dealt is 25/50/100 damage per second.


SD Config
joinminus.gif
events.gif
Events
line.gif
joinbottom.gif
page.gif
Map initialization
join.gif
cond.gif
Conditions
joinbottomminus.gif
actions.gif
Actions
empty.gif
join.gif
comment.gif
-------- Ability --------
empty.gif
join.gif
set.gif
Set SD_Ability = Soul Distraction
empty.gif
join.gif
comment.gif
-------- Ability Order - make sure to match the object editor --------
empty.gif
join.gif
set.gif
Set SD_Order = animatedead
empty.gif
join.gif
comment.gif
-------- Bond break model --------
empty.gif
join.gif
set.gif
Set SD_SapModel = Objects\Spawnmodels\Undead\UCancelDeath\UCancelDeath.mdl
empty.gif
join.gif
comment.gif
-------- Bond break attachment --------
empty.gif
join.gif
set.gif
Set SD_AttachPoint = origin
empty.gif
join.gif
comment.gif
-------- Channel time - make sure to set it equal to Follow Through Time in the ability --------
empty.gif
join.gif
set.gif
Set SD_ChannelTime[1] = 5.00
empty.gif
join.gif
set.gif
Set SD_ChannelTime[2] = 5.00
empty.gif
join.gif
set.gif
Set SD_ChannelTime[3] = 5.00
empty.gif
join.gif
comment.gif
-------- Damage per second --------
empty.gif
join.gif
set.gif
Set SD_DamageCharge[1] = 25.00
empty.gif
join.gif
set.gif
Set SD_DamageCharge[2] = 50.00
empty.gif
join.gif
set.gif
Set SD_DamageCharge[3] = 100.00
empty.gif
join.gif
comment.gif
-------- The checkpoint of low and high HP for effect bonus area (in percentage) --------
empty.gif
join.gif
set.gif
Set SD_LowHPZone[1] = 30.00
empty.gif
join.gif
set.gif
Set SD_LowHPZone[2] = 30.00
empty.gif
join.gif
set.gif
Set SD_LowHPZone[3] = 30.00
empty.gif
join.gif
comment.gif
-------- You can alter the extra effect of High/Low health at the "Effect" triggers --------
empty.gif
join.gif
comment.gif
-------- END CONFIG --------
empty.gif
join.gif
set.gif
Set SD_TimeOut = 0.03
empty.gif
joinbottom.gif
page.gif
Trigger - Add to SD_Channel <gen> the event (Every SD_TimeOut seconds of game time)

ADVANCED PART :
  • SD Effect High
    • Events
    • Conditions
    • Actions
      • -------- DO NOT USE WAITS HERE! --------
      • -------- Use SD_Caster[SD_Loop] to refer to caster --------
      • -------- Use SD_Target[SD_Loop] to refer to target of the ability --------
      • -------- Use SD_Level[SD_Loop] to refer to ability level --------
      • Unit - Set mana of SD_Target[SD_Loop] to ((Mana of SD_Target[SD_Loop]) - (SD_DamageCharge[SD_Level[SD_Loop]] x SD_TimeOut))
  • SD Effect Low
    • Events
    • Conditions
    • Actions
      • -------- DO NOT USE WAITS HERE! --------
      • -------- Use SD_Caster[SD_Loop] to refer to caster --------
      • -------- Use SD_Target[SD_Loop] to refer to target of the ability --------
      • -------- Use SD_Level[SD_Loop] to refer to ability level --------
      • Unit - Cause SD_Caster[SD_Loop] to damage SD_Target[SD_Loop], dealing (SD_DamageCharge[SD_Level[SD_Loop]] x SD_TimeOut) damage of attack type Spells and damage type Normal


  • SD Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to SD_Ability
    • Actions
      • Set SD_Index = (SD_Index + 1)
      • Set SD_Caster[SD_Index] = (Triggering unit)
      • Set SD_Target[SD_Index] = (Target unit of ability being cast)
      • Set SD_Level[SD_Index] = (Level of SD_Ability for SD_Caster[SD_Index])
      • Set SD_Time[SD_Index] = 0.00
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SD_Index Equal to 1
        • Then - Actions
          • Trigger - Turn on SD Channel <gen>
        • Else - Actions
  • SD Channel
    • Events
    • Conditions
    • Actions
      • For each (Integer SD_Loop) from 1 to SD_Index, do (Actions)
        • Loop - Actions
          • Unit - Cause SD_Caster[SD_Loop] to damage SD_Target[SD_Loop], dealing (SD_DamageCharge[SD_Level[SD_Loop]] x SD_TimeOut) damage of attack type Spells and damage type Normal
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Life of SD_Target[SD_Loop]) Greater than or equal to SD_LowHPZone[SD_Level[SD_Loop]]
            • Then - Actions
              • Trigger - Run SD Effect High <gen> (checking conditions)
            • Else - Actions
              • Trigger - Run SD Effect Low <gen> (checking conditions)
          • Special Effect - Create a special effect attached to the SD_AttachPoint of SD_Target[SD_Loop] using SD_SapModel
          • Special Effect - Destroy (Last created special effect)
          • Set SD_Time[SD_Loop] = (SD_Time[SD_Loop] + SD_TimeOut)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • (SD_Caster[SD_Loop] is alive) Equal to False
                  • (SD_Target[SD_Loop] is alive) Equal to False
                  • SD_Time[SD_Loop] Greater than or equal to SD_ChannelTime[SD_Level[SD_Loop]]
                  • (Current order of SD_Caster[SD_Loop]) Not equal to (Order(SD_Order))
            • Then - Actions
              • Set SD_Caster[SD_Loop] = SD_Caster[SD_Index]
              • Set SD_Target[SD_Loop] = SD_Target[SD_Index]
              • Set SD_Level[SD_Loop] = SD_Level[SD_Index]
              • Set SD_Time[SD_Loop] = SD_Time[SD_Index]
              • Set SD_Index = (SD_Index - 1)
              • Set SD_Loop = (SD_Loop - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • SD_Index Equal to 0
                • Then - Actions
                  • Trigger - Turn off (This trigger)
                • Else - Actions
            • Else - Actions


ICONS (@Exarch) : Soul Distraction & Curse of Darkness & Direfury Portrait
MODEL (@Stefan.K) : Dark Paladin_Direfury
SPELL (@Daffa the Mage) : Soul Distraction - Direfury [Hive Contest]
 

Attachments

  • CHAMPIONS - Direfury.w3x
    222.7 KB · Views: 176
Last edited:

Moy

Moy

Level 49
Joined
Jan 25, 2011
Messages
2,382

Attachments

  • GrimRupture.png
    GrimRupture.png
    30.9 KB · Views: 164
  • GrimRuptureAlt.png
    GrimRuptureAlt.png
    29.4 KB · Views: 161
  • GrimRupture copy.PNG
    GrimRupture copy.PNG
    77.9 KB · Views: 169
  • GrimRupture22 copy.PNG
    GrimRupture22 copy.PNG
    197.2 KB · Views: 169
Before the preview, I will show the final WIP on the icon of the spider. (I did not work on the icon, but I felt like adding the WIP of @Darkfang when creating the icon.)


darkfangicon-png.288212
Darkfang, Part I

darkfangicon-png.288219
Darkfang, Part II


Now, for the preview you might or might not have waited for:



darkfang-preview-png.288996


Darkfang the Fel Spider
___________________

By @Darkfang and @MyPad
The Scourge

darkfangicon-png.288219


___________________

Gameplay:

Darkfang, the Fel Spider is played as an aggressive pusher and a highly mobile anti-magic caster, being capable of planting hive seeds into a targeted location. From the seeds, the hive is thusly created with anti-magic properties attuned to the enemies of Darkfang, draining them of their magical energy. The haughty fool who dares even lay a blow shall suffer at the hand of the spiderlings, each which deal a fraction of Darkfang's power, but can be devastating when combined.

Darkfang is feared by most creatures, not because of her intimidating build, but because of her ever-presence in the battlefield, capable of absorbing the magic essence (called life essence in the spell) stored within a targeted hive. Because of this, her ability to ravage magic within a certain area is deadly enough in itself, but when coupled up with the ability to shift into liquid form and to regain mana from inflicting damage, (both of which are now disabled), Darkfang is more than a match for anyone, even Spiritbreaker.

Choice:

The Scourge team initially consisted of @MyPad only. Then, @Darkfang joined as an icon contestant and got partnered up with @MyPad to create a hive member hero. From there, the initial idea and final product is the Fel Spider, Darkfang.

@MyPad

I wanted to portray Darkfang the Fel Spider as the reincarnation of the Overmind from Starcraft, being capable of commanding hive minds to do his (I wanted Darkfang the Spider to be male) bidding, and being a more cunning Hero. However, after talking with @Darkfang, I decided to depict is as closely as possible (how @Darkfang wanted it). From there, I finalized what would become the main spell. (It was the third spell at that time).

Just for Fun

You can recite this ancient chant to summon the Spider:


An ginkakahadlok na lawa,
Nakaon hin bisan ano la,
An ngatanan ha makikit-an mo,
Imo kakaonon, wa'y tagya,

An imo gahum naabat han sangkataw-han,
Bisan tawo o hayop ada,
Ginkakarawat an kinabuhi bisan hin-o man,

Ginbubutang ha waray katimhan na bodega.
Antis waray pa nagamit an sundang,

An sundang na napatay hin imo kaluwasan,
Unta, malutas, ngan ig-bayaan.


Hatchery (or Saccular Genesis)

hatcheryspideregg-png.288779


This is the main spell. It plants a hive seed which will create a hive (with a fade-in mechanism) and a certain amount of spiderlings. The hive drains the mana of every enemy unit that gets close to it, and when selecting the hive (SelectionCircle by @Aniki), a selection circle will appear, displaying the range of which the spiderlings will attack a target unit. When selecting Darkfang, the hives that have been planted will be highlighted with a special effect, which only appears to the player or allies.

Ravage Magic

ravagemagic-png.288221


Made as a quick sub-spell, the spell moves Darkfang to a targeted hive, consuming the stored energies within that hive and killing that hive, which will also damage nearby enemy units.

Component Parts: (Model Final, Icon WIP, Code WIP, Inserted Map link)

Model - Here

Icon - Darkfang Icon, Ravage Magic, Hatchery / Saccular Genesis.

Code - 1, 2, 3

Map - Here
 

Attachments

  • The Scourge - Darkfang.w3x
    674.8 KB · Views: 172
Last edited:
Nice entries! Updated WIPs and closed section submissions.

@Daffa the Mage , @MyPad , the links to submissions in the sections are missing
The final entry must be posted before the deadline in this thread using a demo/test map. The post should be a little presentation of the hero, and must link to all submitted components of the hero (link to Model, Icons, Spell in the resource section). The entry must contain a short explanation of the theme, naming the created hive member and it's theme association.

MyPad, you link to model only, but not to others.

@RED BARON there's no WIP, right?
 
Status
Not open for further replies.
Top