How to use timer to detect the last enemy's attribute in the room?

Enter room (Decides the attack interval of enemies)

game.fast = 1
game.slow = 9

Timer function (random battle countdown)

DisableTimer (random battle countdown)
game.enemycount = 0
attack
foreach (enemy, GetDirectChildren (game.pov.parent)) {
  if (HasAttribute(enemy, "enemy")) {
    change skill (enemy)
    game.enemycount = game.enemycount+1
  }
}
rngtime = GetRandomInt(game.fast,game.slow)
SetTimerInterval (random battle countdown, rngtime)
if (game.enemycount>0) {
  msg ("Next attack in "+rngtime+" seconds")
  EnableTimer (random battle countdown)
}

So generally, I have many enter room scripts to determine the attack interval of different enemies, this is unnecessary work and it might interfere with my future games which relies on automatic generating of enemies
What if I place the game.fast and game.slow into enemy.fast and enemy.slow instead, this represents a challenge as there can be multiple enemies in a room, therefore the easy way out is to just take the last enemy's attribute in the room at the bottom of the object list
So yeah, I dunno the code for this, thanks in advance for your help


Of course, this can be even better, it is currently more workload for a slightly different gameplay,
but I dunno what I do not know, perhaps someone have a better way of timing the enemy's attacks

So this question is really skippable, but if you are interested, let me know how to change the script into having each enemy having their own independent timer leading to own independent attack intervals

Game code for Sekiro 2.4

