• 🏆 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!

Idea for map. Requesting for opinons

Status
Not open for further replies.
Level 3
Joined
Oct 1, 2012
Messages
50
Greetings, people. I am Rumplestiltskin, best known as Stiltskin or Steelskin. I'm not new in the mapmaking community, but I am new to this site. Well I always enjoyed makeing custom maps and stuff, but I never did something good. The thing is a have an idea of what can be a good gaming experience at an altered melee warcraft 3 map.
As a former player of warcraft 3, and an actual player of DotA; I must admit both controlling only a hero and controlling a full army, is a ton of fun. So, my idea is to mix them, creating a melee map with this characteristics:

-2 opposing factions.
-1 neutral faction.
-One player raises and controls only an army, the other one levels and controls only a (customized) hero

For the custom heroes I want to focus on the AoE spells and something like dota, with the objective of destroying one special building/thing, with a super powerful ancient like Roshan, and neutral creeps that spawn every minute.
The neutral faction represents a non-hero based player, that can't harvest gold and earns it per second and form selling items and mercenaries to the other factions.
It's still a virgin and fresh incomplete idea. I hope you can help me a bit with what the f""k I can put to this map.
 
Last edited:
Level 3
Joined
Jun 9, 2013
Messages
51
Well, not bad. My favourite race was always Night Elf, but currently I'm working on a Human campaign. I have a few ideas for a mission "defend Stratholme city", because the game's first part takes place near and in Stratholme. If you would do one that I and my coops/helpers like, I would ask you to let me use it in my campaign. My plan is too big for 2 people. Of course, credits will be given!

But, for first, let's talk about the races. My suggestions are: Bandits lay siege to Stratholme, the citizens are defending it, and the netural faction would be the undead: they would spawn in every 1-2 minutes (realtime), and they would have a chance (1-2%) that the dead rises as undead. This way both sides would have a common enemy, the undead, and you can play on both sides: there would be a bandit chief for the outlaw and a sergeant for the citizens, this way both of them would have a hero and they would have an army, but they'd be different.
Or, if bandits wouldn't be good enough, let's put some orcs into it.
What do you think?
 
Greetings, people. I am Rumplestiltskin, best known as Stiltskin or Steelskin. I'm not new in the mapmaking community, but I am new to this site. Well I always enjoyed makeing custom maps and stuff, but I never did something good. The thing is a have an idea of what can be a good gaming experience at an altered melee warcraft 3 map.
As a former player of warcraft 3, and an actual player of DotA; I must admit both controlling only a hero and controlling a full army, is a ton of fun. So, my idea is to mix them, creating a melee map with this characteristics:

-2 opposing factions.
-1 neutral faction.
-One player raises and controls only an army, the other one levels and controls only a (customized) hero

For the custom heroes I want to focus on the AoE spells and something like dota, with the objective of destroying one special building/thing, with a super powerful ancient like Roshan, and neutral creeps that spawn every minute.
The neutral faction represents a non-hero based player, that can't harvest gold and earns it per second and form selling items and mercenaries to the other factions.
It's still a virgin and fresh incomplete idea. I hope you can help me a bit with what the f""k I can put to this map.

So you are trying something like the game Demigod?
That's cool.
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,197
form selling items and mercenaries to the other factions.
This never works out to be fun. Nothing forces players to buy stuff and as a result that player would often be neglected from gameplay. You really need to force purchases from him so that he has a purpose, and to stop unfair play you need to make the prices automated.
 
Level 3
Joined
Oct 1, 2012
Messages
50
This never works out to be fun. Nothing forces players to buy stuff and as a result that player would often be neglected from gameplay. You really need to force purchases from him so that he has a purpose, and to stop unfair play you need to make the prices automated.
Yeah I know what you mean, and I say it again, It's still a raw idea; I have to work on it. Besides the original idea of the neutral faction was to f""k around and go killing some heroes or just bother around with both enemies. Or as this konyvfalovb b says, make it an AI to harass both players.
 
