• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Citatus TD

Status
Not open for further replies.
Citatus TD
A TD in Progress
This is an ALPHA stage maze TD.

By downloading the map, you agree not to release the map out to anywhere. If released, this will ruin my map, and what fun is that?

NOTICE: I cannot think of any towers, nor creeps to make, so if you would like to be on the credits section, all you need to do is give me a good idea on a tower or creep. If added, you will be featured!

Features

(+) 5 races (Which are actually "Difficulties"), all with unique towers.
(+) 3 tiers of towers in a race, all requiring the previous tower (not implemented yet)
(+) Achievements, which use the game cache to store objects.
(+) Very little bugs (explained later)
(+) Custom Models
(+) Custom Icons

Bugs (Yes, oh no)


As the map is in the Alpha stage, please report bugs to me, and I will attempt to fix them. Failing that, I'll find someone who can.

Known Bugs


Pressing the "Random" button in the choose your race always gives the Water Builder.
Currently, I have no idea how to fix this. I will put out a thread later, and if you can answer, just post here. Following this is the JASS code.
JASS:
function Trig_RacePicked_Copy_Func002C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'h002' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func003C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'h005' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func004C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'h006' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func005C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'h007' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func006C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'h008' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func007Func004C takes nothing returns boolean
    if ( not ( udg_Roll5 == 1 ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func007Func005C takes nothing returns boolean
    if ( not ( udg_Roll5 == 2 ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func007Func006C takes nothing returns boolean
    if ( not ( udg_Roll5 == 3 ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func007Func007C takes nothing returns boolean
    if ( not ( udg_Roll5 == 4 ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func007Func008C takes nothing returns boolean
    if ( not ( udg_Roll5 == 5 ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Func007C takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTrainedUnit()) == 'h004' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RacePicked_Copy_Actions takes nothing returns nothing
    call AdjustPlayerStateBJ( 100, Player(0), PLAYER_STATE_RESOURCE_GOLD )
    if ( Trig_RacePicked_Copy_Func002C() ) then
        set udg_BuilderType = 1
        call AdjustPlayerStateBJ( 10, Player(0), PLAYER_STATE_RESOURCE_GOLD )
        set udg_Lives = ( udg_Lives + 25 )
    else
    endif
    if ( Trig_RacePicked_Copy_Func003C() ) then
        set udg_BuilderType = 2
    else
    endif
    if ( Trig_RacePicked_Copy_Func004C() ) then
        set udg_BuilderType = 3
    else
    endif
    if ( Trig_RacePicked_Copy_Func005C() ) then
        set udg_BuilderType = 4
    else
    endif
    if ( Trig_RacePicked_Copy_Func006C() ) then
        set udg_BuilderType = 5
    else
    endif
    if ( Trig_RacePicked_Copy_Func007C() ) then
        call AdjustPlayerStateBJ( 10, Player(0), PLAYER_STATE_RESOURCE_GOLD )
        call RemoveUnit( GetTrainedUnit() )
        set udg_Roll5 = GetRandomInt(1, 5)
        if ( Trig_RacePicked_Copy_Func007Func004C() ) then
            set udg_Temp_Point = GetUnitLoc(gg_unit_h003_0003)
            call CreateNUnitsAtLoc( 1, 'h002', Player(0), udg_Temp_Point, bj_UNIT_FACING )
            set udg_BuilderType = 1
            call AdjustPlayerStateBJ( 10, Player(0), PLAYER_STATE_RESOURCE_GOLD )
            set udg_Lives = ( udg_Lives + 25 )
            call RemoveLocation (udg_Temp_Point)
        else
        endif
        if ( Trig_RacePicked_Copy_Func007Func005C() ) then
            set udg_Temp_Point = GetUnitLoc(gg_unit_h003_0003)
            call CreateNUnitsAtLoc( 1, 'h005', Player(0), udg_Temp_Point, bj_UNIT_FACING )
            set udg_BuilderType = 2
            call RemoveLocation (udg_Temp_Point)
        else
        endif
        if ( Trig_RacePicked_Copy_Func007Func006C() ) then
            set udg_Temp_Point = GetUnitLoc(gg_unit_h003_0003)
            call CreateNUnitsAtLoc( 1, 'h006', Player(0), udg_Temp_Point, bj_UNIT_FACING )
            set udg_BuilderType = 3
            call RemoveLocation (udg_Temp_Point)
        else
        endif
        if ( Trig_RacePicked_Copy_Func007Func007C() ) then
            set udg_Temp_Point = GetUnitLoc(gg_unit_h003_0003)
            call CreateNUnitsAtLoc( 1, 'h007', Player(0), udg_Temp_Point, bj_UNIT_FACING )
            set udg_BuilderType = 4
            call RemoveLocation (udg_Temp_Point)
        else
        endif
        if ( Trig_RacePicked_Copy_Func007Func008C() ) then
            set udg_Temp_Point = GetUnitLoc(gg_unit_h003_0003)
            call CreateNUnitsAtLoc( 1, 'h008', Player(0), udg_Temp_Point, bj_UNIT_FACING )
            set udg_BuilderType = 5
            call RemoveLocation (udg_Temp_Point)
        else
        endif
        call DisplayTextToForce( GetPlayersAll(), ( ( "You have chosen " + GetUnitName(GetLastCreatedUnit()) ) + " as your race!" ) )
    else
        call DisplayTextToForce( GetPlayersAll(), ( ( "You have chosen " + GetUnitName(GetTrainedUnit()) ) + " as your race!" ) )
    endif
    call PlaySoundBJ( gg_snd_HeroPicked )
    call TriggerSleepAction( 2 )
    call RemoveUnit( gg_unit_h003_0003 )
    call TriggerExecute( gg_trg_SpawnIni )
    call DisableTrigger( GetTriggeringTrigger() )
endfunction

//===========================================================================
function InitTrig_RacePicked_Copy takes nothing returns nothing
    set gg_trg_RacePicked_Copy = CreateTrigger(  )
    call TriggerRegisterUnitEvent( gg_trg_RacePicked_Copy, gg_unit_h003_0003, EVENT_UNIT_TRAIN_FINISH )
    call TriggerAddAction( gg_trg_RacePicked_Copy, function Trig_RacePicked_Copy_Actions )
endfunction
This basically means (in a certain part), I changed Roll5(integer) into a random number between 1 and 5. Every different number, is one of the races. It always seems to choose "4", which picks the Water Builder.
This bug has been fixed.


Misconceived Bugs
In the quests, the version is 0.97 BETA
This is what I plan to call this after I finish it.


The builders only build one tower, except the N00b Builder, which builds two.
I haven't made any other towers yet. Just wait.


There are only two waves.
Again, I haven't made any more creeps. If you wait, you'll get the 100 wave TD. Patience is key.


FAQ

None


Updates
Updates

(Untitled) Added more waves, sounds and Towers.
 

Attachments

  • Citatus TD.w3x
    798.8 KB · Views: 57
Last edited:
Level 15
Joined
Dec 18, 2007
Messages
1,098
Haven't tested it out proper, but some feedback:
The units tend to head back to where they came, possibly because they are controlled by Neutral Hostile. Neutral Hostile units have camping ranges, and will head back to their post every so often. Therefore, I suggest you create the units for a player like Brown or something.

Fairly good TD so far, although I hope that you could get more towers ready quick, since arrow towers get boring pretty fast xD

Good luck.
 
Status
Not open for further replies.
Top