ERROR IN MOBS OF FOG

    Share

    lordeze

    Posts : 97
    Join date : 2013-05-07

    ERROR IN MOBS OF FOG

    Post  lordeze on 10th May 2014, 06:46

    I've seen a quest after l2jserver in chronic H5 trying to simulate what the mobs
    multiply grilling in areas like Forgo of god in the first rooms or the Low
    mobs that multiply has this property do the grilling them are:
    Scarlet Stakato Noble
    Scarlet Stakato walker
    Scarlet Stakato sodier
    Necromancer of Destruction
    Arimanes of destruction
    Ashuras of destruction
    drake magma

    are in total 7 kinds of bugs with this carecteristica is not necessary to apply all the characteristics
    only 5 very important
    Scarlet Stakato Noble
    Necromancer of Destruction
    Arimanes of destruction
    Ashuras of destruction
    drake magma

    My idea is to take the quest repertirla 5 times a per class so get to kill any bugs
    way to roast the amounts of bugs that class at least this works well for off multiply

    Code:
    Copyright (C) 2004-2013 L2J DataPack
    3    *
    4    * This file is part of L2J DataPack.
    5    *
    6    * L2J DataPack is free software: you can redistribute it and/or modify
    7    * it under the terms of the GNU General Public License as published by
    8    * the Free Software Foundation, either version 3 of the License, or
    9    * (at your option) any later version.
    10    *
    11    * L2J DataPack is distributed in the hope that it will be useful,
    12    * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    14    * General Public License for more details.
    15    *
    16    * You should have received a copy of the GNU General Public License
    17    * along with this program. If not, see <http://www.gnu.org/licenses/>.
    18    */
    19   package ai.npc.ForgeOfTheGods;
    20   
    21   import ai.npc.AbstractNpcAI;
    22   
    23   import com.l2jserver.gameserver.ai.CtrlIntention;
    24   import com.l2jserver.gameserver.model.actor.L2Attackable;
    25   import com.l2jserver.gameserver.model.actor.L2Npc;
    26   import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
    27   
    28   /**
    29    * Forge of the Gods AI
    30    * @author nonom, malyelfik
    31    */
    32   public class ForgeOfTheGods extends AbstractNpcAI
    33   {
    34           // NPCs
    35           private static final int[] FOG_MOBS =
    36           {
    37                   22634, // Scarlet Stakato Worker
    38                   22635, // Scarlet Stakato Soldier
    39                   22636, // Scarlet Stakato Noble
    40                   22637, // Tepra Scorpion
    41                   22638, // Tepra Scarab
    42                   22639, // Assassin Beetle
    43                   22640, // Mercenary of Destruction
    44                   22641, // Knight of Destruction
    45                   22642, // Lavastone Golem
    46                   22643, // Magma Golem
    47                   22644, // Arimanes of Destruction
    48                   22645, // Balor of Destruction
    49                   22646, // Ashuras of Destruction
    50                   22647, // Lavasillisk
    51                   22648, // Blazing Ifrit
    52                   22649, // Magma Drake
    53           };
    54        
    55           private static final int[] LAVASAURUSES =
    56           {
    57                   18799, // Newborn Lavasaurus
    58                   18800, // Fledgling Lavasaurus
    59                   18801, // Adult Lavasaurus
    60                   18802, // Elderly Lavasaurus
    61                   18803, // Ancient Lavasaurus
    62           };
    63        
    64           private static final int REFRESH = 15;
    65        
    66           private static final int MOBCOUNT_BONUS_MIN = 3;
    67        
    68           private static final int BONUS_UPPER_LV01 = 5;
    69           private static final int BONUS_UPPER_LV02 = 10;
    70           private static final int BONUS_UPPER_LV03 = 15;
    71           private static final int BONUS_UPPER_LV04 = 20;
    72           private static final int BONUS_UPPER_LV05 = 35;
    73        
    74           private static final int BONUS_LOWER_LV01 = 5;
    75           private static final int BONUS_LOWER_LV02 = 10;
    76           private static final int BONUS_LOWER_LV03 = 15;
    77        
    78           private static final int FORGE_BONUS01 = 20;
    79           private static final int FORGE_BONUS02 = 40;
    80        
    81           private static int _npcCount = 0;
    82        
    83           // private static int _npcsAlive = 0; TODO: Require zone spawn support
    84        
    85           @Override
    86           public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
    87           {
    88                   switch (event)
    89                   {
    90                           case "suicide":
    91                                   if (npc != null)
    92                                   {
    93                                           npc.doDie(null);
    94                                   }
    95                                   break;
    96                           case "refresh":
    97                                   _npcCount = 0;
    98                                   break;
    99                   }
    100                   return null;
    101           }
    102        
    103           @Override
    104           public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
    105           {
    106                   int rand = getRandom(100);
    107                   L2Npc mob = null;
    108                   _npcCount++;
    109                
    110                   // For monsters at Forge of the Gods - Lower level
    111                   if (npc.getSpawn().getLocz() < -5000) // && (_npcsAlive < 48))
    112                   {
    113                           if ((_npcCount > BONUS_LOWER_LV03) && (rand <= FORGE_BONUS02))
    114                           {
    115                                   mob = addSpawn(LAVASAURUSES[4], npc, true);
    116                           }
    117                           else if (_npcCount > BONUS_LOWER_LV02)
    118                           {
    119                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[4], LAVASAURUSES[3]);
    120                           }
    121                           else if (_npcCount > BONUS_LOWER_LV01)
    122                           {
    123                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[3], LAVASAURUSES[2]);
    124                           }
    125                           else if (_npcCount >= MOBCOUNT_BONUS_MIN)
    126                           {
    127                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[2], LAVASAURUSES[1]);
    128                           }
    129                   }
    130                   else
    131                   // if (_npcsAlive < 32)
    132                   {
    133                           if ((_npcCount > BONUS_UPPER_LV05) && (rand <= FORGE_BONUS02))
    134                           {
    135                                   mob = addSpawn(LAVASAURUSES[1], npc, true);
    136                           }
    137                           else if (_npcCount > BONUS_UPPER_LV04)
    138                           {
    139                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[4], LAVASAURUSES[3]);
    140                           }
    141                           else if (_npcCount > BONUS_UPPER_LV03)
    142                           {
    143                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[3], LAVASAURUSES[2]);
    144                           }
    145                           else if (_npcCount > BONUS_UPPER_LV02)
    146                           {
    147                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[2], LAVASAURUSES[1]);
    148                           }
    149                           else if (_npcCount > BONUS_UPPER_LV01)
    150                           {
    151                                   mob = spawnLavasaurus(npc, rand, LAVASAURUSES[1], LAVASAURUSES[0]);
    152                           }
    153                           else if ((_npcCount >= MOBCOUNT_BONUS_MIN) && (rand <= FORGE_BONUS01))
    154                           {
    155                                   mob = addSpawn(LAVASAURUSES[0], npc, true);
    156                           }
    157                   }
    158                   if (mob != null)
    159                   {
    160                           ((L2Attackable) mob).addDamageHate(killer, 0, 9999);
    161                           mob.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK);
    162                   }
    163                   return super.onKill(npc, killer, isSummon);
    164           }
    165        
    166           @Override
    167           public final String onSpawn(L2Npc npc)
    168           {
    169                   startQuestTimer("suicide", 60000, npc, null);
    170                   return super.onSpawn(npc);
    171           }
    172        
    173           private L2Npc spawnLavasaurus(L2Npc npc, int rand, int... mobs)
    174           {
    175                   if (mobs.length < 2)
    176                   {
    177                           return null;
    178                   }
    179                
    180                   L2Npc mob = null;
    181                   if (rand <= FORGE_BONUS01)
    182                   {
    183                           mob = addSpawn(mobs[0], npc, true);
    184                   }
    185                   else if (rand <= FORGE_BONUS02)
    186                   {
    187                           mob = addSpawn(mobs[1], npc, true);
    188                   }
    189                   return mob;
    190           }
    191        
    192           public ForgeOfTheGods(String name, String descr)
    193           {
    194                   super(name, descr);
    195                   addKillId(FOG_MOBS);
    196                   addSpawnId(LAVASAURUSES);
    197                
    198                   startQuestTimer("refresh", REFRESH * 1000, null, null, true);
    199           }
    200        
    201           public static void main(String[] args)
    202           {
    203                   new ForgeOfTheGods(ForgeOfTheGods.class.getSimpleName(), "ai/npc");
    204           }
    205   }

      Current date/time is 16th August 2017, 18:31