<!--Saved by Quest 5.8.6836.13983-->
<asl version="580">
  <include ref="English.aslx" />
  <include ref="Core.aslx" />
  <game name="K03e v2.4 Sekiro">
    <gameid>76e88b74-a74d-4efa-9cd5-5033a4a90278</gameid>
    <version>1.0</version>
    <firstpublished>2024</firstpublished>
    <fast type="int">1</fast>
    <slow type="int">9</slow>
    <gridmap />
    <roomenter type="script">
      if (RandomChance(20)) {
        ClearScreen
      }
      EnableTimer (random battle countdown)
    </roomenter>
  </game>
  <object name="room">
    <inherit name="editor_room" />
    <isroom />
    <enemycount type="int">0</enemycount>
    <enter type="script">
      game.fast = 1
      game.slow = 9
    </enter>
    <object name="monkey king">
      <inherit name="editor_object" />
      <alias1>monkey king</alias1>
      <alias2 type="string"></alias2>
      <displayverbs type="stringlist" />
      <enemy type="string"></enemy>
      <atk type="int">2</atk>
      <hp type="int">7</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">2</parryrequired>
    </object>
    <exit alias="south" to="room1">
      <inherit name="southdirection" />
    </exit>
    <object name="player">
      <inherit name="editor_object" />
      <inherit name="editor_player" />
      <atk type="int">1</atk>
      <hp type="int">9</hp>
      <maxhp type="int">9</maxhp>
      <parryatk type="int">1</parryatk>
      <object name="skill">
        <inherit name="editor_object" />
        <inventoryverbs type="stringlist" />
        <slot type="int">1</slot>
        <attr name="absorb from shaman monk" type="boolean">false</attr>
        <attr name="basic player skill" type="boolean">true</attr>
        <swap type="script">
          if (skill.basic player skill = true) {
            basic player skill
          }
          if (skill.absorb from shaman monk = true) {
            shaman monk skill
          }
        </swap>
      </object>
    </object>
  </object>
  <verb>
    <property>swap</property>
    <pattern>swap</pattern>
    <defaultexpression>"You can't swap " + object.article + "."</defaultexpression>
  </verb>
  <object name="room1">
    <inherit name="editor_room" />
    <enter type="script"><![CDATA[
      msg ("Wind: Oh you have defeated the monkey king,<br/>good no need to explain the tutorial to you then,<br/>I am totally not lazy or anything...haha<br/>")
      TextFX_Typewriter ("Player: I found this thing", 100)
    ]]></enter>
    <exit alias="north" to="room">
      <inherit name="northdirection" />
    </exit>
    <exit alias="northeast" to="room2">
      <inherit name="northeastdirection" />
    </exit>
  </object>
  <object name="roomhidden">
    <inherit name="editor_room" />
    <object name="dragon pill">
      <inherit name="editor_object" />
      <visible />
      <displayverbs type="stringlist">
        <value>Take</value>
      </displayverbs>
      <inventoryverbs type="stringlist">
        <value>Use</value>
        <value>Drop</value>
      </inventoryverbs>
      <take />
      <attr name="feature_usegive" type="boolean">false</attr>
      <use type="boolean">false</use>
      <gain1atk type="script">
        player.atk = player.atk+1
        msg ("Attack +1")
        msg ("New stats")
        msg ("Atk: "+player.atk)
        msg ("Parry atk: "+player.parryatk)
        msg ("Hp: "+player.hp)
        msg ("Maxhp: "+player.maxhp)
        RemoveObject (this)
      </gain1atk>
      <gain1parryatk type="script">
        player.parryatk = player.parryatk+1
        msg ("Parry attack +1")
        msg ("New stats")
        msg ("Atk: "+player.atk)
        msg ("Parry atk: "+player.parryatk)
        msg ("Hp: "+player.hp)
        msg ("Maxhp: "+player.maxhp)
        RemoveObject (this)
      </gain1parryatk>
      <healtomaxhp type="script">
        player.hp = player.maxhp
        msg ("Healed to max hp!")
        msg ("New stats")
        msg ("Atk: "+player.atk)
        msg ("Parry atk: "+player.parryatk)
        msg ("Hp: "+player.hp)
        msg ("Maxhp: "+player.maxhp)
        RemoveObject (this)
      </healtomaxhp>
      <gain1maxhp type="script">
        player.maxhp = player.maxhp+1
        msg ("Max hp +1")
        msg ("New stats")
        msg ("Atk: "+player.atk)
        msg ("Parry atk: "+player.parryatk)
        msg ("Hp: "+player.hp)
        msg ("Maxhp: "+player.maxhp)
        RemoveObject (this)
      </gain1maxhp>
    </object>
  </object>
  <object name="room2">
    <inherit name="editor_room" />
    <exit alias="southwest" to="room1">
      <inherit name="southwestdirection" />
    </exit>
    <exit alias="north" to="room3">
      <inherit name="northdirection" />
    </exit>
  </object>
  <object name="room3">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 3
      game.slow = 6
    </enter>
    <exit alias="south" to="room2">
      <inherit name="southdirection" />
    </exit>
    <object name="umbrella">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
    </object>
    <object name="misty geisha">
      <inherit name="editor_object" />
      <alias1>misty geisha</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">1</atk>
      <hp type="int">12</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">3</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
    <exit alias="northwest" to="room4">
      <inherit name="northwestdirection" />
    </exit>
  </object>
  <object name="room4">
    <inherit name="editor_room" />
    <enter type="script"><![CDATA[
      msg ("Wind: So you ate the pill?<br/>See, this game is fairly easy, it is brawns over brains<br/>")
      TextFX_Typewriter ("Player: Why am I just killing random people?", 100)
    ]]></enter>
    <exit alias="southeast" to="room3">
      <inherit name="southeastdirection" />
    </exit>
    <exit alias="north" to="room5">
      <inherit name="northdirection" />
    </exit>
  </object>
  <object name="room5">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 4
      game.slow = 9
    </enter>
    <exit alias="south" to="room4">
      <inherit name="southdirection" />
    </exit>
    <object name="grey tiger statue">
      <inherit name="editor_object" />
      <alias1>grey tiger statue</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">2</atk>
      <hp type="int">9</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">1</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
    <object name="pearl tiger statue">
      <inherit name="editor_object" />
      <alias1>pearl tiger statue</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">3</atk>
      <hp type="int">6</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">1</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
    <exit alias="north" to="room6">
      <inherit name="northdirection" />
    </exit>
  </object>
  <object name="room6">
    <inherit name="editor_room" />
    <enter type="script"><![CDATA[
      msg ("Wind: Woa, you defeated two enemies at once, alright, alright, you want the story...<br/>You are a samurai, your new heir that can become the legitimate shogun is being hunted down,<br/>yes, it is a steal the throne game, but by default who gets to become the new king is passed down by the royal decree which is now stated to be the heir you were protecting<br/>")
      TextFX_Typewriter ("Player: Where is the heir, why am I alone?", 100)
    ]]></enter>
    <exit alias="south" to="room5">
      <inherit name="southdirection" />
    </exit>
    <exit alias="northwest" to="room7">
      <inherit name="northwestdirection" />
    </exit>
    <exit alias="north" to="room8">
      <inherit name="northdirection" />
    </exit>
    <exit alias="northeast" to="room9">
      <inherit name="northeastdirection" />
    </exit>
  </object>
  <object name="room7">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 2
      game.slow = 6
    </enter>
    <exit alias="southeast" to="room6">
      <inherit name="southeastdirection" />
    </exit>
    <object name="lustrous lotus">
      <inherit name="editor_object" />
      <alias1>lustrous lotus</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">2</atk>
      <hp type="int">14</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">3</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room8">
    <inherit name="editor_room" />
    <exit alias="south" to="room6">
      <inherit name="southdirection" />
    </exit>
    <exit alias="north" to="room10">
      <inherit name="northdirection" />
    </exit>
  </object>
  <object name="room9">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 3
      game.slow = 6
    </enter>
    <exit alias="southwest" to="room6">
      <inherit name="southwestdirection" />
    </exit>
    <object name="claiming wolf">
      <inherit name="editor_object" />
      <alias1>claiming wolf</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">3</atk>
      <hp type="int">10</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">1</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room10">
    <inherit name="editor_room" />
    <enter type="script"><![CDATA[
      SetForegroundColour ("Red")
      msg ("Shaman: My dear, you have been tricked, the wind is the dragon heir all along<br/>His silence is your doom<br/>")
      SetForegroundColour ("Black")
      TextFX_Typewriter ("Player: That just sounds like you wanna fight", 100)
      game.fast = 4
      game.slow = 9
    ]]></enter>
    <exit alias="south" to="room8">
      <inherit name="southdirection" />
    </exit>
    <object name="temple relic">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
    </object>
    <object name="shaman monk">
      <inherit name="editor_object" />
      <alias1>shaman monk</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">2</atk>
      <hp type="int">24</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">4</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
    <exit name="room10 to room11" alias="north" to="room11">
      <inherit name="northdirection" />
      <locked />
    </exit>
    <object name="absorb from shaman monk">
      <inherit name="editor_object" />
      <visible type="boolean">false</visible>
      <displayverbs type="stringlist" />
      <absorb type="script">
        skill.basic player skill = false
        skill.absorb from shaman monk = true
        RemoveObject (this)
      </absorb>
    </object>
  </object>
  <object name="room11">
    <inherit name="editor_room" />
    <exit alias="south" to="room10">
      <inherit name="southdirection" />
    </exit>
    <exit alias="north" to="room12">
      <inherit name="northdirection" />
    </exit>
  </object>
  <object name="room12">
    <inherit name="editor_room" />
    <exit alias="south" to="room11">
      <inherit name="southdirection" />
    </exit>
    <exit alias="east" to="room13">
      <inherit name="eastdirection" />
    </exit>
  </object>
  <object name="room13">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 1
      game.slow = 6
    </enter>
    <exit alias="west" to="room12">
      <inherit name="westdirection" />
    </exit>
    <exit alias="east" to="room14">
      <inherit name="eastdirection" />
    </exit>
    <object name="rain ninja">
      <inherit name="editor_object" />
      <alias1>rain ninja</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">4</atk>
      <hp type="int">12</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">2</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room14">
    <inherit name="editor_room" />
    <enter type="script"><![CDATA[
      msg ("Player: Why are you so quiet? Are you really the heir?<br/>")
      TextFX_Typewriter ("Wind: This might feel like delusia to you but I am calling from afar, I am not a spirit, I am a real human, and these enemies will try everything to convince you that I am the bad guy", 100)
    ]]></enter>
    <exit alias="west" to="room13">
      <inherit name="westdirection" />
    </exit>
    <exit alias="south" to="room15">
      <inherit name="southdirection" />
    </exit>
    <exit alias="east" to="room16">
      <inherit name="eastdirection" />
    </exit>
    <exit alias="north" to="room17">
      <inherit name="northdirection" />
    </exit>
  </object>
  <object name="room15">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 4
      game.slow = 8
    </enter>
    <exit alias="north" to="room14">
      <inherit name="northdirection" />
    </exit>
    <object name="bridge troll">
      <inherit name="editor_object" />
      <alias1>bridge troll</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">6</atk>
      <hp type="int">20</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">2</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room16">
    <inherit name="editor_room" />
    <enter type="script"><![CDATA[
      msg ("The heir: Add me to inventory, so I can continue to communicate with you<br/>We need to avoid south, there is a giant troll there<br/>")
      TextFX_Typewriter ("Player: I dun really want to hear you talk, you are just ordering me to do this and that, I have nothing to gain", 100)
    ]]></enter>
    <exit alias="west" to="room14">
      <inherit name="westdirection" />
    </exit>
    <object name="The heir">
      <inherit name="editor_object" />
      <take />
      <look>Human with radiating skin</look>
      <feature_usegive />
      <use type="script"><![CDATA[
        msg ("The heir does not fight, you are his bodyguard<br/>Your defeat is the heir's defeat as well")
      ]]></use>
    </object>
  </object>
  <object name="room17">
    <inherit name="editor_room" />
    <exit alias="south" to="room14">
      <inherit name="southdirection" />
    </exit>
    <exit alias="north" to="room18">
      <inherit name="northdirection" />
    </exit>
    <exit alias="northeast" to="room19">
      <inherit name="northeastdirection" />
    </exit>
    <object name="rocks">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room18">
    <inherit name="editor_room" />
    <exit alias="south" to="room17">
      <inherit name="southdirection" />
    </exit>
    <object name="castle">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
    </object>
    <exit alias="west" to="room20">
      <inherit name="westdirection" />
    </exit>
    <exit alias="east" to="room21">
      <inherit name="eastdirection" />
    </exit>
    <object name="gunner">
      <inherit name="editor_object" />
      <alias1>gunner</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">2</atk>
      <hp type="int">24</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">1</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room19">
    <inherit name="editor_room" />
    <enter type="script">
      game.fast = 4
      game.slow = 12
    </enter>
    <exit alias="southwest" to="room17">
      <inherit name="southwestdirection" />
    </exit>
    <object name="giant snake">
      <inherit name="editor_object" />
      <alias1>giant snake</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">5</atk>
      <hp type="int">40</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">3</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
    <exit alias="east" to="room26">
      <inherit name="eastdirection" />
    </exit>
  </object>
  <object name="room20">
    <inherit name="editor_room" />
    <exit alias="east" to="room18">
      <inherit name="eastdirection" />
    </exit>
    <exit alias="northwest" to="room22">
      <inherit name="northwestdirection" />
    </exit>
    <object name="wall">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
    <object name="spearman">
      <inherit name="editor_object" />
      <alias1>spearman</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">1</atk>
      <hp type="int">36</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">4</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room21">
    <inherit name="editor_room" />
    <exit alias="west" to="room18">
      <inherit name="westdirection" />
    </exit>
    <exit alias="northeast" to="room23">
      <inherit name="northeastdirection" />
    </exit>
    <object name="wall1">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
    <object name="cannon girl">
      <inherit name="editor_object" />
      <alias1>cannon girl</alias1>
      <alias2 type="string"></alias2>
      <atk type="int">5</atk>
      <hp type="int">30</hp>
      <slot type="int">1</slot>
      <parrycount type="int">0</parrycount>
      <parryrequired type="int">1</parryrequired>
      <enemy type="string"></enemy>
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room22">
    <inherit name="editor_room" />
    <enter type="script">
      firsttime {
        CloneObjectAndMoveHere (bridge troll)
      }
    </enter>
    <exit alias="southeast" to="room20">
      <inherit name="southeastdirection" />
    </exit>
    <exit alias="northeast" to="room24">
      <inherit name="northeastdirection" />
    </exit>
    <object name="wall2">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
  </object>
  <object name="room23">
    <inherit name="editor_room" />
    <enter type="script">
      firsttime {
        CloneObjectAndMoveHere (gunner)
      }
    </enter>
    <exit alias="southwest" to="room21">
      <inherit name="southwestdirection" />
    </exit>
    <exit alias="northwest" to="room25">
      <inherit name="northwestdirection" />
    </exit>
    <object name="wall3">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
    <object name="vase">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
    </object>
  </object>
  <object name="room24">
    <inherit name="editor_room" />
    <enter type="script">
      firsttime {
        CloneObjectAndMoveHere (spearman, gunner)
      }
    </enter>
    <exit alias="southwest" to="room22">
      <inherit name="southwestdirection" />
    </exit>
    <exit alias="east" to="room28">
      <inherit name="eastdirection" />
    </exit>
    <object name="wall4">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
  </object>
  <object name="room25">
    <inherit name="editor_room" />
    <enter type="script">
      firsttime {
        CloneObjectAndMoveHere (gunner, gunner, gunner)
      }
    </enter>
    <exit alias="southeast" to="room23">
      <inherit name="southeastdirection" />
    </exit>
    <exit alias="west" to="room28">
      <inherit name="westdirection" />
    </exit>
    <object name="wall5">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
  </object>
  <object name="room26">
    <inherit name="editor_room" />
    <exit alias="west" to="room19">
      <inherit name="westdirection" />
    </exit>
    <exit alias="northeast" to="room27">
      <inherit name="northeastdirection" />
    </exit>
  </object>
  <object name="room27">
    <inherit name="editor_room" />
    <enter type="script">
      firsttime {
        CloneObjectAndMoveHere (giant snake)
      }
    </enter>
    <exit alias="southwest" to="room26">
      <inherit name="southwestdirection" />
    </exit>
  </object>
  <object name="room28">
    <inherit name="editor_room" />
    <enter type="script">
      firsttime {
        CloneObjectAndMoveHere (shaman monk, spearman, spearman, spearman, spearman)
      }
    </enter>
    <exit alias="west" to="room24">
      <inherit name="westdirection" />
    </exit>
    <exit alias="east" to="room25">
      <inherit name="eastdirection" />
    </exit>
    <exit alias="north" to="room29">
      <inherit name="northdirection" />
    </exit>
    <object name="wall8">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
  </object>
  <object name="room29">
    <inherit name="editor_room" />
    <exit alias="south" to="room28">
      <inherit name="southdirection" />
    </exit>
    <object name="wall9">
      <inherit name="editor_object" />
      <displayverbs type="stringlist" />
      <alias>wall</alias>
    </object>
  </object>
  <object name="room30">
    <inherit name="editor_room" />
  </object>
  <object name="room31">
    <inherit name="editor_room" />
  </object>
  <object name="room32">
    <inherit name="editor_room" />
  </object>
  <object name="room33">
    <inherit name="editor_room" />
  </object>
  <object name="room34">
    <inherit name="editor_room" />
  </object>
  <object name="room35">
    <inherit name="editor_room" />
  </object>
  <object name="room36">
    <inherit name="editor_room" />
  </object>
  <object name="room37">
    <inherit name="editor_room" />
  </object>
  <object name="room38">
    <inherit name="editor_room" />
  </object>
  <object name="room39">
    <inherit name="editor_room" />
  </object>
  <object name="room40">
    <inherit name="editor_room" />
  </object>
  <object name="room41">
    <inherit name="editor_room" />
  </object>
  <object name="room42">
    <inherit name="editor_room" />
  </object>
  <object name="room43">
    <inherit name="editor_room" />
  </object>
  <object name="room44">
    <inherit name="editor_room" />
  </object>
  <object name="room45">
    <inherit name="editor_room" />
  </object>
  <object name="room46">
    <inherit name="editor_room" />
  </object>
  <object name="room47">
    <inherit name="editor_room" />
  </object>
  <object name="room48">
    <inherit name="editor_room" />
  </object>
  <object name="room49">
    <inherit name="editor_room" />
  </object>
  <object name="room50">
    <inherit name="editor_room" />
  </object>
  <object name="room51">
    <inherit name="editor_room" />
  </object>
  <object name="room52">
    <inherit name="editor_room" />
  </object>
  <object name="room53">
    <inherit name="editor_room" />
  </object>
  <object name="room54">
    <inherit name="editor_room" />
  </object>
  <object name="room55">
    <inherit name="editor_room" />
  </object>
  <object name="room56">
    <inherit name="editor_room" />
  </object>
  <object name="room57">
    <inherit name="editor_room" />
  </object>
  <object name="room58">
    <inherit name="editor_room" />
  </object>
  <object name="room59">
    <inherit name="editor_room" />
  </object>
  <object name="room60">
    <inherit name="editor_room" />
  </object>
  <object name="room61">
    <inherit name="editor_room" />
  </object>
  <object name="room62">
    <inherit name="editor_room" />
  </object>
  <object name="room63">
    <inherit name="editor_room" />
  </object>
  <object name="room64">
    <inherit name="editor_room" />
  </object>
  <object name="room65">
    <inherit name="editor_room" />
  </object>
  <object name="room66">
    <inherit name="editor_room" />
  </object>
  <object name="room67">
    <inherit name="editor_room" />
  </object>
  <object name="room68">
    <inherit name="editor_room" />
  </object>
  <object name="room69">
    <inherit name="editor_room" />
  </object>
  <object name="room70">
    <inherit name="editor_room" />
  </object>
  <object name="room71">
    <inherit name="editor_room" />
  </object>
  <object name="room72">
    <inherit name="editor_room" />
  </object>
  <object name="room73">
    <inherit name="editor_room" />
  </object>
  <object name="room74">
    <inherit name="editor_room" />
  </object>
  <object name="room75">
    <inherit name="editor_room" />
  </object>
  <object name="room76">
    <inherit name="editor_room" />
  </object>
  <object name="room77">
    <inherit name="editor_room" />
  </object>
  <object name="room78">
    <inherit name="editor_room" />
  </object>
  <object name="room79">
    <inherit name="editor_room" />
  </object>
  <object name="room80">
    <inherit name="editor_room" />
  </object>
  <object name="room81">
    <inherit name="editor_room" />
  </object>
  <object name="room82">
    <inherit name="editor_room" />
  </object>
  <object name="room83">
    <inherit name="editor_room" />
  </object>
  <object name="room84">
    <inherit name="editor_room" />
  </object>
  <object name="room85">
    <inherit name="editor_room" />
  </object>
  <object name="room86">
    <inherit name="editor_room" />
  </object>
  <object name="room87">
    <inherit name="editor_room" />
  </object>
  <object name="room88">
    <inherit name="editor_room" />
  </object>
  <object name="room89">
    <inherit name="editor_room" />
  </object>
  <object name="room90">
    <inherit name="editor_room" />
  </object>
  <object name="room91">
    <inherit name="editor_room" />
  </object>
  <object name="room92">
    <inherit name="editor_room" />
  </object>
  <object name="room93">
    <inherit name="editor_room" />
  </object>
  <object name="room94">
    <inherit name="editor_room" />
  </object>
  <object name="room95">
    <inherit name="editor_room" />
  </object>
  <object name="room96">
    <inherit name="editor_room" />
  </object>
  <object name="room97">
    <inherit name="editor_room" />
  </object>
  <object name="room98">
    <inherit name="editor_room" />
  </object>
  <object name="room99">
    <inherit name="editor_room" />
  </object>
  <verb>
    <property>gain1atk</property>
    <pattern>gain 1 atk</pattern>
    <defaultexpression>"You can't gain 1 atk " + object.article + "."</defaultexpression>
  </verb>
  <verb>
    <property>gain1parryatk</property>
    <pattern>gain 1 parry atk</pattern>
    <defaultexpression>"You can't gain 1 parry atk " + object.article + "."</defaultexpression>
  </verb>
  <verb>
    <property>healtomaxhp</property>
    <pattern>heal to max hp</pattern>
    <defaultexpression>"You can't heal to max hp " + object.article + "."</defaultexpression>
  </verb>
  <verb>
    <property>gain1maxhp</property>
    <pattern>gain 1 max hp</pattern>
    <defaultexpression>"You can't gain 1 max hp " + object.article + "."</defaultexpression>
  </verb>
  <verb>
    <property>absorb</property>
    <pattern>absorb</pattern>
    <defaultexpression>"You can't absorb " + object.article + "."</defaultexpression>
  </verb>
  <function name="attack">
    foreach (enemy, GetDirectChildren (game.pov.parent)) {
      if (HasAttribute(enemy, "enemy")) {
        if (enemy.slot = skill.slot) {
          msg ("You parry the enemy's attack")
          enemy.parrycount = enemy.parrycount+1
          if (enemy.parrycount=enemy.parryrequired) {
            // reset parrycount
            enemy.parrycount = 0
            // parry damage
            msg ("You parry stab the opponent")
            enemy.hp = enemy.hp-player.parryatk
            msg ("Enemy hp: "+enemy.hp)
          }
        }
        else {
          msg ("You deal "+player.atk+" damage")
          msg (enemy.name+ " deal "+enemy.atk+" damage")
          player.hp = player.hp-enemy.atk
          enemy.hp = enemy.hp-player.atk
          msg ("Player hp: "+player.hp)
          msg ("Enemy hp: "+enemy.hp)
        }
      }
    }
  </function>
  <function name="change skill" parameters="enemy">
    if (enemy.alias1="monkey king" or enemy.alias1="rain ninja") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " katana slash"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " viper blade"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " thunderous stomp"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " winning cheer"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
    if (enemy.alias1="misty geisha") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " umbrella stab"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " super blade"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " dangerous kiss"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " fountain splash"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
    if (enemy.alias1="grey tiger statue"or enemy.alias1="pearl tiger statue" or enemy.alias1="spearman") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " superior claw"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " fantastic dance"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " baby kick"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " dancing spear"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
    if (enemy.alias1="lustrous lotus"or enemy.alias1="claiming wolf"or enemy.alias1="shaman monk"or enemy.alias1="bridge troll") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " berserker move"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " serperior axe"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " dangerous gauntlet"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " super fist"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
    if (enemy.alias1="giant snake") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " slithering bite"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " outburst combo"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " toxic fangs"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " incredible leap"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
    if (enemy.alias1="gunner") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " rapid bullets"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " thunder strike"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " running rally"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " snipe shot"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
    if (enemy.alias1="cannon girl") {
      rng = GetRandomInt(1,4)
      if (rng=1) {
        enemy.alias2 = " dystopian rain"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=2) {
        enemy.alias2 = " silver bullet"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=3) {
        enemy.alias2 = " explosive barrage"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
      if (rng=4) {
        enemy.alias2 = " the incinerator"
        enemy.alias = enemy.alias1+enemy.alias2
        enemy.slot = rng
      }
    }
  </function>
  <function name="basic player skill">
    skill.slot = skill.slot+1
    if (skill.slot=5) {
      skill.slot = 1
    }
    if (skill.slot=1) {
      skill.alias = "diamond slash"
      if (skill.absorb from shaman monk = true) {
        skill.alias = "iron fist"
      }
    }
    if (skill.slot=2) {
      skill.alias = "triple kill"
      if (skill.absorb from shaman monk = true) {
        skill.alias = "terrible trap"
      }
    }
    if (skill.slot=3) {
      skill.alias = "standard slash"
    }
    if (skill.slot=4) {
      skill.alias = "hurricane dash"
    }
  </function>
  <function name="shaman monk skill">
    skill.slot = skill.slot+1
    if (skill.slot=5) {
      skill.slot = 1
    }
    if (skill.slot=1) {
      skill.alias = "iron fist"
    }
    if (skill.slot=2) {
      skill.alias = "terrible trap"
    }
    if (skill.slot=3) {
      skill.alias = "string chain"
    }
    if (skill.slot=4) {
      skill.alias = "one kick"
    }
  </function>
  <timer name="random battle countdown">
    <interval>9</interval>
    <enabled />
    <script><![CDATA[
      DisableTimer (random battle countdown)
      game.enemycount = 0
      attack
      foreach (enemy, GetDirectChildren (game.pov.parent)) {
        if (HasAttribute(enemy, "enemy")) {
          change skill (enemy)
          game.enemycount = game.enemycount+1
        }
      }
      rngtime = GetRandomInt(game.fast,game.slow)
      SetTimerInterval (random battle countdown, rngtime)
      if (game.enemycount>0) {
        msg ("Next attack in "+rngtime+" seconds")
        EnableTimer (random battle countdown)
      }
    ]]></script>
  </timer>
  <timer name="killed">
    <interval>1</interval>
    <enabled />
    <script><![CDATA[
      foreach (enemy, GetDirectChildren (game.pov.parent)) {
        if (HasAttribute(enemy, "enemy")) {
          if (enemy.hp<1) {
            CloneObjectAndMoveHere (dragon pill)
            msg (enemy.alias1+" is slained")
            RemoveObject (enemy)
            msg ("Your hp is restored")
            player.hp = player.maxhp
            msg ("Player hp: "+player.hp)
            if (enemy.name="shaman monk") {
              UnlockExit (room10 to room11)
              MakeObjectVisible (absorb from shaman monk)
            }
          }
        }
      }
      if (player.hp<1) {
        msg ("You are defeated")
        finish
      }
      // check timer function=> msg ("1 sec")
    ]]></script>
  </timer>
</asl>

If you really want to take attributes from the last enemy in the room, you could do something like:

DisableTimer (random battle countdown)
game.enemycount = 0
attack
foreach (enemy, GetDirectChildren (game.pov.parent)) {
  if (HasAttribute(enemy, "enemy")) {
    change skill (enemy)
    game.enemycount = game.enemycount+1
    fast = enemy.fast
    slow = enemy.slow
  }
}
if (game.enemycount>0) {
  rngtime = GetRandomInt(fast, slow)
  SetTimerInterval (random battle countdown, rngtime)
  msg ("Next attack in "+rngtime+" seconds")
  EnableTimer (random battle countdown)
}

This changes the value of the local variables fast and slow for each enemy in the room, so that by the time the loop ends they are set to the last values seen. (Note that I moved the check for the enemy count being more than zero; because if there are no enemies you don't have variables to base the speed on - and in this case, it seems more logical not to change the interval at all)

In this case, it will always be the last enemy that matters - so the one nearest the bottom of the object list in the editor, or the newest clone. This seems like an odd behaviour to me; as it means that one enemy determines the speed of all the others. In other games, it's more common to use the average of the enemies in the room:

totalfast = 0
totalslow = 0
foreach (enemy, GetDirectChildren (game.pov.parent)) {
  if (HasAttribute(enemy, "enemy")) {
    change skill (enemy)
    game.enemycount = game.enemycount+1
    totalfast = totalfast + enemy.fast
    totalslow = totalslow + enemy.slow
  }
}
if (game.enemycount>0) {
  rngtime = GetRandomInt(totalfast/game.enemycount, totalslow/game.enemycount)

or the highest (or lowest) values:

fast = 1
slow = 1
foreach (enemy, GetDirectChildren (game.pov.parent)) {
  if (HasAttribute(enemy, "enemy")) {
    change skill (enemy)
    game.enemycount = game.enemycount+1
    if (enemy.fast > fast) fast = enemy.fast
    if (enemy.slow > slow) slow = enemy.slow
  }
}
if (game.enemycount>0) {
  rngtime = GetRandomInt(fast, slow)

(this example using the values of the enemy with the highest values; but you could do the same for the lowest, just changing the initial value to a high one that all enemies will be lower than)

Hope that helps.


The second code, average attack timer interval is a lot more gameplay balance
Also, I shifted the check to when there are enemies as you recommended
I love the short code, it is easier to understand things this way

You made a typo, it should be

    totalfast = totalfast+enemy.fast
    totalslow = totalslow+enemy.slow

Oh yes :)
Easy to make careless mistakes when I'm typing from my phone on the train :)


Log in to post a reply.

Support

Forums