wc3campaigns
WC3C Homepage - www.wc3c.netUser Control Panel (Requires Log-In)Engage in discussions with other users and join contests in the WC3C forums!Read one of our many tutorials, ranging in difficulty from beginner to advanced!Show off your artistic talents in the WC3C Gallery!Download quality models, textures, spells (vJASS/JASS), systems, and scripts!Download maps that have passed through our rigorous approval process!

Go Back   Wc3C.net > Warcraft III Modding > Project Discussion > Map / Campaign Projects
User Name
Password
Register Rules Get Hosted! Chat Pastebin FAQ and Rules Members List Calendar



Reply
 
Thread Tools Search this Thread
Old 03-20-2013, 01:45 PM   #16
Balnnazar
User
 
Balnnazar's Avatar
 
Join Date: Jan 2007
Posts: 310

Balnnazar is on a distinguished road (21)

Send a message via MSN to Balnnazar
Default

Quote:
Originally Posted by Anitarf
I've drawn a quick image of what the map's layout could be like; obviously, there's some space left over, so the levels need not be so cramped on the grid as they are in that image. For example, if the fourth and fifth segments were a single longer level, that'd give the players a new shop and a shortcut to previous buildings at the start of the 3rd, 6th and 9th levels, which seems like a nice, even distribution (that is the reason why I rotated the segments in the third quadrant, otherwise the third shortcut would come too soon).

Mmm, if I do this I'll probably have to scrap the whole coast area, since the murlocs would be inland while the undead are on the border.
Unless, you add a new wave before the murlocs/goblins.

I think that mud golems would work for round 2: maybe they were awaken by the goblin's exavations.
The area would be a "natural cave" while the third section would be a mine, then the Mine entrance would lead to the coast, a.k.a. the murloc's section.

This would let me keep most of the stuff I already did, I'd just have to move some props up to add enough space for another section.

Also: More or less, how much space do you want for each section?
Not counting the props, each section has a height of 9 (almost two vertical doors next to eachother).

Quote:
Originally Posted by Rao Dao Zao
Hmm, and with a layout like that there is good space to cater for diverse terrains -- coastal areas at the bottom, a mountain peak to climb to a snowy/fiery volcano finale...

