Author Topic: Can monsters use player abilities?  (Read 11033 times)

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Can monsters use player abilities?
« on: September 11, 2013, 02:53:37 AM »
I want a monster to have an ability that immobilizes the player it casts the spell at, like the ranger's vine/entangle ability. I of course wouldn't use that sprite as the effect, but I want the same game-mechanic to work for a certain mob. Possible?

Clarity

  • Posts: 46
  • Community Developer
    • View Profile
Re: Can monsters use player abilities?
« Reply #1 on: September 11, 2013, 03:47:44 AM »
I want a monster to have an ability that immobilizes the player it casts the spell at, like the ranger's vine/entangle ability. I of course wouldn't use that sprite as the effect, but I want the same game-mechanic to work for a certain mob. Possible?

I'd imagine making a custom status effect in itself would be difficult enough, but having it affect the player is even harder. I'd personally wait until they add status effects on players in the future, but if you seriously need it quick then try what you can. I'll be glad to help.

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #2 on: September 11, 2013, 11:02:13 AM »
I'd imagine making a custom status effect in itself would be difficult enough, but having it affect the player is even harder. I'd personally wait until they add status effects on players in the future, but if you seriously need it quick then try what you can. I'll be glad to help.
I'm not looking to code anything into the engine just yet - just asking whether it is possible to use the existing XML/Behaviors to add an immobilizing effect like the Ranger's ability does on mobs. I'm guessing it's a no but I still want to be sure. The abilities for casters are kinda limited at this point. The ones I can name are:
teleporting, casting projectiles(homing or non), summoning, nova, and healing.

Don't get me wrong these are all usable and fine - but still quite limited. I'm trying to make mobs that don't behave exactly how mobs behave in vanilla hw :P There are plenty of abilities that bosses use that don't seem to be available for use by other mobs as well which is a bit limiting.

Clarity

  • Posts: 46
  • Community Developer
    • View Profile
Re: Can monsters use player abilities?
« Reply #3 on: September 11, 2013, 09:12:50 PM »
I'd imagine making a custom status effect in itself would be difficult enough, but having it affect the player is even harder. I'd personally wait until they add status effects on players in the future, but if you seriously need it quick then try what you can. I'll be glad to help.
I'm not looking to code anything into the engine just yet - just asking whether it is possible to use the existing XML/Behaviors to add an immobilizing effect like the Ranger's ability does on mobs. I'm guessing it's a no but I still want to be sure. The abilities for casters are kinda limited at this point. The ones I can name are:
teleporting, casting projectiles(homing or non), summoning, nova, and healing.

Don't get me wrong these are all usable and fine - but still quite limited. I'm trying to make mobs that don't behave exactly how mobs behave in vanilla hw :P There are plenty of abilities that bosses use that don't seem to be available for use by other mobs as well which is a bit limiting.

Honestly the mobs are unlimited, but limited to your own abilities. If you can't do it, you should seek alternatives or methods.

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #4 on: September 12, 2013, 12:31:11 AM »
When you say limited to my abilities how do you mean? As far as I know this project wasn't open sourced and able to impliment new behaviors or abilities except through editing xml files with existing parameters. In that sense, we're limited by the parameters given - how do you mean?

Clarity

  • Posts: 46
  • Community Developer
    • View Profile
Re: Can monsters use player abilities?
« Reply #5 on: September 12, 2013, 02:00:31 AM »
When you say limited to my abilities how do you mean? As far as I know this project wasn't open sourced and able to impliment new behaviors or abilities except through editing xml files with existing parameters. In that sense, we're limited by the parameters given - how do you mean?

Well basically, even though this isn't open source, accessing and creating new behaviours is very much possible and such we can create new xml files, but to actually use them within the assets folder, there would be a need of a mod loader or such of some sorts in the assets folder that allows us just pack up an edited assets folder and still allow it to be usable, which is very much possible for people to make, just it takes time and effort. Modding a game is limitless, yet limited at the same time due to your own abilities. Anything is really possible just if you can figure it out. So there really aren't any parameters limiting us and I hope I can soon physically show you this myself as I have mods in the works, but I need to get behaviour files, but I don't want to use a dll converter, in case Myran has a solution. Hope this helps clear things up.

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #6 on: September 12, 2013, 02:06:08 AM »
I'm still confused. You're saying you can code new behaviors into the game but it would require a mod loader? Why can't you just add new behaviors and such to the existing code - and since those behaviors are not called by the default game but are accessible by the xmls you make they won't bother the 'vanilla' game - and use them without a mod loader?