Level 3
Joined
Oct 1, 2012
Messages
50
Well, not bad. My favourite race was always Night Elf, but currently I'm working on a Human campaign. I have a few ideas for a mission "defend Stratholme city", because the game's first part takes place near and in Stratholme. If you would do one that I and my coops/helpers like, I would ask you to let me use it in my campaign. My plan is too big for 2 people. Of course, credits will be given!

But, for first, let's talk about the races. My suggestions are: Bandits lay siege to Stratholme, the citizens are defending it, and the netural faction would be the undead: they would spawn in every 1-2 minutes (realtime), and they would have a chance (1-2%) that the dead rises as undead. This way both sides would have a common enemy, the undead, and you can play on both sides: there would be a bandit chief for the outlaw and a sergeant for the citizens, this way both of them would have a hero and they would have an army, but they'd be different.
Or, if bandits wouldn't be good enough, let's put some orcs into it.
What do you think?
I like that, it's a nice idea but I guess It's a single player thing (cause I've seen a multi-player campaign). Yeah we can work on that. I can also help a bit with the bandit's race, if there is one. I started a project long time ago that I never finished; about a race of bandits (bandits, and some "renegade" units from the whole Alliance).
I'll add you, give me some time to finish my map and we'll talk again soon.
 
Level 19
Joined
Feb 25, 2009
Messages
2,004
What if that player holds the upgrades for your army, forcing the player to buy something from him?

Example would be as if player X wants to upgrade melee troops. He goes to the player with the upgrades (neutral guy) and purchases melee weapons for his army. Then they are delivered via a caravan to player X. In that time, opposing players may destroy the caravan or steal it and have the upgrade for them instead for player X. Caravans are obviously protected by 7 troops (4 melee, 3 ranged) owned by the player who purchased the upgrade. Their strength is based on his upgrades level also.

Seems legit.
 
Level 3
Joined
Oct 1, 2012
Messages
50
What if that player holds the upgrades for your army, forcing the player to buy something from him?

Example would be as if player X wants to upgrade melee troops. He goes to the player with the upgrades (neutral guy) and purchases melee weapons for his army. Then they are delivered via a caravan to player X. In that time, opposing players may destroy the caravan or steal it and have the upgrade for them instead for player X. Caravans are obviously protected by 7 troops (4 melee, 3 ranged) owned by the player who purchased the upgrade. Their strength is based on his upgrades level also.

Seems legit.
I'll find out how to do that. Hmm, what may be also good, I think; is that they buy from the neutral guy also basic super important units like the peasants, acolytes, peons and wisps. What do you think?
And there are also things that can be very important for scouting and warding. Like a very low cost ivory tower, sentry wards, some sort of mechanical critter or timed scout eagles, or weak but very very fast foot units. Maybe It'll be good like that. The problem is I'm not a master in Triggers, and as this is an altered melee map, there's a lot of triggering work to do.
 
Level 3
Joined
Jun 9, 2013
Messages
51
Well, you could do two things: make a Purcashe Upgrades game and create a Hero-based game with some PU triggers. The best would be to have both in one map. If there is only one player and one enemy (and the netural harassing army), then choosing between the Hero and the army will become very important. If you evolve your hero, your enemies' troops will become much stronger than yours, meanwhile, if you upgrade your army you will find your hero quickly die in battle. In my opinion, the best would be to force the player to evolve his hero AND purcashe equipment. For this, there should NOT be any battles between the two armies in the first ten minutes. In this time the player would be forced to hunt netural creeps for XP and money. And, the enemy should have an AI controlled Hero which would make it even more difficult.
For this I recommend a huge map with capturaable fortifications and mercenaries, upgradeable gold mining and farms and things like that.
I'll write more later, I have to go now.
 
Level 3
Joined
Oct 1, 2012
Messages
50
Maybe, in this level the player lost his army, with the hero as only survivor and you encounter a group of human remnants trying to destroy a bandit base located in the area, and there is also an undead harassing base. The neutral trader guy would be useless if it's a single player campaign, so we'll leave the upgrades to the goblins (upgrades for the hero) and your allies, that will leave some units at your command daily, are controlled by an AI as well as the enemies and the undead.
 
Level 3
Joined
Jun 9, 2013
Messages
51
Not bad. But you forgot about the Undead's mechanism. In RoC's Human Campaign, in the end of the fifth level March of the Scourge Uther says the undead forces are bolstered when any of the humans die. So please, forget about the Undead base, and create a trigger, which gives a 10-15% chance that if a warrior falls, then wait a few seconds (minimum 30) and revive him as part of the damned Undead. both opposing forces are humans, so it would be possible to do this. This would result a game play with more random effect. This undead would group if it can and attack the nearest Human camp if it's close enough or if there aren't any humans near them, then make them wait there and attack the first human army/unit that gets close to them (I mean, attack if there are any humans in ~2500 range, but if they stay put then only attack the humans if they get closer than ~650-700. I know this is hard and I don't even know how could anybody do this, but I write this hoping you can.
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
I've got the triggers to have zombified versions of normal units and that when a normal unit dies, then a set amount of time later(300 sec default) they raise back to life as undead.
I also have a hero named Necrolord that can rapidly bring units back(always as undead), but with only 30% health and 0 mana.
 
Level 3
Joined
Jun 9, 2013
Messages
51
Too much

That trigger would be good, but I think it needs some modifications. Think about it that after a huge battle (~30-40 units minimum) a vast undead force would attack a player. I think that a 25% chance would be enough. This way the undead wouldn't be able to form a third force, but only a smaller, harassing and not killing group.
 
Level 3
Joined
Oct 1, 2012
Messages
50
Btw kony, the undead base is needed, but just for the looks; just like dota, the buildings don't actually fo anything. The creeps spawn daily and attack both bases. You'll have to add some stuff when the map is finished, like your hero, etc.
 
Level 3
Joined
Jun 9, 2013
Messages
51
Wouldn't it be better that if an unit dies, there would be a 20% chance (or 10-25%) that it will respawn as Undead 3 minutes later?
Or, if you don't like this idea, I suggest to create a graveyard instead of the undead base: it would look more realistic, due to the fact it is not needed to destroy the undead on this map, not as in DotA.
 
Level 3
Joined
Oct 1, 2012
Messages
50
I think 3 minutes is too late. Maybe 5 seconds so the revived units can still fight in the actual batte where they fell as humans. Hmm, yeah a graveyard is nice, maybe one or two graveyards, some spirit towers and the spawning minions to harass. Btw just type "Bandit" in the model section and you'll find everything you need for your bandit race.
 
Level 3
Joined
Jun 9, 2013
Messages
51
Nah.I didn't understand if you spoke abour 1-2 graves or 1-2 graveyards. I would recommend one of the methods. Use a graveyard: let 10 minutes elapse and then send a small undead force at both players, and then send increasingly powerful forces at both sides (or just do a random number generation and send a moderate (not big!) undead force to ONE player/side. Or revive the fallen: I wouldn't recommend 5 seconds, because they could modify the whole battle's outcome. Let the battle end, only then will it be good in my opinion.
But, keep in mind that the undead (in this part of my story) is weak, and it is only a harassing force so don't make it like a normal, third army. Let it be a small, occasional attack which can be repelled easily.
And another note: the numbers are all your choice. I just "say something".
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
I'll just post all the related triggers about how I made units turn undead.
There's also some more stuff, like undead reviving if the place they died is blighted some time after.

EDIT: Geez, it's so hard to find the right triggers.
Anyways, here's the map. Note that I've disabled most triggers to find out why my camera is leaking(and I've finally realized why).
I attached the map so you can find them yourself if you wish.
If no, then I'll check again later to see if I can locate them. This map is a mess.
 

Attachments

  • Essence of Magic v0.02a.w3x
    2.5 MB · Views: 49
Level 12
Joined
Aug 10, 2004
Messages
1,141
This reminds me a bit of dungeons and dragons.
The difference is the dungeon master is completely malevolent

A question i throw out to you is, what is exciting about throwing hordes and hordes of units at a hero inorder to kill them?

Movies represent the tyrant as throwing out thugs than upgrading eventually to special ops.
But what is exciting? The despensibility vs the likely hood of success? More worried about distracting than destroying?

What fun is in being a meglomaniac destructive force?
 
Level 3
Joined
Jun 9, 2013
Messages
51
To tell the truth, it will be a part of my campaign. So this is why it may be a bit... usual.

Btw it is funny that if you say Dankeshön in Hungarian, you will get Danke Sün, which means Thank you, hedgehog.
 
Level 21
Joined
Mar 27, 2012
Messages
3,232
Haha yeah it is, I can't open it!

Oh right, UMSWE GUI functions..
You can try integrating UMSWE, that's what I did. Then you can open the map and see for yourself.

This trigger runs at map init and saves the undead forms of units. If an undead form is set to an undead unit, then it can endlessly resurrect.
JASS:
function Trig_JASS_Init_Actions takes nothing returns nothing
    call SaveInteger(udg_Hashy,StringHash("UnFo"),'earc','e000')
    call SaveInteger(udg_Hashy,StringHash("UnFo"),'emtg','e001')
    call SaveInteger(udg_Hashy,StringHash("UnFo"),'u001','u001')
    call SaveInteger(udg_Hashy,StringHash("UnFo"),'esen','e003')
endfunction

//===========================================================================
function InitTrig_JASS_Init takes nothing returns nothing
    set gg_trg_JASS_Init = CreateTrigger(  )
    call TriggerAddAction( gg_trg_JASS_Init, function Trig_JASS_Init_Actions )
endfunction

This one resurrects any unit if there is blight under it after 9 seconds(I used to use 100 seconds or so) and if it has an undead form. The owner of this unit is the same who owned the dying unit.
JASS:
function Trig_BlightKill_Actions takes nothing returns nothing
    local location l = GetUnitLoc(GetTriggerUnit())
    local integer u = GetUnitTypeId(GetTriggerUnit())
    //SaveInteger(udg_Hashy,StringHash("UnFo"),'esen','e003')
    set u = LoadInteger(udg_Hashy,StringHash("UnFo"),u)
    call TriggerSleepAction( 9.00 )
    if IsPointBlighted(GetLocationX(l),GetLocationY(l)) and IsHeroUnitId(GetUnitTypeId(GetTriggerUnit())) == false and u != null  then
        call ReplaceUnitBJ( GetTriggerUnit(), u, bj_UNIT_STATE_METHOD_MAXIMUM )
        call SetUnitState(bj_lastReplacedUnit,UNIT_STATE_LIFE,1)
    endif
endfunction

//===========================================================================
function InitTrig_BlightKill takes nothing returns nothing
    set gg_trg_BlightKill = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_BlightKill, EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddAction( gg_trg_BlightKill, function Trig_BlightKill_Actions )
endfunction

Ability that raises back dead units when channelling.
JASS:
function Trig_RaiseDeadInit_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A01E' ) ) then
        return false
    endif
    return true
endfunction

function Trig_RaiseDeadInit_Actions takes nothing returns nothing
    call GroupAddUnit(udg_DeadRaisers,GetTriggerUnit())
    call EnableTrigger(gg_trg_RaiseDeadLoop)
endfunction

//===========================================================================
function InitTrig_RaiseDeadInit takes nothing returns nothing
    set gg_trg_RaiseDeadInit = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_RaiseDeadInit, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_RaiseDeadInit, Condition( function Trig_RaiseDeadInit_Conditions ) )
    call TriggerAddAction( gg_trg_RaiseDeadInit, function Trig_RaiseDeadInit_Actions )
endfunction
JASS:
function ControlDeathFilter2 takes nothing returns boolean
if GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE) <= 0.425 then
    if String2UnitIdBJ(LoadStringBJ(StringHashBJ("UnFo"), StringHashBJ(UnitId2StringBJ((GetUnitTypeId(GetFilterUnit())))), udg_Hashy)) != null then
        return true
    endif
    if GetUnitRace(GetFilterUnit()) == RACE_UNDEAD then
        return true
    endif
endif
return false
endfunction

function CastRaise takes nothing returns nothing
    local unit caster = GetEnumUnit()
    local location l = GetUnitLoc(caster)
    local integer i = GetRandomInt(1,300)
    local group g = CreateGroup()
    local unit u
    local real manacost = 30
    local integer ID
    if GetUnitState(caster,UNIT_STATE_MANA) >= manacost then
        if i <= GetUnitLevel(caster) then
            call GroupEnumUnitsInRange(g,GetLocationX(l),GetLocationY(l),768,function ControlDeathFilter2)
            set udg_TempUnit = caster
            set u = FirstOfGroup(g)
            set ID = LoadInteger(udg_Hashy,StringHash("UnFo"),GetUnitTypeId(u))
            if ID != 0 then
                call ReplaceUnitBJ(u,ID,bj_UNIT_STATE_METHOD_MAXIMUM)
                call SetUnitState(bj_lastReplacedUnit,UNIT_STATE_LIFE,GetUnitState(bj_lastReplacedUnit,UNIT_STATE_MAX_LIFE)*0.3)
                call SetUnitState(bj_lastReplacedUnit,UNIT_STATE_MANA,0)
                call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl",bj_lastReplacedUnit,"origin"))
                call SetUnitOwner(bj_lastReplacedUnit,GetOwningPlayer(caster),true)
                call SetUnitState(caster,UNIT_STATE_MANA,GetUnitState(caster,UNIT_STATE_MANA)-30)
            elseif GetUnitRace(u) == RACE_UNDEAD then
                call ReplaceUnitBJ(u,GetUnitTypeId(u),bj_UNIT_STATE_METHOD_MAXIMUM)
                call SetUnitState(bj_lastReplacedUnit,UNIT_STATE_LIFE,GetUnitState(bj_lastReplacedUnit,UNIT_STATE_MAX_LIFE)*0.3)
                call SetUnitState(bj_lastReplacedUnit,UNIT_STATE_MANA,0)
                call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl",bj_lastReplacedUnit,"origin"))
                call SetUnitOwner(bj_lastReplacedUnit,GetOwningPlayer(caster),true)
                call SetUnitState(caster,UNIT_STATE_MANA,GetUnitState(caster,UNIT_STATE_MANA)-30)
            endif
        endif
    else
        call GroupRemoveUnit(udg_DeadRaisers,caster)
    endif
    call RemoveLocation(l)
    call DestroyGroup(g)
    set u = null
    set caster = null
    set udg_TempUnit = null
endfunction
function Trig_RaiseDeadLoop_Actions takes nothing returns nothing
    if IsUnitGroupEmptyBJ(udg_DeadRaisers) == false then
        call ForGroup(udg_DeadRaisers,function CastRaise)
    else
        call DisableTrigger(gg_trg_RaiseDeadLoop)
    endif
endfunction

//===========================================================================
function InitTrig_RaiseDeadLoop takes nothing returns nothing
    set gg_trg_RaiseDeadLoop = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_RaiseDeadLoop, 0.03 )
    call TriggerAddAction( gg_trg_RaiseDeadLoop, function Trig_RaiseDeadLoop_Actions )
endfunction
  • RaiseDeadEnd
    • Events
      • Unit - A unit Stops casting an ability
      • Unit - A unit Finishes casting an ability
    • Conditions
      • (Ability being cast) Equal to (==) NextAbil7
    • Actions
      • Unit Group - Remove (Triggering unit) from DeadRaisers
 
Status
Not open for further replies.
Top