Keep in mind that there is only 7 free points for tilesets left, and I'm trying to use as few custom models as possible.
I'd be better to finish the first few areas, then (if there is enough space left) we'll try to make something like that (I'd love to make a snow zone.)
If you want, you can pick the map and edit it yourself. We can always copy&paste it later.

Last edited by Balnnazar : 03-20-2013 at 02:46 PM.
Balnnazar is offline   Reply With Quote
Sponsored Links - Login to hide this ad!
Old 03-20-2013, 02:24 PM   #17
Balnnazar
User
 
Balnnazar's Avatar
 
Join Date: Jan 2007
Posts: 310

Balnnazar is on a distinguished road (21)

Send a message via MSN to Balnnazar
Default

And done.

No "Base" nor shortcuts yet, just placeholders for the 4 first sections.

And yes, the cave is less detailed that before: I had to manually redo the cliffs, I didn't had the patience to redecorate it for this preview, but I will do it later.


Edit: Also, for the Undead section: instead of a graveyard, I was thinking of a crypt or something. There would be a hole where the players can get in. The connection between this and the next area would be a small exterior graveyard.
It's kinda early but: Anyone got/knows a good wall model that would work for this?
Attached Files
File Type: w3x RandomDefence_v002.w3x (252.7 KB, 5 views)

Last edited by Balnnazar : 03-20-2013 at 03:09 PM.
Balnnazar is offline   Reply With Quote
Old 03-21-2013, 10:38 AM   #18
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,083

Submissions (19)

Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

Quote:
Originally Posted by Balnnazar
Mmm, if I do this I'll probably have to scrap the whole coast area, since the murlocs would be inland while the undead are on the border.
Unless, you add a new wave before the murlocs/goblins.

I think that mud golems would work for round 2: maybe they were awaken by the goblin's exavations.
That's the thing, though, mud golems seem more powerful than murlocs or even skeletons, so if we have them as a wave they'd fit better later.

This isn't really a problem, as I've said we've got space to spare so we can always tweak the layout so that the third level goes along the bottom. I've attached an example of how this could be done. Doing it this way is even better as the sections are no longer cramped to the grid.

Also, I just noticed you decreased the distance between sections by one yellow grid space. No wonder the sections felt so cramped. That's the reason why I made the spacing as wide as I did in the first place, I think it should be changed back to that.
Attached Images
File Type: jpg RandomDefenceLayout2.jpg (61.0 KB, 11 views)
__________________

Last edited by Anitarf : 03-21-2013 at 10:38 AM.
Anitarf is offline   Reply With Quote
Old 03-21-2013, 11:59 AM   #19
Balnnazar
User
 
Balnnazar's Avatar
 
Join Date: Jan 2007
Posts: 310

Balnnazar is on a distinguished road (21)

Send a message via MSN to Balnnazar
Default

Alright.

I gave each separation 3 grid spaces, 4 was too much since there already is trees and cliffs inside the sections.
I didn't change the positions yet, I'm still trying to think What could fit before the coast. It would be a shame to waste all that space on the right when there is enough space for 4 sections.

About the enemies: with that criteria you could say that goblins are stronger that murlocs, and it wouldn't make sense to have them as second row.
They got better armor and weapons, and they are more inteligent that those creeps.

Edit: I forgot to attach the map.
Also, you might want to edit the spawnpoint for the spiders. Right now they are spawning inside a cliff.
Attached Files
File Type: w3x RandomDefence_v002.w3x (254.1 KB, 1 views)

Last edited by Balnnazar : 03-21-2013 at 12:11 PM.
Balnnazar is offline   Reply With Quote
Old 03-21-2013, 02:34 PM   #20
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,083

Submissions (19)

Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

Quote:
Originally Posted by Balnnazar
I gave each separation 3 grid spaces, 4 was too much since there already is trees and cliffs inside the sections.
Yeah, but you also need some buffer space for the camera, otherwise you can see into the neighbouring sections which is distracting. Also, it gives you more room to twist the path which currently seems way too straight.
__________________
Anitarf is offline   Reply With Quote
Old 03-21-2013, 06:21 PM   #21
Balnnazar
User
 
Balnnazar's Avatar
 
Join Date: Jan 2007
Posts: 310

Balnnazar is on a distinguished road (21)

Send a message via MSN to Balnnazar
Default

Quote:
Originally Posted by Anitarf
Yeah, but you also need some buffer space for the camera, otherwise you can see into the neighbouring sections which is distracting. Also, it gives you more room to twist the path which currently seems way too straight.

You can simply use black mask on the map, then reveal the playable area with a region for half a second so that it shows up for the player.
That's what I used to hide areas I didn't want the players to see until later.

Last edited by Balnnazar : 03-21-2013 at 06:23 PM.
Balnnazar is offline   Reply With Quote
Old 03-22-2013, 12:12 PM   #22
Rao Dao Zao
My vision is augmented
 
Rao Dao Zao's Avatar


MDL & Resource Moderator
 
Join Date: Aug 2003
Posts: 2,445

Submissions (27)

Rao Dao Zao has a brilliant future (824)Rao Dao Zao has a brilliant future (824)Rao Dao Zao has a brilliant future (824)Rao Dao Zao has a brilliant future (824)Rao Dao Zao has a brilliant future (824)Rao Dao Zao has a brilliant future (824)Rao Dao Zao has a brilliant future (824)

Approved Map: When the Freedom Slips Away

Send a message via MSN to Rao Dao Zao
Default

Whoa, you guys have lost me.

Surely all areas are delimited by destructibles and/or cliffs, so there will be "natural" black mask patches left behind to further ease the terrain transitions between areas?

I guess the more space there is between lanes, the easier those biome transitions will be to arrange... There's no need to make things cramped, we can always increase the map size again anyway.

__________________
Rao Dao Zao is offline   Reply With Quote
Old 03-22-2013, 02:37 PM   #23
Balnnazar
User
 
Balnnazar's Avatar
 
Join Date: Jan 2007
Posts: 310

Balnnazar is on a distinguished road (21)

Send a message via MSN to Balnnazar
Default

Check this one and tell me what you think about it.
I made the sections more spacious, and the space between them bigger, and the placeholder for the coast.

It'd help if you edited the map yourself and added some more references for it, like: Where and how do you want the player's base and the shortcuts, etc.
You can do it with regions or doodads.

Also, sorry if the coast looks kinda weird: I had to re-re-do the water layer because it was bugging with previous cliff's placements.
Attached Files
File Type: w3x RandomDefence_v003.w3x (275.0 KB, 4 views)

Last edited by Balnnazar : 03-22-2013 at 02:39 PM.
Balnnazar is offline   Reply With Quote
Old 03-22-2013, 04:43 PM   #24
HerrStanev
User
 
HerrStanev's Avatar
 
Join Date: Mar 2013
Posts: 49

HerrStanev has little to show at this moment (8)

Default

The terrain's nice now. Just needs polishing/beautifying in the future.
On a side note, ABuff is possibly the hardest thing I've ever worked with.
I've been trying to make a quite simple spell but I don't know how to refresh buff duration.
Collapse Zinc:
    function CooldownReset()
    {  
        if ( UnitHasABuff(SpellEvent.CastingUnit, abt) )
        {
            // ????
            //            
            // RemoveBuff(abt) / DispellBuff(abt); 
        }
    }
Btw, it is supposed to refresh the next cast ability if the unit has a specific buff, then remove the buff... The buffing spell is immediate target, so do I need to call ABuffApply again? Would that preserve the same instance or just destroy it and make a new one?

Last edited by HerrStanev : 03-22-2013 at 04:47 PM.
HerrStanev is offline   Reply With Quote
Old 03-22-2013, 05:10 PM   #25
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,083

Submissions (19)

Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

I'm not sure what kind of spell you're trying to make but for a typical buff spell, all you need to do is call ABuffApply. The system will then either create a new buff or refresh an existing one if it exists (the exact behaviour depends on the buff category but spell buffs typically use the standard category which functions as I described here).
__________________
Anitarf is offline   Reply With Quote
Old 03-22-2013, 06:02 PM   #26
HerrStanev
User
 
HerrStanev's Avatar
 
Join Date: Mar 2013
Posts: 49

HerrStanev has little to show at this moment (8)

Default

I that think because of the usage of Engineering upgrade I can't refresh a spell's cooldown with RemoveAbility + AddAbility...

Collapse Zinc:
    function CooldownReset()
    {  
        integer level;
        
        if ( UnitHasABuff(SpellEvent.CastingUnit, abt) )
        {
            ABuffRemove(GetABuffFromUnitByType(SpellEvent.CastingUnit, abt));
            
            level = GetUnitAbilityLevel(SpellEvent.CastingUnit, SpellEvent.AbilityId);
            UnitRemoveAbility(SpellEvent.CastingUnit, SpellEvent.AbilityId);
            UnitAddAbility(SpellEvent.CastingUnit, SpellEvent.AbilityId);
            SetUnitAbilityLevel(SpellEvent.CastingUnit, SpellEvent.AbilityId, level);
        }
    }

This code just removes the cast ability and doesn't add it again.
EDIT: Also the ABuffRemove function doesn't seem to work the way I do it... I'd really need a tutorial on this.

Last edited by HerrStanev : 03-22-2013 at 06:07 PM.
HerrStanev is offline   Reply With Quote
Old 03-22-2013, 11:24 PM   #27
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,083

Submissions (19)

Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

It did not occur to me that I should also copy the ABuff (and xe) documentation to the map along with the systems. Sorry about that.

It would also help if I knew what you were trying to do.

Your use of ABuffRemove seems correct. The error may be elsewhere, perhaps in the buff's event callbacks? I don't know, what do you mean by "doesn't seem to work"?

With regard to the ability not being readded, I did a quick test; the problem you have is that removing the ability that the unit is currently casting will cause that unit to end casting the ability, which triggers the corresponding event. Once SpellEvent runs all the callbacks for that event, it assumes the spell cast data is no longer needed and nulls the casting unit to avoid leaks. This normally isn't an issue but in your case all this happens while you're still in the middle of your spell cast callback. You need to store your unit to a local variable before removing the ability.
__________________

Last edited by Anitarf : 03-22-2013 at 11:34 PM.
Anitarf is offline   Reply With Quote
Old 03-22-2013, 11:49 PM   #28
HerrStanev
User
 
HerrStanev's Avatar
 
Join Date: Mar 2013
Posts: 49

HerrStanev has little to show at this moment (8)

Default

It works now with the temporary variable.
But it doesn't remove the buff...

I'll just quote the spell description so you can see what I was attempting:
Temporarily increases the attack speed of this unit by 33%/66%/100%. The next spell that finishes casting will not go into cooldown but will remove this buff. Lasts 6 seconds.

It feels good for a caster - you can land a few quick blows with the increased attack speed and then time your instant spell to be able to cast it once again. Or maybe double your short channeling spell.
Btw, I was considering this as a contribution. Tell me if you dislike something and are against it.
Collapse Zinc:
//! zinc

library EssenceControl requires ABuff, xepreload, SpellEvent
{
    constant integer AID_CORE_SPELL = 'A00F';
    constant integer AID_IAS_BONUS_SPELL = 'A00G';
    
    constant integer BUFF_ABILITY = 'A00E';
    constant integer BUFF_BUFF = 'A001';
    
    function GetDuration(unit whichUnit) -> real
    {
        return 6.;
    }
    
    aBuffType abt;
    
    function Create(aBuff eventBuff)
    {
        UnitAddAbility(eventBuff.target.u, BUFF_ABILITY);
        SetUnitAbilityLevel(eventBuff.target.u, BUFF_ABILITY, eventBuff.level);
        UnitMakeAbilityPermanent(eventBuff.target.u, true, BUFF_ABILITY); //prevent morphing from removing the ability
        
        UnitAddAbility(eventBuff.target.u, AID_IAS_BONUS_SPELL);
        SetUnitAbilityLevel(eventBuff.target.u, AID_IAS_BONUS_SPELL, eventBuff.level);
        UnitMakeAbilityPermanent(eventBuff.target.u, true, AID_IAS_BONUS_SPELL);
    }
    
    function Cleanup(aBuff eventBuff)
    {
        UnitRemoveAbility(eventBuff.target.u, BUFF_ABILITY);
        UnitRemoveAbility(eventBuff.target.u, BUFF_BUFF);
        
        UnitRemoveAbility(eventBuff.target.u, AID_IAS_BONUS_SPELL);
    }
    function Refresh(aBuff eventBuff)
    {
        SetABuffTimeRemaining(eventBuff, GetDuration(eventBuff.caster));
        SetUnitAbilityLevel(eventBuff.target.u, BUFF_ABILITY, eventBuff.level);
        SetUnitAbilityLevel(eventBuff.target.u, AID_IAS_BONUS_SPELL, eventBuff.level);
    }
    
    function SpellEffect()
    {
        ABuffApply(abt, SpellEvent.CastingUnit, SpellEvent.CastingUnit, GetDuration(SpellEvent.CastingUnit), /*
        */ GetUnitAbilityLevel(SpellEvent.CastingUnit, AID_CORE_SPELL), 0);
    }
    
    function CooldownReset()
    {  
        integer level;
        unit cast = SpellEvent.CastingUnit;
        
        if ( true ) // <-- Add spell exceptions here!
        {
            if ( UnitHasABuff(cast, abt) && SpellEvent.AbilityId != AID_CORE_SPELL )
            {
                ABuffRemove(GetABuffFromUnitByType(cast, abt));
                
                level = GetUnitAbilityLevel(cast, SpellEvent.AbilityId);
                UnitRemoveAbility(cast, SpellEvent.AbilityId);
                UnitAddAbility(cast, SpellEvent.AbilityId);
                SetUnitAbilityLevel(cast, SpellEvent.AbilityId, level);
            }
        }
        
        cast = null;
    }
    
    function onInit()
    {
        RegisterSpellEffectResponse(AID_CORE_SPELL, SpellEffect);
        RegisterSpellEndCastResponse(0, CooldownReset);
        
        XE_PreloadAbility(AID_CORE_SPELL);
        XE_PreloadAbility(AID_IAS_BONUS_SPELL);
        
        abt = aBuffType.create();
        abt.ignoreAsBuff = false;
        abt.eventCreate = ABuffEvent_Create.Create;
        abt.eventRefresh = ABuffEvent_Refresh.Refresh;
        abt.eventCleanup = ABuffEvent_Cleanup.Cleanup;
    }
}

//! endzinc

//! zinc
library EssenceControlSetup requires SkillRandomizer, EssenceControl
{ function onInit() { SkillRandomizer.normal.addSkill( 'A00F', 'A00H', "r", OrderId("berserk") ); } }
//! endzinc


Is there also any way to attach an sfx to the Slow aura buff?

Last edited by HerrStanev : 03-22-2013 at 11:59 PM.
HerrStanev is offline   Reply With Quote
Old 03-23-2013, 12:52 AM   #29
Fledermaus
default string
 
Fledermaus's Avatar
 
Join Date: May 2006
Posts: 604

Submissions (1)

Fledermaus has a spectacular aura about (134)

Send a message via MSN to Fledermaus
Default

Add the effect to the ability, not the buff.
Fledermaus is offline   Reply With Quote
Old 03-23-2013, 12:56 PM   #30
Anitarf
Procrastination Incarnate


Development Director
 
Join Date: Feb 2004
Posts: 8,083

Submissions (19)

Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)Anitarf has a brilliant future (883)

2008 Spell olympics - Fire - SilverApproved Map: Old School Alliance TacticsHero Contest #2 - 3rd PlaceSpell making session 2 winner

Default

Quote:
Originally Posted by HerrStanev
It works now with the temporary variable.
But it doesn't remove the buff...
I'm not sure what could be the problem, looking at the code it seems correct. I'm not able to test right now so I can't find out where the problem is. For now, you could try the following and see if the problem goes away: try using the buff's spell event response instead of the general event of SpellEvent. That will give you direct access to the event buff in the callback function, no need to use GetABuffFromUnitByType.

Also, you don't need to set the remaining duration in the refresh function, the system already does that when you call ABuffApply.

Also, the ABuffDisplay module can handle the aura ability for you so you don't have to add it yourself. If you're using tornado slow aura to display your buff, you could also use it to modify attack speed directly instead of using an extra ability.

Quote:
Btw, I was considering this as a contribution. Tell me if you dislike something and are against it.
Oh, no no, the spell is just fine. I like the mechanics of it, in fact I was considering a spell that resets all colldowns as a possible ultimate. One thing to keep in mind, though, is the possibility that this might at some point reset the cooldown of an ability that is not a standard hero skill, but was added as a part of another spell. Since you don't set the ability as permanent when you re-add it, such an ability might subsequently be lost in a morph spell (if we can have morph spells at all given our random spell system). This is a very unlikely scenario so I don't think you need to change anything about your spell now, but it is something to keep in mind as more spells get added.

Quote:
Is there also any way to attach an sfx to the Slow aura buff?
As Fledermaus said, you need to add the effect to the aura ability, since aura buffs won't display their art on the unit that is the source of the aura.
__________________
Anitarf is offline   Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT. The time now is 01:44 AM.


Donate

Affiliates
The Hubb http://bylur.com - Warcraft, StarCraft, Diablo and DotA Blog & Forums The JASS Vault Clan WEnW Campaign Creations Clan CBS GamesModding Flixreel Videos

Powered by vBulletin (Copyright ©2000 - 2013, Jelsoft Enterprises Ltd).
Hosted by www.OICcam.com
IT Support and Services provided by Executive IT Services