Also you say even though its not open source accessing and creating behaviors is possible - Can you explain how? How do I get to those files because I can guarantee I'll make new ones if it's there.

Clarity

  • Posts: 46
  • Community Developer
    • View Profile
Re: Can monsters use player abilities?
« Reply #7 on: September 12, 2013, 02:10:27 AM »
I'm still confused. You're saying you can code new behaviors into the game but it would require a mod loader? Why can't you just add new behaviors and such to the existing code - and since those behaviors are not called by the default game but are accessible by the xmls you make they won't bother the 'vanilla' game - and use them without a mod loader?

Also you say even though its not open source accessing and creating behaviors is possible - Can you explain how? How do I get to those files because I can guarantee I'll make new ones if it's there.

I've attempted myself to make a "Chaos Mode" of this game by making smarter AI and stronger enemies, but as I packed it back up and replaced the default assets.bin with the modded one, the game will NOT load at all and will instead give you an error.

How? Go find a dll to C# converter and locate it in one of the dlls (I wont say which one, just cause.) and bam there they are! However, I don't think modding through the dlls is going to work, so I shall await Myran to respond to my modding question thread for my answer. Until then, we wait.

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #8 on: September 12, 2013, 02:49:25 AM »
If you have custom assets that are in the assets folder, those assets along with the level xmls are packed into the .hwm together - will your stuff not work when packed into the .hwm?

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #9 on: September 12, 2013, 11:38:59 AM »
Also, I still need my original question answered anyone - Is it possible to have mobs use player abilities using the xml/editor?

Myran

  • Developer
  • Posts: 183
    • View Profile
Re: Can monsters use player abilities?
« Reply #10 on: September 13, 2013, 09:36:52 PM »
It is not, no. The new version of the game (1.1) has a new AI type which is a lot more customizable so you can add individual skills to it (and I will document that soon), however right now players can not be affected by status effects like slow or stun. I will add status effects for players in a future patch, but it can't be done right now.

Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #11 on: September 14, 2013, 02:35:24 AM »
Thanks Myran! Any examples you want to spoil of the customizable AI? :D

Myran

  • Developer
  • Posts: 183
    • View Profile
Re: Can monsters use player abilities?
« Reply #12 on: September 14, 2013, 01:36:46 PM »
Sure, a few examples

A maggot with alternating attacks:
Code: [Select]
<actor collision="6" behavior="composite" minimap="menus/minimap.xml:enemy">
<behavior>
<dictionary>
<entry name="hp"><int>30</int></entry>
<entry name="multiplayer-scale-hp"><bool>true</bool></entry>
<entry name="blockable"><bool>true</bool></entry>

<float name="aggro-range">50</float>
<float name="max-range">50</float>


<dictionary name="movement">
<string name="type">ranged</string>

<float name="speed">0.2</float>
<float name="range">5</float>
</dictionary>

<array name="skills">
<dictionary>
<string name="type">shoot</string>
<string name="anim-set">attack</string>
<int name="cooldown">300</int>
<float name="range">5</float>

<string name="proj">projectiles/enemy_maggot_1.xml</string>
<int name="num">3</int>
<int name="span">30</int>
</dictionary>

<dictionary>
<string name="type">shoot</string>
<string name="anim-set">attack</string>
<int name="cooldown">1</int>
<float name="range">5</float>

<string name="proj">projectiles/enemy_maggot_1.xml</string>
</dictionary>
</array>



<entry name="death-snd"><string>sound/monsters.xml:death_maggot</string></entry>
<entry name="hit-effect"><string>effects/particles.xml:hit_maggot_1</string></entry>
<entry name="hit-particle"><string>effects/particles.xml:particle_maggot_1</string></entry>
<array name="loot">
<int>200</int><string>items/valuable_1.xml</string>
<int>10</int><string>items/health_1.xml</string>
<int>5</int><string>items/mana_1.xml</string>
</array>
</dictionary>
</behavior>



<!-- Idle -->
<sprite scale="16" name="east">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame>64 32 32 32</frame>
</sprite>

<sprite scale="16" name="northeast">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="150">64 0 32 32</frame>
</sprite>

<sprite scale="16" name="north">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="150">32 0 32 32</frame>
</sprite>

<sprite scale="16" name="northwest">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="150">0 0 32 32</frame>
</sprite>

<sprite scale="16" name="west">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame>0 32 32 32</frame>
</sprite>

<sprite scale="16" name="southwest">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="150">0 64 32 32</frame>
</sprite>

<sprite scale="16" name="south">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="150">32 64 32 32</frame>
</sprite>

<sprite scale="16" name="southeast">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="150">64 64 32 32</frame>
</sprite>


<!-- Walk -->
<sprite scale="16" name="east-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">160 32 32 32</frame>
<frame time="200">256 32 32 32</frame>
<frame time="150">64 32 32 32</frame>
</sprite>

<sprite scale="16" name="northeast-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">160 0 32 32</frame>
<frame time="200">256 0 32 32</frame>
<frame time="150">64 0 32 32</frame>
</sprite>

<sprite scale="16" name="north-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">128 0 32 32</frame>
<frame time="200">224 0 32 32</frame>
<frame time="150">32 0 32 32</frame>
</sprite>

<sprite scale="16" name="northwest-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">96 0 32 32</frame>
<frame time="200">192 0 32 32</frame>
<frame time="150">0 0 32 32</frame>
</sprite>

<sprite scale="16" name="west-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">96 32 32 32</frame>
<frame time="200">192 32 32 32</frame>
<frame time="150">0 32 32 32</frame>
</sprite>

<sprite scale="16" name="southwest-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">96 64 32 32</frame>
<frame time="200">192 64 32 32</frame>
<frame time="150">0 64 32 32</frame>
</sprite>

<sprite scale="16" name="south-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">128 64 32 32</frame>
<frame time="200">224 64 32 32</frame>
<frame time="150">32 64 32 32</frame>
</sprite>

<sprite scale="16" name="southeast-walk">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="300">160 64 32 32</frame>
<frame time="200">256 64 32 32</frame>
<frame time="150">64 64 32 32</frame>
</sprite>


<!-- Attack -->
<sprite scale="16" name="east-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">64 128 32 32</frame>
<frame time="200">160 128 32 32</frame>
<frame time="200">256 128 32 32</frame>
</sprite>

<sprite scale="16" name="northeast-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">64 96 32 32</frame>
<frame time="200">160 96 32 32</frame>
<frame time="200">256 96 32 32</frame>
</sprite>

<sprite scale="16" name="north-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">32 96 32 32</frame>
<frame time="200">128 96 32 32</frame>
<frame time="200">224 96 32 32</frame>
</sprite>

<sprite scale="16" name="northwest-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">0 96 32 32</frame>
<frame time="200">96 96 32 32</frame>
<frame time="200">192 96 32 32</frame>
</sprite>

<sprite scale="16" name="west-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">0 128 32 32</frame>
<frame time="200">96 128 32 32</frame>
<frame time="200">192 128 32 32</frame>
</sprite>

<sprite scale="16" name="southwest-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">0 160 32 32</frame>
<frame time="200">96 160 32 32</frame>
<frame time="200">192 160 32 32</frame>
</sprite>

<sprite scale="16" name="south-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">32 160 32 32</frame>
<frame time="200">128 160 32 32</frame>
<frame time="200">224 160 32 32</frame>
</sprite>

<sprite scale="16" name="southeast-attack">
<texture>actors/maggot_1.png</texture>
<origin>16 17</origin>
<frame time="800">64 160 32 32</frame>
<frame time="200">160 160 32 32</frame>
<frame time="200">256 160 32 32</frame>
</sprite>
</actor>



A tick without an attack:
Code: [Select]
<actor collision="6" behavior="composite" minimap="menus/minimap.xml:enemy">
<behavior>
<dictionary>
<entry name="hp"><int>25</int></entry>
<entry name="multiplayer-scale-hp"><bool>true</bool></entry>


<dictionary name="movement">
<string name="type">melee</string>

<float name="speed">0.45</float>
</dictionary>

<array name="skills" />



<float name="aggro-range">50</float>
<float name="max-range">50</float>



<entry name="death-snd"><string>sound/monsters.xml:death_tick</string></entry>
<entry name="hit-effect"><string>effects/particles.xml:hit_tick_1</string></entry>
<entry name="hit-particle"><string>effects/particles.xml:particle_tick_1</string></entry>
<array name="loot">
<int>200</int><string>items/valuable_3.xml</string>
<int>200</int><string>items/valuable_4.xml</string>
<int>580</int><string>items/valuable_5.xml</string>
<int>10</int><string>items/health_1.xml</string>
<int>10</int><string>items/mana_1.xml</string>
</array>
</dictionary>
</behavior>


