SUPPORT ACCOUNT CLANS
Welcome, Unregistered.
 

Thread: [Single Player Map] Slither Madness (TD-Pacman-Bomberman + AI) v1.03

Page 1 of 2 12 LastLast
Results 1 to 20 of 25
  1. #1

    [Single Player Map] Slither Madness (TD-Pacman-Bomberman + AI) v1.03

    Welcome to the World of Slither Madness !

    I am making some single player mini-games to learn how the editor works ...

    Download links (you need both files)
    !!! WARNING : the base.gamemechanics is old and might bug your game - solution : put base.gamemechanics in the resources folder of bomberman.s2z (this is just a zip file). I will fix this when my new version is ready.
    Part 1 : Download Slither Bomber Pacman Party, with prototype AI ! (v1.03)
    Part 2 : Download part 2, containing music and base.gamemechanics (same since v1.02)

    Featuring MadSlither, Runes, Pacman Noms and ... MadBomberAI (very basic though ) ...
    Also, I've got a maze generating algorithm, with automatic entitylist and entity generation.
    So if you're bored by this one, reply in this topic and I'll post more maps!

    How to play :
    - download
    - put the bomberman.s2z mapfile in C:\Program Files\Heroes of Newerth\game\maps
    - put resources1.s2z in C:\Program Files\Heroes of Newerth\game (rename it to resources1_bomberman.s2z if you want)
    - create game on practice mode, with the map "Bomberman 1_3"
    - disconnect and create again. this is because the custom files won't be loaded the first time
    - ???
    - profit !

    Let me know what you think about it, I'm open for suggestions !

    Goal of the game :
    Collect Noms and try to kill the Bombers by outsmarting them! Use mines (1st ability) to damage them, escape with blink (2nd) and get map control with wards (3rd)
    Start careful and put some wards then collect Noms to gain experience and level your bombs ... carefull though. They hurt.



    Changelog :
    Code:
    v1.03 (small update)
    - Give items to MadBombers with your Fortification key
    - This results in 7 levels of difficulty !
    - Beware : they only get stronger, you cannot inverse this (yet)
    v1.02 
    - MadBombers wanderrange reduced, no more Path Finding error console spam
    - added respawn point for the MadBombers
    - AI uses the spells a bit more often
    - adjusted MadSlither Stats to scale a bit
    - wards are flying now to give more sight, can be upgraded 3 times
    - added awesome music :D
    v1.01
    - automatic maze generation with python script, 
      automatic generation of entitylist, location gadgets and states 
      ==> a new map in 5 seconds :D
    - first AI version : in every field there is a Gadget_Location_x_y , 
      with a small aura, applying a state that commands (aggressive_wander) 
      where to go (up,down,left,right)
    - Pacman Noms now sometimes drop Powerups providing a short boost
    - first official release
    v1.00
    - creation of MadSlither, with 4 directional spray bombs
    - grid based map, optimized for snaptargettogrid="256"
    - Pacman Noms code, based on Balphagore
    - mushrooms ...
    To do (as soon as I get some feedback on this game):
    Code:
    - make the original bomberman, 
      where you blow up crates (mushrooms) to get bonuses ...
      but the AI is quite a bit harder here. I won't provide AI for this one.
      AI is easy to code for pacman, it's harder to code it in HoN for bomberman (dynamic terrain)
    - more bonuses : swap, kick bomb, bouncy bombs, teleporters, drifters, bombdrop sickness, trigger bombs, immunity
    - levels and items on the AI
    - a cooler/nicer map
    - more heroes, more spells ... feel free to do this, 
       it's not very hard now the main script is working.
    This started as an easy Tower Defence game where you play as Slither and try to kill the creepwaves before they kill your racks. I am pretty new with the editor, and my goal is to get this map working asap.
    This implies I'm not looking at cosmetics and content at the moment, all I want is a working TD. Feel free to make a nicer map with a better grid.

    After a few hours of research, I was able to make a map, where you start as slither immediatly (no hero pick stuff), with creepwaves going to the racks.

    Old problems :

    The creeps stop moving when I attack them, how can I make them ignore Hero & ward attacks? I think it's in base.mechanics combattables, but I have no clue what to change.
    Fixed by using attacktargetscheme="enemy_buildings"
    Also, the creeps are Supercreeps from the start, even though the spawner has both melee and range racks as target.
    But maybe I have to define the custom waves already (I hoped I could skip this for now)

    Entity_CreepSpawner needs a laneNode, 2 enemy racks and an enemy Entity_CreepSpawner spawner as target0-3
    How to code my own creepspawner, since the default requires an enemy creepspawner.
    Look at Oloko's post in the Castle Defence Thread
    How to make the creepspawner to spawn creeps that get stronger over time
    (example : first minute = 200 hp, second minute = 300 hp + 2 armor , ... and so on)

    Severon's TD explained this quite well.
    How to use gold in spells ?
    Code:
    <foreachplayer>    
    <setent1 name="player_hero" />
    <setgold entity="target_entity" value="200"/> 
    <givegold target="ent1" amount="100"/>
    </foreachplayer>
    and mess around with this. Alternatively, use a scriptvalue for all gold requiring spells and then use
    Code:
    <onframe>
    <setgold entity="target_entity" value=some_script_value /> 
    </onframe>
    not sure if the second one works though.
    I used a mana system now and it works pretty good. You can upgrade the wards if slither has enough mana.
    How to make typical Bomberman bombs .. spawn 4 toxic sprays, with direction north east south west. Preferably with a delay of 3 seconds.
    Spawn Dummy units with offset and push_entity="true", spawnprojectile target=stack_entity


    My current problem :
    Some pathing errors. No big deal atm.
    Also, if some could look at the end of my game_info.entity ... I made an attempt for a winning condition ... but it doesn't work yet

    Credits :
    Oloko, Bangerz, ElementUser, Idejder for the great guides
    Hot_To_Go for the youtube vid that got me started
    FlameStick for the pacman concept

    Tnx!
    Last edited by an7hraxjax; 06-14-2011 at 11:01 AM.

  2. #2
    I think by making Slither and wards invurnable to all damage will make them being ignored by creeps.

    And the other part im not quite sure.

    Btw looks good nice to see more people working on some projects
    My custom map -> Pacman HoN Style

  3. #3
    I'll try adjusting the aggrorange first. Seems easier.

  4. #4
    Yea do it! I wanna try this map

  5. #5
    If someone can help me out with this one :
    How to make the creepspawner to spawn creeps that get stronger over time
    (example : first minute = 200 hp, second minute = 300 hp + 2 armor , ... and so on)

    I am using the creepspawner described in the castle fight thread. I made a state that gets applied to the creeps, but how can I make this dynamic - change the bonuses it gives ?

  6. #6
    Wouldn't you want to spawn a different kind of unit rather than only upgrading them? If that's the case, then you can look at the script in my Enfoes or at Severon's tower defense map (since he uses my script too it should be the same).

    If you really want to give a bonus over time and not spawn different units, then I can tell you tomorrow when I have the time to, I need to go now.

  7. #7
    allright, tnx ! I didn't know that TD was already working ..

    I'm good to go for a while now

  8. #8
    The creepwaves are working now, but I would like to know if it's possible to write in ability.entity:

    Code:
    <onimpact>
    <condition test="charges eq 0">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Interval" target="source_entity" continuous="true" />
    </condition>
    <condition test="charges eq 2">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Wave1" target="source_entity" continuous="true" />
    </condition>
    <condition test="charges eq 4">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Interval" target="source_entity" continuous="true" />
    </condition>
    <condition test="charges eq 6">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Wave2" target="source_entity" continuous="true" />
    </condition>
    </onimpact>
    ...
    as something like this
    Code:
    <condition test="charges %2 eq 0">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Wave # FtoA(charges/2,0)" target="source_entity" continuous="true" />
    </condition>
    it looks cleaner, but my syntax is wrong. Can someone help me out?

  9. #9
    Quote Originally Posted by an7hraxjax View Post
    The creepwaves are working now, but I would like to know if it's possible to write in ability.entity:

    Code:
    <onimpact>
    <condition test="charges eq 0">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Interval" target="source_entity" continuous="true" />
    </condition>
    <condition test="charges eq 2">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Wave1" target="source_entity" continuous="true" />
    </condition>
    <condition test="charges eq 4">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Interval" target="source_entity" continuous="true" />
    </condition>
    <condition test="charges eq 6">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Wave2" target="source_entity" continuous="true" />
    </condition>
    </onimpact>
    ...
    as something like this
    Code:
    <condition test="charges %2 eq 0">
      <addcharges entity="this_entity" />
      <applystate name="State_Spawner_Wave # FtoA(charges/2,0)" target="source_entity" continuous="true" />
    </condition>
    it looks cleaner, but my syntax is wrong. Can someone help me out?
    Sadly, I don't know of any way to do something like this.
    I don't know how you could use a value, add it to a string and use that result as a name. I doubt that you can actually do something like this.
    That is why I made so many conditions in mine.

  10. #10
    I'd like to bump this with these questions :

    - how to make a spell that COSTS gold ? i can produce gold but not consume it :s.. maybe there is a way around by auto-buying a dummy item or so ? i'm stuck on this one.

    - my main focus was on the slither wards, each of them has 4 upgradeable passive aura-skills like attack damage, speed, poison and slow. The problem is that it's a skill (at slither) that has a skill (at the ward) .. on upgrading i can set the level (this works ok), but at spawning, the ward skill levels are already maxed (not ok).
    The skill level at spawn is the sum of slither skill + ward skill lvl (= 2 at least) ... i want it to be lvl 1 ...

    I'll upload my map, since I've got some nice working and commented code to start singleplayer maps right away (skipping lobby and hero select), this might be usefull for other people.
    Probably I won't take this map much further, since it's quite hard to balance a whole new TD, and I don't feel the need with the massive load of real good TD's out already. But it's a fun project with some code mechanisms that might be usefull to you if you want to make a map.

  11. #11
    I don't know of a way to make spell cost gold. The only workaround right now for this is to make the player buy them rather than use a skill.

    I want to make sure I understand the other point you mentioned. What you want is to level you ward skill and it will spawn a ward that is always level1. Then that ward can level by itself when making kills an such? I doubt it's what you exactly want to do, since leveling the ability doesn't seems to make much sense to me (ward would do the same damage at every level and all the same stats).

  12. #12
    Tnx for the help Oloko. I've uploaded my map, you can see for yourself if you want to.
    To do so, just put a ward and activate the first 2 spells to lvl the auras, but you'll see that the aura's are lvl 2 atspawn. In further lvling they are ok.
    The reason to put the levels explicitly is because the wards are related to the level of slithers 3rd ability (= spawn a ward).
    I disabled further leveling slithers' 3rd ability here, but if you allow more levels, it goes like this :

    assume slither 3rd is lvl 4. you put a ward, that has baselvl 1 in the definition, but if you look at the aura ... it's already lvl 5 !
    The lowest lvl for slither to put a ward is 1 ... and with baselvl = 1 of the ward .. this sums up to lvl 2 automatic total baselvl onspawn.

    Now my problem : i cannot reset it to lvl 1 in total ... maybe i should spawn an entity which lvl is not related the lvl of the spawning spell. Maybe S2 can add a variable to break the lvl relation between both, but i doubt this is needed.

  13. #13
    You can remove the baselevel="1" from the gadget abilities, since it already has every ability level 1 when it spawn, so it only level it to 2.
    With this now, when you spawn a ward level 1 it will have every ability level 1.

    So if you want to be able to level Slither's 3rd ability to level 4 but spawn wards level 1 you can do the following:

    PHP Code:
    <projectile
        name
    ="Projectile_Ebulus_Ability_03_Seed"

        
    speed="2000"
        
    gravity="15000"

        
    modelscale="1.5"
        
    model="/heroes/ebulus/ability_01/effects/model.mdf"
        
        
    traileffect="effects/trail.effect"
    >
        <
    onimpact>
            <
    spawnaffector name="Affector_Ebulus_Ability3" level="1" target="target_position" />
        </
    onimpact>
    </
    projectile
    We change the <onimpact> of the projectile to spawn an affector rather than spawning the ward. This let you use the level attribute to spawn the affector. Its sad, but you can't do this with <spawnunit>.

    Now the new affector:
    PHP Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <affector
        name="Affector_Ebulus_Ability3"
        
        lifetime="0"
    >
        <onspawn>
            <spawnunit name="Gadget_Ebulus_Ability3" count="1" target="target_position" />
        </onspawn>
    </affector>
    So you will have a ward level 1 at every level of Slither 3rd spell. But your ward will do the same amount of damage every level. I don't know if it's really what you want.

  14. #14
    It's been a while since I posted an update, well I've got a mana based upgrade system working. I'm now trying to make a slither bomberman

    ... but i've got some troubles with the explosion spell. Can someone help me to make activation of the first spell to spawn 4 toxic sprays, with direction north east south west. Preferably with a delay of 3 seconds.

    I'm using a pharaoh inspired version now, but it doesnt work yet...
    it spawns 4 dummy gadgets around and facing slither with angle 180 ... but i'm stuck there.

  15. #15
    I think you could use something like this:

    <setpos0 position="target_position" offset="250 600 0" offsetspace="source_entity" />
    <spawnprojectile name="Projectile_Ebulus_Ability1" source="source_entity" target="pos0" />

    <setpos0 position="target_position" offset="0 600 0" offsetspace="source_entity" />
    <spawnprojectile name="Projectile_Ebulus_Ability1" source="source_entity" target="pos0" />

    <setpos0 position="target_position" offset="-250 600 0" offsetspace="source_entity" />
    <spawnprojectile name="Projectile_Ebulus_Ability1" source="source_entity" target="pos0" />

    Here there is only 3 of them, but I think you get the idea. About the delay of 3 sec, do you mean they spawn one by one at every 3sec? If that is the case, maybe you should do a channeling spell with a state that impact every 3sec. With an accumulator and a bit of conditions, you could know what offset should be set to the projectile every 3sec.

  16. #16
    Tnx! Using these positions is better than what I did ..
    Before this, I made a big mess of it ... I had an ability spawning 4 gadgets, each with an ability proccing a state to trigger a <useability ...> and popping a projectile.. it was terrible. But I know how projectiles work now

    The delay is like a bomb in bomberman ... I'll look at bombadier's spell for this.

    The cool thing is that it's easy to upgrade the bombs, just by increasing the lifetime (or ms) of the projectiles.

    And the creeping model in ebulus ability_01 is so awesome.

    Edit: somehow, it doesn't work with positions ? It's like I cannot spawn projectiles with an ability with actionttype="self_position"
    setpos0 works well.

    The ability :
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <ability
    	name="Ability_MadSlither1"
    
    	statuseffecttooltip="State_MadSlither_Ability1"
    	icon="/heroes/ebulus/ability_01/icon.tga"
    	
    	anim="ability_1"
    	casttime="1000"
    	castactiontime="200"
    	casteffect="/heroes/ebulus/ability_01/effects/cast.effect"
    	maxlevel="3"
    	baselevel="1"
    	requiredlevel="1,2,3"
    
    	actiontype="self_position"
    	
    	manacost="5"
    	cooldowntime="2000"
    
    	range="700"
    	forcerange="700"
    >
    	<onimpact>
    		<spawnunit name="Gadget_Dummy_Explosion" target="source_position" offset="800 0" pushentity="true"/>
    		<spawnprojectile name="Projectile_MadSlither_Ability1" target="stack_entity" source="source_entity"/>
    		
    		<spawnunit name="Gadget_Dummy_Explosion" target="source_position" offset="-800 0" pushentity="true"/>
    		<spawnprojectile name="Projectile_MadSlither_Ability1" target="stack_entity" source="source_entity"/>
    		
    		<spawnunit name="Gadget_Dummy_Explosion" target="source_position" offset="0 800" pushentity="true"/>
    		<spawnprojectile name="Projectile_MadSlither_Ability1" target="stack_entity" source="source_entity"/>
    		
    		<spawnunit name="Gadget_Dummy_Explosion" target="source_position" offset="0 -800" pushentity="true"/>
    		<spawnprojectile name="Projectile_MadSlither_Ability1" target="stack_entity" source="source_entity"/>
    		
    		<!-- after a few times you can level this spell, to see the effects (range etc) at other lvls -->
    		<setent1 name="player_hero" />
    		<giveexperience target="ent1" amount="50"/>
    	
    	</onimpact>
    	
    </ability>
    The projectile
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <projectile
    	name="Projectile_MadSlither_Ability1"
    	
    	speed="250"
    	gravity="0"
    	lifetime="1250,2250,3250"
    	
    	impacteffect="/heroes/ebulus/ability_01/effects/impact.effect"
    	traileffect="/heroes/ebulus/ability_01/effects/trail.effect"
    	model="/heroes/ebulus/ability_01/effects/model.mdf,/shared/models/invis.mdf,"
    	modelscale="3.0"
    	
    	canturn="true"
    	flying="true"
    	pathing="false"
    	flyheight="100"
    	
    	touchradius="1"
    	maxtouchespertarget="1"
    	touchcliffs="true"
    	touchtargetscheme="all_other_units"
    	toucheffecttype="Magic"
    	touchradiusdiradjust="true"
    >
    	<ontouch>
    		<damage effecttype="Magic" amount="50,70,90,120" />
    		<popup name="poison" a="result" source="target_entity" target="source_entity" />					
    		<kill target="this_entity" source="" />
    	</ontouch>
    </projectile>
    It works here, with a dummy gadget to spawn the projectile to. If you can get it working with positions, plx let me know !
    Last edited by an7hraxjax; 02-21-2011 at 01:27 PM.

  17. #17
    Bump because it's updated
    Newest map with AI running around
    Download Here!

  18. #18
    Updated to v1.02, with music, and less errors in console -.-
    Link in OP.

  19. #19
    Lool this game is great, had fun while playing it, but i think it becomes very easy at the end, when all i have like vision over everything on the map. Do you think you could like, set difficult yourself, like make 3 mazes on 1 game, and you can choose to play on 1 of them whitch is easy, medium or hard? that would be cool

    Made by Lhune.

  20. #20
    I downloaded this mad today and I can only say that it is awsome!
    next time make it possible to play several peoples where everyone is Slither and the one with most Cookies(nom-noms) eaten/most kills wins the game or first to a set amount of Cookies(nom-noms) or kills.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •