• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Yet another Tower Defence

Status
Not open for further replies.



INFORMATION


CHANGELOG


THREAD

In dese to-be-retired days of mine, I decided to create a tower defence,
since I always liked the map style. However, as I am quite lazy myself, I ought
to get people to help me on this project. It is not large, it is quite honestly..
extremely small. The current map (4 (Four) Player) is 64x64, but as the terrain/
systems/models make room for small objects and the like, it is more than enough.

So where do I need people for? Currently, that is only at gui/jass; I quite
can't get up to creating systems myself. (note: jass, not vjass)

MAP


Name:

Yet Another Tower Defence

Game:

EXP ( Warcraft III (3) The Frozen Throne )

Version:

MzA2MjAxMg==

Players:

1 / 4

AI:

False

Protected:

False

Synchronized & Leakless

True

TEAM

OffGraphic:Creator/Terrainer/Triggerer
Revilo:Modeler/Texturer/Wrapper




MzA2MjAxMg==


Thread created, nothing else.


eDYyMDEy


Map created; included OGDS, 5 models



*Images, Scripts, Texts and other material are not copyrighted by OffGraphic
 
Last edited:
The provided systems were for reference.
OGDS is needs to be written in Jass, and combined with the effects API, so that I can
easily create a fading/delayed fading effect on any unit I want to.
Say, function applyDFXOnUnit takes string type, string visual, unit this, real duration returns nothing
Such as function applyDFXOnUnit("fade", "bla/bla/bla.mdx", GetTriggerUnit(), 10.0)

A table would be needed unit colors, manual set as no function returns ARGB of a unit.
JASS:
  integer array DFXUnitType
  integer array DFXUnitA
  integer array DFXUnitR
  integer array DFXUnitG
  integer array DFXUnitB

  set DFXUnitType[0] = 'HFOO'
  set DFXUnitA[0] = 255
  set DFXUnitR[0] = 100
  set DFXUnitG[0] = 25
  set DFXUnitB[0] = 165

Revival of a unit is unnecessary, waypoints set up with ease is another thing, and efficient spawning.
So, in other ways, indexing every single spawn that comes up and indexing it waypoints so it can find the places with ease, and continue to next once arrival.

I'll be improving the triggers myself if it demands such, but I better not start anything myself; or else I'll just end up leaving the project.
 
well, I've created my own Dissipate System...
JASS:
/*
=====DissipateSystem
=====Made by Mckill2009

A simple dissipate system which dissipates your units just like heroes
*/
library DissipateSystem uses T32

native UnitAlive takes unit u returns boolean

struct DissipateSystem
    unit died
    effect sfx
    real constantheight
    real height
    real maxheight
    real wait
    real waitEx
    
    static constant real maxHeight = 1000.
    static constant real vanish = 10.

    method periodic takes nothing returns nothing
        if .maxheight > .height and not UnitAlive(.died) then
            set .waitEx = .waitEx + T32_PERIOD
            if .waitEx > .wait then
                set .height = .height + vanish
                call SetUnitFlyHeight(.died,.height,0)              
            endif
        else
            if UnitAlive(.died) then
                call UnitRemoveAbility(.died,'Arav')
                call SetUnitFlyHeight(.died,.constantheight,0) 
            endif
            call DestroyEffect(.sfx)
            set .died = null
            call .destroy()
            call .stopPeriodic()
        endif    
    endmethod   
    
    implement T32x
    
    static method applyDFXOnUnit takes unit died, string sfx, string attachment, real wait returns nothing
        local thistype this
        if not UnitAlive(died) and not IsUnitType(died,UNIT_TYPE_HERO) then
            set this = allocate()
            call UnitAddAbility(died,'Arav')
            set .died = died
            set .sfx = AddSpecialEffectTarget(sfx,died,attachment)
            set .height = GetUnitFlyHeight(died)
            set .constantheight = .height
            set .maxheight = .height + maxHeight      
            set .wait = wait
            set .waitEx = 0
            call .startPeriodic() 
        else
            debug call BJDebugMsg("This unit is alive or this unit is a hero!")
        endif     
    endmethod

endstruct

endlibrary

  • DissipateSystem DEMO
    • Events
      • Unit - A unit Dies
    • Conditions
    • Actions
      • Custom script: local string s = "Abilities\\Spells\\Human\\DivineShield\\DivineShieldTarget.mdl"
      • Custom script: call DissipateSystem.applyDFXOnUnit(GetTriggerUnit(), s, "origin", 2)
 
They are not in a global block, are they now ? They're simply to tell what kind of
variables are to be expected. Just don't push yourself too much there, after all, you had
other projectes to work on. So yes, Jass is the language if you want to make it via scripts.

Codric said:
dude you made another tower defense or you will make
another
All basics of a Tower Defence map are already implemented in the map, that means
Balancing of Towers and Waves. Once the systems arrive the tower will be pretty
instantly published.

So one would say that I already made one, and the other that I am making one.




*It seems I'll be doing every single system by myself now.
 
Last edited:
Status
Not open for further replies.
Top