<!-- Idle -->
<sprite scale="16" random-start="true" name="east">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">40 20 20 20</frame>
<frame time="1500">100 20 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="northeast">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">40 0 20 20</frame>
<frame time="1500">100 0 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="north">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">20 0 20 20</frame>
<frame time="1500">80 0 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="northwest">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">0 0 20 20</frame>
<frame time="1500">60 0 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="west">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">0 20 20 20</frame>
<frame time="1500">60 20 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="southwest">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">0 40 20 20</frame>
<frame time="1500">60 40 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="south">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">20 40 20 20</frame>
<frame time="1500">80 40 20 20</frame>
</sprite>

<sprite scale="16" random-start="true" name="southeast">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">40 40 20 20</frame>
<frame time="1500">100 40 20 20</frame>
</sprite>


<!-- Walk -->
<sprite scale="16" name="east-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">160 20 20 20</frame>
<frame time="150">220 20 20 20</frame>
</sprite>

<sprite scale="16" name="northeast-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">160 0 20 20</frame>
<frame time="150">220 0 20 20</frame>
</sprite>

<sprite scale="16" name="north-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">140 0 20 20</frame>
<frame time="150">200 0 20 20</frame>
</sprite>

<sprite scale="16" name="northwest-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">120 0 20 20</frame>
<frame time="150">180 0 20 20</frame>
</sprite>

<sprite scale="16" name="west-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">120 20 20 20</frame>
<frame time="150">180 20 20 20</frame>
</sprite>

<sprite scale="16" name="southwest-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">120 40 20 20</frame>
<frame time="150">180 40 20 20</frame>
</sprite>

<sprite scale="16" name="south-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">140 40 20 20</frame>
<frame time="150">200 40 20 20</frame>
</sprite>

<sprite scale="16" name="southeast-walk">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="150">160 40 20 20</frame>
<frame time="150">220 40 20 20</frame>
</sprite>


<!-- Attack -->
<sprite scale="16" name="east-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">40 80 20 20</frame>
<frame time="200">100 80 20 20</frame>
</sprite>

<sprite scale="16" name="northeast-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">160 0 20 20</frame>
<frame time="200">220 0 20 20</frame>
</sprite>

<sprite scale="16" name="north-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">20 60 20 20</frame>
<frame time="200">80 60 20 20</frame>
</sprite>

<sprite scale="16" name="northwest-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">120 0 20 20</frame>
<frame time="200">180 0 20 20</frame>
</sprite>

<sprite scale="16" name="west-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">0 80 20 20</frame>
<frame time="200">60 80 20 20</frame>
</sprite>

<sprite scale="16" name="southwest-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">120 40 20 20</frame>
<frame time="200">180 40 20 20</frame>
</sprite>

<sprite scale="16" name="south-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">20 100 20 20</frame>
<frame time="200">80 100 20 20</frame>
</sprite>

<sprite scale="16" name="southeast-attack">
<texture>actors/tick_1.png</texture>
<origin>10 12</origin>
<frame time="200">160 40 20 20</frame>
<frame time="200">220 40 20 20</frame>
</sprite>
</actor>

Myran

  • Developer
  • Posts: 183
    • View Profile
Re: Can monsters use player abilities?
« Reply #13 on: September 14, 2013, 01:37:09 PM »
And also,

The survival boss:
Code: [Select]
<actor collision="3.5" behavior="composite" minimap="menus/minimap.xml:enemy">
<behavior>
<dictionary>
<entry name="hp"><int>20000</int></entry>
<entry name="boss-hp"><bool>true</bool></entry>
<entry name="multiplayer-scale-hp"><bool>true</bool></entry>
<entry name="ignore-hit-effects"><bool>true</bool></entry>
<entry name="ignore-trap-damage"><bool>true</bool></entry>

<float name="aggro-range">40</float>
<float name="max-range">40</float>

<dictionary name="movement">
<string name="type">ranged</string>

<float name="speed">0.6</float>
<float name="range">14</float>
</dictionary>

<array name="skills">
<dictionary>
<string name="type">teleport</string>
<float name="range">15</float>
<int name="usages">1</int>
<string name="conditional">hp lt 0.75</string>
<string name="sound">sound/misc.xml:spawn_tele</string>

<float name="min-dist">15</float>
<float name="max-dist">60</float>
<bool name="trail">true</bool>
</dictionary>

