• 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.
  • 💡 We're thrilled to announce that our upcoming texturing contest is in the works, and we're eager to hear your suggestions! Please take this opportunity to share your ideas in this theme discussion thread for the Texturing Contest #34!
  • 🏆 Hive's 7th HD Modeling Contest: Icecrown Creature is now open! The frozen wastes of Icecrown are home to some of Azeroth’s most terrifying and resilient creatures. For this contest, your challenge is to design and model a HD 3D monster that embodies the cold, undead, and sinister essence of Icecrown! 📅 Submissions close on April 13, 2025. Don't miss this opportunity to let your creativity shine! Enter now and show us your frozen masterpiece! 🔗 Click here to enter!

[JASS] Difficulty AI failure

Status
Not open for further replies.
Level 8
Joined
Oct 2, 2021
Messages
33
Hey, I'm kinda new here (and in the world of code in general). I tried remaking the RoC Undead mission: Siege of Dalaran. The AI I remade by replacing units and building with different ones works on normal difficulty but not hard. I think it changes with difficulty but I'm not sure how, can you help? (attack waves are fine but the building part doesn't work)


JASS:
//============================================================================
//  Undead 07 -- Purple player (Light Blue) -- AI Script
//============================================================================
globals
    player user = Player(6)
endglobals

//============================================================================
//  main
//============================================================================
function main takes nothing returns nothing
    debug set do_debug_cheats = true

    call CampaignAI(ELF_FARM,null)
    call SetReplacements(2,2,4)
    set do_campaign_farms = false

    call SetCaptainHome(ATTACK_CAPTAIN,-2924,-3633)
    call SetCaptainHome(DEFENSE_CAPTAIN,-2184,-3257)

    call SetBuildUnitEx( 0,0,1, 'h605'            )
    call SetBuildUnitEx( 3,3,3, BLOOD_PEASANT             )
    call SetBuildUnitEx( 0,0,1, ELF_HIGH_BARRACKS    )
    call SetBuildUnitEx( 0,0,1, 'h608'            )
    call SetBuildUnitEx( 0,0,1, 'h60C'        )
    call SetBuildUnitEx( 0,0,1, 'h609'            )
    call SetBuildUnitEx( 7,7,7, BLOOD_PEASANT          )
    call SetBuildUnitEx( 0,0,1, 'h606'            )
    call SetBuildUnitEx( 0,0,1, 'h60A'        )
    call SetBuildUnitEx( 0,0,1, 'h60B'            )
   
    call CampaignDefenderEx( 1,1,1, HIGH_SWORDMAN   )
    call CampaignDefenderEx( 0,0,1, BALLISTA          )
    call CampaignDefenderEx( 1,1,1, HIGH_ARCHER     )                               

    call WaitForSignal()

    //*** WAVE 1 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 4,4,6, HIGH_SWORDMAN   )
    call CampaignAttackerEx( 1,1,2, HIGH_ARCHER     )
    call CampaignAttackerEx( 0,0,2, PRIEST      )
    call SuicideOnPlayerEx(M4,M4,M2,user)

    call SetBuildUpgrEx( 0,0,1, UPG_MELEE        )
    call SetBuildUpgrEx( 0,0,1, UPG_STR_MOON           )
    call SetBuildUpgrEx( 0,0,1, UPG_PRAYING        )
    call SetBuildUpgrEx( 0,0,1, UPG_MASONRY        )

    //*** WAVE 2 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 4,4,5, HIGH_SWORDMAN   )
    call CampaignAttackerEx( 1,1,3, HIGH_ARCHER     )
    call CampaignAttackerEx( 0,0,2, BALLISTA    )
    call CampaignAttackerEx( 1,1,2, PRIEST      )
    call SuicideOnPlayerEx(M8,M8,M7,user)

    call SetBuildUpgrEx( 0,0,1, UPG_BOWS               )
    call SetBuildUpgrEx( 0,0,1, UPG_MOON_ARMOR         )
    call SetBuildUpgrEx( 0,0,1, UPG_ARMOR        )
    call SetBuildUpgrEx( 1,1,1, UPG_PRAYING        )
    call SetBuildUpgrEx( 1,1,1, UPG_DEFEND        )

    //*** WAVE 3 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 0,0,4, HIGH_SWORDMAN   )
    call CampaignAttackerEx( 5,5,8, HIGH_ARCHER     )
    call CampaignAttackerEx( 1,1,2, BALLISTA    )
    call CampaignAttackerEx( 1,1,2, PRIEST      )
    call SuicideOnPlayerEx(M6,M6,M6,user)

    call SetBuildUpgrEx( 1,1,2, UPG_MELEE        )
    call SetBuildUpgrEx( 1,1,2, UPG_STR_MOON           )

    //*** WAVE 4 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 5,5,10, HIGH_SWORDMAN  )
    call CampaignAttackerEx( 2,2,4, BALLISTA    )
    call CampaignAttackerEx( 1,1,2, PRIEST      )
    call SuicideOnPlayerEx(M8,M8,M7,user)

    call SetBuildUpgrEx( 1,1,2, UPG_MOON_ARMOR         )
    call SetBuildUpgrEx( 1,1,2, UPG_ARMOR        )

    loop
        //*** WAVE 5+ ***
        call InitAssaultGroup()
        call CampaignAttackerEx( 1,1,3, HIGH_SWORDMAN   )
        call CampaignAttackerEx( 5,5,7, HIGH_ARCHER     )
        call CampaignAttackerEx( 1,1,2, BALLISTA    )
        call CampaignAttackerEx( 0,0,2, PRIEST      )
        call SuicideOnPlayerEx(M6,M6,M6,user)

        //*** WAVE 6+ ***
        call InitAssaultGroup()
        call CampaignAttackerEx( 4,4,7, HIGH_SWORDMAN )
        call CampaignAttackerEx( 2,2,3, HIGH_ARCHER     )
        call CampaignAttackerEx( 2,2,3, PRIEST      )
        call SuicideOnPlayerEx(M8,M8,M7,user)
    endloop
endfunction


For reference(all custom units are custom buildings with the same functions (ex: h605 is the town hall),all of them are respectively placed according to the original.

JASS:
//============================================================================
//  Undead 07 -- Purple player (Light Blue) -- AI Script
//============================================================================
globals
    player user = Player(6)
endglobals

//============================================================================
//  main
//============================================================================
function main takes nothing returns nothing
    debug set do_debug_cheats = true

    call CampaignAI(HOUSE,null)
    call SetReplacements(2,2,4)
    set do_campaign_farms = false

    call SetCaptainHome(ATTACK_CAPTAIN,-2924,-3633)
    call SetCaptainHome(DEFENSE_CAPTAIN,-2184,-3257)

    call SetBuildUnitEx( 0,0,1, TOWN_HALL        )
    call SetBuildUnitEx( 3,3,3, PEASANT            )
    call SetBuildUnitEx( 0,0,1, BARRACKS        )
    call SetBuildUnitEx( 0,0,1, LUMBER_MILL        )
    call SetBuildUnitEx( 0,0,1, HUMAN_ALTAR        )
    call SetBuildUnitEx( 0,0,1, BLACKSMITH        )
    call SetBuildUnitEx( 7,7,7, PEASANT            )
    call SetBuildUnitEx( 0,0,1, KEEP            )
    call SetBuildUnitEx( 0,0,1, WORKSHOP        )
    call SetBuildUnitEx( 0,0,1, SANCTUM            )
    
    call CampaignDefenderEx( 1,1,1, FOOTMAN     )
    call CampaignDefenderEx( 0,0,1, MORTAR      )
    call CampaignDefenderEx( 1,1,1, RIFLEMAN    )

    call WaitForSignal()

    //*** WAVE 1 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 4,4,6, FOOTMEN     )
    call CampaignAttackerEx( 1,1,2, RIFLEMAN    )
    call CampaignAttackerEx( 0,0,2, PRIEST      )
    call SuicideOnPlayerEx(M4,M4,M2,user)

    call SetBuildUpgrEx( 0,0,1, UPG_MELEE        )
    call SetBuildUpgrEx( 0,0,1, UPG_RANGED        )
    call SetBuildUpgrEx( 0,0,1, UPG_PRAYING        )
    call SetBuildUpgrEx( 0,0,1, UPG_MASONRY        )

    //*** WAVE 2 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 4,4,5, FOOTMEN     )
    call CampaignAttackerEx( 1,1,3, RIFLEMAN    )
    call CampaignAttackerEx( 0,0,2, MORTAR      )
    call CampaignAttackerEx( 1,1,2, PRIEST      )
    call SuicideOnPlayerEx(M8,M8,M7,user)

    call SetBuildUpgrEx( 0,0,1, UPG_GUN_RANGE    )
    call SetBuildUpgrEx( 0,0,1, UPG_LEATHER        )
    call SetBuildUpgrEx( 0,0,1, UPG_ARMOR        )
    call SetBuildUpgrEx( 1,1,1, UPG_PRAYING        )
    call SetBuildUpgrEx( 1,1,1, UPG_DEFEND        )

    //*** WAVE 3 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 0,0,4, FOOTMEN     )
    call CampaignAttackerEx( 5,5,8, RIFLEMAN    )
    call CampaignAttackerEx( 1,1,2, MORTAR      )
    call CampaignAttackerEx( 1,1,2, PRIEST      )
    call SuicideOnPlayerEx(M6,M6,M6,user)

    call SetBuildUpgrEx( 1,1,2, UPG_MELEE        )
    call SetBuildUpgrEx( 1,1,2, UPG_RANGED        )

    //*** WAVE 4 ***
    call InitAssaultGroup()
    call CampaignAttackerEx( 5,5,10, FOOTMEN    )
    call CampaignAttackerEx( 2,2,4, MORTAR      )
    call CampaignAttackerEx( 1,1,2, PRIEST      )
    call SuicideOnPlayerEx(M8,M8,M7,user)

    call SetBuildUpgrEx( 1,1,2, UPG_LEATHER        )
    call SetBuildUpgrEx( 1,1,2, UPG_ARMOR        )

    loop
        //*** WAVE 5+ ***
        call InitAssaultGroup()
        call CampaignAttackerEx( 1,1,3, FOOTMEN     )
        call CampaignAttackerEx( 5,5,7, RIFLEMAN    )
        call CampaignAttackerEx( 1,1,2, MORTAR      )
        call CampaignAttackerEx( 0,0,2, PRIEST      )
        call SuicideOnPlayerEx(M6,M6,M6,user)

        //*** WAVE 6+ ***
        call InitAssaultGroup()
        call CampaignAttackerEx( 4,4,7, FOOTMEN     )
        call CampaignAttackerEx( 2,2,3, RIFLEMAN    )
        call CampaignAttackerEx( 2,2,3, PRIEST      )
        call SuicideOnPlayerEx(M8,M8,M7,user)
    endloop
endfunction
 
Last edited:
Status
Not open for further replies.
Top