<dictionary>
<string name="type">teleport</string>
<float name="range">15</float>
<int name="usages">1</int>
<string name="conditional">hp lt 0.5</string>
<string name="sound">sound/misc.xml:spawn_tele</string>

<float name="min-dist">15</float>
<float name="max-dist">60</float>
<bool name="trail">true</bool>
</dictionary>

<dictionary>
<string name="type">teleport</string>
<float name="range">15</float>
<int name="usages">1</int>
<string name="conditional">hp lt 0.25</string>
<string name="sound">sound/misc.xml:spawn_tele</string>

<float name="min-dist">15</float>
<float name="max-dist">60</float>
<bool name="trail">true</bool>
</dictionary>




<dictionary>
<string name="type">blink</string>
<string name="anim-set">attack</string>
<int name="cooldown">2500</int>
<float name="range">15</float>
<string name="sound">sound/misc.xml:spawn_tele</string>

<float name="dist">5</float>
<string name="effect">effects/particles.xml:flash</string>
</dictionary>



<!-- Phase 1 -->
<dictionary>
<string name="conditional">hp gt 0.75</string>

<string name="type">summon</string>
<string name="anim-set">attack</string>
<int name="cooldown">2250</int>
<float name="range">7</float>
<string name="sound">sound/monsters.xml:lich_summon</string>

<int name="num">2</int>
<string name="actor">actors/lich_3.xml</string>
<string name="effect">effects/particles.xml:flash_summon</string>
</dictionary>

<dictionary>
<string name="conditional">hp gt 0.75</string>

<string name="type">summon</string>
<string name="anim-set">attack</string>
<int name="cooldown">2250</int>
<float name="range">7</float>
<string name="sound">sound/monsters.xml:lich_summon</string>

<int name="num">2</int>
<string name="actor">actors/wisp_2.xml</string>
<string name="effect">effects/particles.xml:flash_summon</string>
</dictionary>




<!-- Phase 2 -->
<dictionary>
<string name="conditional">hp lt 0.75 and hp gt 0.5</string>

<string name="type">nova</string>
<string name="anim-set">attack</string>
<int name="cooldown">3000</int>
<float name="range">14</float>
<string name="sound">sound/monsters.xml:lich_seeker</string>

<string name="proj">projectiles/enemy_lich_boss_small.xml</string>
<int name="num">12</int>
</dictionary>

<dictionary>
<string name="conditional">hp lt 0.75 and hp gt 0.5</string>

<string name="type">shoot</string>
<string name="anim-set">attack</string>
<int name="cooldown">1500</int>
<float name="range">14</float>
<string name="sound">sound/monsters.xml:lich_seeker</string>

<string name="proj">projectiles/enemy_lich_boss_small.xml</string>
<int name="num">3</int>
<int name="span">200</int>
</dictionary>




<!-- Phase 3 -->
<dictionary>
<string name="conditional">hp lt 0.5 and hp gt 0.25</string>

<string name="type">summon</string>
<string name="anim-set">attack</string>
<int name="cooldown">2000</int>
<float name="range">7</float>
<string name="sound">sound/monsters.xml:lich_summon</string>

<int name="num">2</int>
<string name="actor">actors/lich_3.xml</string>
<string name="effect">effects/particles.xml:flash_summon</string>
</dictionary>

<dictionary>
<string name="conditional">hp lt 0.5 and hp gt 0.25</string>

<string name="type">summon</string>
<string name="anim-set">attack</string>
<int name="cooldown">1500</int>
<float name="range">7</float>
<string name="sound">sound/monsters.xml:lich_summon</string>

<int name="num">4</int>
<string name="actor">actors/wisp_2.xml</string>
<string name="effect">effects/particles.xml:flash_summon</string>
</dictionary>

<dictionary>
<string name="conditional">hp lt 0.5 and hp gt 0.25</string>

<string name="type">summon</string>
<string name="anim-set">attack</string>
<int name="cooldown">1400</int>
<float name="range">7</float>
<string name="sound">sound/monsters.xml:lich_summon</string>

<int name="num">2</int>
<string name="actor">actors/lich_1.xml</string>
<string name="effect">effects/particles.xml:flash_summon</string>
</dictionary>




<!-- Phase 4 -->
<dictionary>
<string name="conditional">hp lt 0.25</string>

<string name="type">spew</string>
<string name="anim-set">attack</string>
<int name="cooldown">4000</int>
<float name="range">14</float>
<string name="sound">sound/misc.xml:spawn_tele</string>

<string name="chnl-anim-set">attack</string>
<string name="proj">projectiles/enemy_lich_boss_small2.xml</string>
<float name="spread">0.5</float>
<int name="rate">33</int>
<int name="duration">2500</int>
<int name="ang-offset">180</int>
</dictionary>









<dictionary>
<string name="type">shoot</string>
<string name="anim-set">attack</string>
<int name="cooldown">1250</int>
<float name="range">14</float>
<string name="sound">sound/monsters.xml:lich_seeker</string>

<string name="proj">projectiles/enemy_lich_boss_small.xml</string>
<int name="num">2</int>
<int name="span">240</int>
</dictionary>

</array>

<entry name="death-snd"><string>sound/monsters.xml:death_lich</string></entry>
<entry name="hit-effect"><string>effects/particles.xml:robe-black-hit</string></entry>
<entry name="hit-particle"><string>effects/particles.xml:robe-black-particle</string></entry>

</dictionary>
</behavior>


<!-- Idle -->
<sprite scale="16" name="east">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>0 0 24 24</frame>
</sprite>

<sprite scale="16" name="northeast">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>24 0 24 24</frame>
</sprite>

<sprite scale="16" name="north">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>48 0 24 24</frame>
</sprite>

<sprite scale="16" name="northwest">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>72 0 24 24</frame>
</sprite>

<sprite scale="16" name="west">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>96 0 24 24</frame>
</sprite>

<sprite scale="16" name="southwest">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>120 0 24 24</frame>
</sprite>

<sprite scale="16" name="south">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>144 0 24 24</frame>
</sprite>

<sprite scale="16" name="southeast">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame>168 0 24 24</frame>
</sprite>


<!-- Walk -->
<sprite scale="16" name="east-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">0 24 24 24</frame>
<frame time="125">0 48 24 24</frame>
</sprite>

<sprite scale="16" name="northeast-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">24 24 24 24</frame>
<frame time="125">24 48 24 24</frame>
</sprite>

<sprite scale="16" name="north-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">48 24 24 24</frame>
<frame time="125">48 48 24 24</frame>
</sprite>

<sprite scale="16" name="northwest-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">72 24 24 24</frame>
<frame time="125">72 48 24 24</frame>
</sprite>

<sprite scale="16" name="west-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">96 24 24 24</frame>
<frame time="125">96 48 24 24</frame>
</sprite>

<sprite scale="16" name="southwest-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">120 24 24 24</frame>
<frame time="125">120 48 24 24</frame>
</sprite>

<sprite scale="16" name="south-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">144 24 24 24</frame>
<frame time="125">144 48 24 24</frame>
</sprite>

<sprite scale="16" name="southeast-walk">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="125">168 24 24 24</frame>
<frame time="125">168 48 24 24</frame>
</sprite>


<!-- Attack -->
<sprite scale="16" name="east-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">0 72 24 24</frame>
<frame time="500">0 96 24 24</frame>
</sprite>

<sprite scale="16" name="northeast-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">24 72 24 24</frame>
<frame time="500">24 96 24 24</frame>
</sprite>

<sprite scale="16" name="north-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">48 72 24 24</frame>
<frame time="500">48 96 24 24</frame>
</sprite>

<sprite scale="16" name="northwest-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">72 72 24 24</frame>
<frame time="500">72 96 24 24</frame>
</sprite>

<sprite scale="16" name="west-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">96 72 24 24</frame>
<frame time="500">96 96 24 24</frame>
</sprite>

<sprite scale="16" name="southwest-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">120 72 24 24</frame>
<frame time="500">120 96 24 24</frame>
</sprite>

<sprite scale="16" name="south-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">144 72 24 24</frame>
<frame time="500">144 96 24 24</frame>
</sprite>

<sprite scale="16" name="southeast-attack">
<texture>actors/lich_boss_small.png</texture>
<origin>12 17</origin>
<frame time="500">168 72 24 24</frame>
<frame time="500">168 96 24 24</frame>
</sprite>
</actor>


Heretic

  • Moderator
  • Posts: 305
  • Castle Runner
    • View Profile
Re: Can monsters use player abilities?
« Reply #14 on: September 14, 2013, 01:56:29 PM »
Awesome! So with this module you'll be able to have a mob be both a caster and melee maybe? Or ranged and melee, etc? I guess right now I can work-around those with low range spells with no effect, etc, but this seems easier!