Ищу инфу о беноме во время осады.

jonius

Путник
Пользователь
Сообщения
573
Розыгрыши
0
Решения
1
Репутация
341
Реакции
330
Баллы
0
Привет всем.
Нужна хоть какая-то инфа о работе этого чуда РБ. А именно, его корректное аи как он вылазит на осаде какие статы, рефлекты и т.д у него должны быть.
Координаты спавна при осаде и т.д
Инфы в инете толком нет никакой
в подвале замка есть НПС, котрый телепортирует к боссу. Выйти оттуда можно только после убийства РБ - появляется телепортер.
На танке эта скотина сидеть отказывается, хаотичным образом выбирает игроков для атаки и фигачит по 7к дмг.
Если его не убить до осады, он телепортнется в тронный зал и начнет лупить всех кто под руку подвернется. Поскольку там идет респ как раз-таки защитников, то оставлять его в живых - себе дороже.
Структура Замка Руна
За 24 часа до начала осады в подземелье Замка Руна появляется РБ Беном. Защищающий клан может телепортироваться в подземелье и победить рейд-босса до начала осады.
Если защитники замка не успеют победить босса до начала осады, Беном появится рядом с троном внутри замка, и 2 Сторожевые Башни будут уничтожены в середине осады. Беном будет атаковать и защитников и нападающих.
 

Фреяскрипты же есть в шаре, 29054 ид его.
 
Фреяскрипты же есть в шаре, 29054 ид его.
ID его я знаю, меня интересует
его аи, как он вылазит на осаде какие статы, рефлекты и т.д у него должны быть.
Координаты спавна при осаде и т.д
З.ы. Еще видел где то написано было что он в разы сильнее чем тот что в подвале.
 
Последнее редактирование:
Беном появляется а замке Рун за 24 часа до начала осады. Защитники могут телепортироваться в подземелье и убить монстра до начала осады Если защитники не завалят Бенома до начала осады, он появится в тронном зале, когда как минимум два кристалла будут уничтожены. Беном будет атаковать обе стороны - защитников и нападающих. Теперь что касается реализации евента: - Евент работает только если Рун имеет своего хозяина (не под управлением НПС). - За сутки до осады Руна спаунится телепорт в подземелье Бенома, все члены клана, владеющего Руном и находящиеся в игре, получат сообщение. - Портануться к Беному могут ТОЛЬКО члены клана, владеющего замком. - С момента, как первый из защитников портанётся к Беному и до его спауна отводится 10 минут. Все, кто не успеет портануться к Беному до этого срока, не смогут туда попасть. - В подземелье Беном не аггр, на его убийство отводится 6ть часов, потом он исчезнет. - Если Беном не был побеждён защитниками, то он может появиться во время осады. Это произойдёт после уничтожения второго кристалла ( Life Control Tower). - Во время осады Беном аггр и будет атаковать всех подряд. - После окончания осады Беном исчезнет (если не будет убит во время осады).
 
Беном появляется а замке Рун за 24 часа до начала осады. Защитники могут телепортироваться в подземелье и убить монстра до начала осады Если защитники не завалят Бенома до начала осады, он появится в тронном зале, когда как минимум два кристалла будут уничтожены. Беном будет атаковать обе стороны - защитников и нападающих. Теперь что касается реализации евента: - Евент работает только если Рун имеет своего хозяина (не под управлением НПС). - За сутки до осады Руна спаунится телепорт в подземелье Бенома, все члены клана, владеющего Руном и находящиеся в игре, получат сообщение. - Портануться к Беному могут ТОЛЬКО члены клана, владеющего замком. - С момента, как первый из защитников портанётся к Беному и до его спауна отводится 10 минут. Все, кто не успеет портануться к Беному до этого срока, не смогут туда попасть. - В подземелье Беном не аггр, на его убийство отводится 6ть часов, потом он исчезнет. - Если Беном не был побеждён защитниками, то он может появиться во время осады. Это произойдёт после уничтожения второго кристалла ( Life Control Tower). - Во время осады Беном аггр и будет атаковать всех подряд. - После окончания осады Беном исчезнет (если не будет убит во время осады).
Это я уже все читал и знаю
А именно, его корректное аи как он вылазит на осаде какие статы, рефлекты и т.д у него должны быть.
Координаты спавна при осаде и т.д
 
Ну и зачем скрытный, всем же интересно)
 
Аи хф в шару бы что ли. Днем посмотрю аи если не разберетесь.
 
Поехали:
Код:
npc_begin    boss    29054    [benom]    category={}    level=75    exp=804225364    ex_crt_effect=1    unique=0    s_npc_prop_hp_rate=1    race=demonic    sex=male    skill_list={@s_npc_prop_race_demonic;@s_npc_prop_hp_lv_p0;@s_npc_prop_mp_lv_p0;@s_npc_prop_pa_lv_p0;@s_npc_prop_ma_lv_p0;@s_npc_prop_pd_lv_p0;@s_npc_prop_md_lv_p0;@s_npc_prop_armor_type_n;@s_npc_prop_weapon_type_dual;@s_full_magic_defence}    slot_chest=[]    slot_rhand=[benom_sword]    slot_lhand=[benom_sword]    collision_radius={20;20}    collision_height={56;56}    hit_time_factor=0.43    hit_time_factor_skill=-1    ground_high={220;0;0}    ground_low={79;0;0}    str=60    int=76    dex=73    wit=70    con=57    men=80    org_hp=568382.4    org_hp_regen=357    org_mp=4071.06    org_mp_regen=8.1    base_attack_type=dual    base_attack_range=40    base_damage_range={0;0;80;120}    base_rand_dam=30    base_physical_attack=4510    base_critical=4    physical_hit_modify=4.75    base_attack_speed=253    base_reuse_delay=0    base_magic_attack=3279    base_defend=2554    base_magic_defend=467.22    base_attribute_attack={none;0}    base_attribute_defend={20;20;20;20;-13;53;0}    physical_avoid_modify=-18    shield_defense_rate=0    shield_defense=0    safe_height=100    soulshot_count=0    spiritshot_count=0    clan={}    ignore_clan_list={}    clan_help_range=0    undying=0    can_be_attacked=1    corpse_time=7    no_sleep_mode=0    agro_range=1000    passable_door=0    can_move=1    flying=0    has_summoner=0    targetable=1    show_name_tag=1    npc_ai={[benom];{[PhysicalSpecial]=@s_venom_strike1};{[DDMagic]=@s_venom_sonic_storm1};{[SelfRangeCancel_a1]=@s_venom_teleport_pc1};{[SelfRangeCancel_a2]=@s_venom_range_teleport_pc1}}    event_flag={1}    unsowing=1    private_respawn_log=0    acquire_exp_rate=444.435673313752    acquire_sp=1757872    acquire_rp=5288    corpse_make_list={}    additional_make_list={}    additional_make_multi_list={{{{[sealed_imperial_crusader_armor];1;1;2.619};{[sealed_imperial_crusader_gaiters];1;1;4.1798};{[sealed_imperial_crusader_armor_part];8;22;66.4645};{[sealed_imperial_crusader_gaiters_pattern];24;72;26.7367}};68.2692};{{{[forgotten_blade];1;1;2.0694};{[heavens_divider];1;1;2.0694};{[forgotten_blade_edge];8;22;72.7618};{[heavens_divider_edge];24;72;23.0994}};37.9772}}    ex_item_drop_list={{{{[sb_transform_venom];1;1;100}};1}}    fake_class_id=-1    npc_end
Босс беном, появляющийся в подвале.

Код:
class 0 ai_runeC_Benom : raid_boss_alone
{
parameter:
  int     PhysicalSpecial = 458752001;
  int     DDMagic = 458752001;
  int     SelfRangeCancel_a1 = 458752001;
  int     SelfRangeCancel_a2 = 458752001;

handler:
  EventHandler NO_DESIRE()
  {
    myself::AddDoNothingDesire( 5, 5 );
  }

  EventHandler CREATED()
  {
    myself::AddDoNothingDesire( 5, 5 );
    myself::Shout( gg::MakeFString( 1010623, "", "", "", "", "" ) );
    myself.i_quest0 = 0;
    myself.i_quest1 = 0;
    myself.i_ai0 = 0;
    myself.i_ai1 = gg::FloatToInt( myself.sm.x );
    myself.i_ai2 = gg::FloatToInt( myself.sm.y );
    myself.i_ai3 = gg::FloatToInt( myself.sm.z );
  }

  EventHandler TIMER_FIRED_EX( timer_id )
  {
    if( timer_id == 1001 )
    {
      myself.i_ai1 = gg::FloatToInt( myself.sm.x );
      myself.i_ai2 = gg::FloatToInt( myself.sm.y );
      myself.i_ai3 = gg::FloatToInt( myself.sm.z );
    }
    if( timer_id == 1002 )
    {
      if( myself::InMyTerritory( myself.sm ) == 0 && gg::Rand( 2 ) < 1 &&
          myself.p_state != 3 )
      {
        myself::RemoveAllAttackDesire();
        myself::InstantTeleport( myself.sm, 11563, -49152, -537 );
        myself::AddMoveToDesire( 11563, -49152, -537, 1000000 );
      }
      if( gg::Rand( 5 ) < 1 )
      {
        myself::RandomizeAttackDesire();
      }
      myself::AddTimerEx( 1002, 60 * 2 * 1000 );
    }
  }

  EventHandler ATTACKED( attacker, damage )
  {
    if( attacker.is_pc != @FALSE ||
        myself::IsInCategory( @summon_npc_group, attacker.npc_class_id ) )
    {
      myself::AddAttackDesire( attacker, @AMT_MOVE_TO_TARGET,
                               damage / myself.sm.max_hp / 0.050000 * 2000 );
    }
    if( gg::Rand( Rand * 25 ) < 1 && myself.i_ai0 == 1 )
    {
      myself::AddUseSkillDesire( attacker, SelfRangeCancel_a1, @ST_ATTACK,
                                 @AMT_MOVE_TO_TARGET, 1000000 );
    }
    if( myself.sm.hp < myself.sm.max_hp / 3 && gg::Rand( Rand * 25 ) < 1 &&
        myself.i_ai0 == 1 )
    {
      myself::AddUseSkillDesire( attacker, SelfRangeCancel_a2, @ST_ATTACK,
                                 @AMT_MOVE_TO_TARGET, 1000000 );
    }
    if( myself::DistFromMe( attacker ) > 300 && gg::Rand( Rand * 10 ) < 1 )
    {
      if( myself::Skill_GetConsumeMP( DDMagic ) < myself.sm.mp &&
          myself::Skill_GetConsumeHP( DDMagic ) < myself.sm.hp &&
          myself::Skill_InReuseDelay( DDMagic ) == @FALSE )
      {
        myself::AddUseSkillDesire( attacker, DDMagic, @ST_ATTACK,
                                   @AMT_MOVE_TO_TARGET, 1000000 );
      }
    }
    if( gg::Rand( Rand * 10 ) < 1 )
    {
      if( myself::Skill_GetConsumeMP( PhysicalSpecial ) < myself.sm.mp &&
          myself::Skill_GetConsumeHP( PhysicalSpecial ) < myself.sm.hp &&
          myself::Skill_InReuseDelay( PhysicalSpecial ) == @FALSE )
      {
        myself::AddUseSkillDesire( attacker, PhysicalSpecial, @ST_ATTACK,
                                   @AMT_MOVE_TO_TARGET, 1000000 );
      }
    }
  }

  EventHandler SEE_CREATURE( creature, i0, i1, c0 )
  {
    if( creature.is_pc == @FALSE &&
        myself::IsInCategory( @summon_npc_group, creature.npc_class_id ) == @FALSE )
    {
      return;
    }
    if( myself::GetLifeTime() > 0 && myself.i_quest1 == 1 )
    {
      myself::AddAttackDesire( creature, @AMT_MOVE_TO_TARGET, 200 );
    }
    if( myself.i_ai0 == 1 && creature.is_pc == @TRUE )
    {
      if( myself.i_quest0 < 10 && gg::Rand( 3 ) < 1 )
      {
        if( myself.i_quest0 == 0 )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 1 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 0 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 2 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 1 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 3 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 2 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 4 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 3 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 5 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 4 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 6 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 5 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 7 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 6 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 8 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 7 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
        else if( myself.i_quest0 == 9 &&
                 gg::GetCreatureFromID( myself.int_list::Get( 8 ) ) != creature )
        {
          myself.int_list::Add( creature.id );
          myself.i_quest0 = myself.i_quest0 + 1;
        }
      }
    }
  }

  EventHandler USE_SKILL_FINISHED( target, skill_name_id, i0, i1, i2, i3, i4, i5 )
  {
    if( skill_name_id == @s_zaken_self_tel && myself.i_ai0 == 1 )
    {
      myself::InstantTeleport( myself.sm, myself.i_ai1, myself.i_ai2,
                               myself.i_ai3 );
      myself::RemoveAllAttackDesire();
    }
    else if( skill_name_id == SelfRangeCancel_a1 )
    {
      i1 = gg::Rand( 11 ) + 1;
      if( i1 == 1 )
      {
        i2 = 12860;
        i3 = -49158;
        i4 = 976;
        i2 = i2 + gg::Rand( 650 );
        i3 = i3 + gg::Rand( 650 );
      }
      else if( i1 == 2 )
      {
        i2 = 14878;
        i3 = -51339;
        i4 = 1024;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 3 )
      {
        i2 = 15674;
        i3 = -49970;
        i4 = 864;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 4 )
      {
        i2 = 15696;
        i3 = -48326;
        i4 = 864;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 5 )
      {
        i2 = 14873;
        i3 = -46956;
        i4 = 1024;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 6 )
      {
        i2 = 12157;
        i3 = -49135;
        i4 = -1088;
        i2 = i2 + gg::Rand( 650 );
        i3 = i3 + gg::Rand( 650 );
      }
      else if( i1 == 7 )
      {
        i2 = 12875;
        i3 = -46392;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 8 )
      {
        i2 = 14087;
        i3 = -46706;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 9 )
      {
        i2 = 14086;
        i3 = -51593;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 10 )
      {
        i2 = 12864;
        i3 = -51898;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 11 )
      {
        i2 = 15538;
        i3 = -49153;
        i4 = -1056;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 12 )
      {
        i2 = 17001;
        i3 = -49149;
        i4 = -1064;
        i2 = i2 + gg::Rand( 650 );
        i3 = i3 + gg::Rand( 650 );
      }
      myself::InstantTeleport( target, i2, i3, i4 );
      myself::RemoveAttackDesire( target.id );
    }
    else if( skill_name_id == SelfRangeCancel_a2 )
    {
      i1 = gg::Rand( 11 ) + 1;
      if( i1 == 1 )
      {
        i2 = 12860;
        i3 = -49158;
        i4 = 976;
        i2 = i2 + gg::Rand( 650 );
        i3 = i3 + gg::Rand( 650 );
      }
      else if( i1 == 2 )
      {
        i2 = 14878;
        i3 = -51339;
        i4 = 1024;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 3 )
      {
        i2 = 15674;
        i3 = -49970;
        i4 = 864;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 4 )
      {
        i2 = 15696;
        i3 = -48326;
        i4 = 864;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 5 )
      {
        i2 = 14873;
        i3 = -46956;
        i4 = 1024;
        i2 = i2 + gg::Rand( 100 );
        i3 = i3 + gg::Rand( 100 );
      }
      else if( i1 == 6 )
      {
        i2 = 12157;
        i3 = -49135;
        i4 = -1088;
        i2 = i2 + gg::Rand( 650 );
        i3 = i3 + gg::Rand( 650 );
      }
      else if( i1 == 7 )
      {
        i2 = 12875;
        i3 = -46392;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 8 )
      {
        i2 = 14087;
        i3 = -46706;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 9 )
      {
        i2 = 14086;
        i3 = -51593;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 10 )
      {
        i2 = 12864;
        i3 = -51898;
        i4 = -288;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 11 )
      {
        i2 = 15538;
        i3 = -49153;
        i4 = -1056;
        i2 = i2 + gg::Rand( 200 );
        i3 = i3 + gg::Rand( 200 );
      }
      else if( i1 == 12 )
      {
        i2 = 17001;
        i3 = -49149;
        i4 = -1064;
        i2 = i2 + gg::Rand( 650 );
        i3 = i3 + gg::Rand( 650 );
      }
      myself::InstantTeleport( target, i2, i3, i4 );
      myself::RemoveAttackDesire( target.id );
      for( i5 = 0; i5 < myself.int_list::GetSize(); i5 = i5 + 1 )
      {
        myself.c_quest0 = gg::GetCreatureFromID( myself.int_list::Get( i5 ) );
        if( myself.i_quest0 > 0 && myself.c_quest0 != target )
        {
          if( ( myself.c_quest0.x - target.x ) * ( myself.c_quest0.x - target.x ) + ( myself.c_quest0.y - target.y ) * ( myself.c_quest0.y - target.y ) > 250 * 250 )
          {
            i0 = 1;
          }
          else
          {
            i0 = 0;
          }
          if( i0 == 0 )
          {
            i1 = gg::Rand( 11 ) + 1;
            if( i1 == 1 )
            {
              i2 = 12860;
              i3 = -49158;
              i4 = 976;
              i2 = i2 + gg::Rand( 650 );
              i3 = i3 + gg::Rand( 650 );
            }
            else if( i1 == 2 )
            {
              i2 = 14878;
              i3 = -51339;
              i4 = 1024;
              i2 = i2 + gg::Rand( 100 );
              i3 = i3 + gg::Rand( 100 );
            }
            else if( i1 == 3 )
            {
              i2 = 15674;
              i3 = -49970;
              i4 = 864;
              i2 = i2 + gg::Rand( 100 );
              i3 = i3 + gg::Rand( 100 );
            }
            else if( i1 == 4 )
            {
              i2 = 15696;
              i3 = -48326;
              i4 = 864;
              i2 = i2 + gg::Rand( 100 );
              i3 = i3 + gg::Rand( 100 );
            }
            else if( i1 == 5 )
            {
              i2 = 14873;
              i3 = -46956;
              i4 = 1024;
              i2 = i2 + gg::Rand( 100 );
              i3 = i3 + gg::Rand( 100 );
            }
            else if( i1 == 6 )
            {
              i2 = 12157;
              i3 = -49135;
              i4 = -1088;
              i2 = i2 + gg::Rand( 650 );
              i3 = i3 + gg::Rand( 650 );
            }
            else if( i1 == 7 )
            {
              i2 = 12875;
              i3 = -46392;
              i4 = -288;
              i2 = i2 + gg::Rand( 200 );
              i3 = i3 + gg::Rand( 200 );
            }
            else if( i1 == 8 )
            {
              i2 = 14087;
              i3 = -46706;
              i4 = -288;
              i2 = i2 + gg::Rand( 200 );
              i3 = i3 + gg::Rand( 200 );
            }
            else if( i1 == 9 )
            {
              i2 = 14086;
              i3 = -51593;
              i4 = -288;
              i2 = i2 + gg::Rand( 200 );
              i3 = i3 + gg::Rand( 200 );
            }
            else if( i1 == 10 )
            {
              i2 = 12864;
              i3 = -51898;
              i4 = -288;
              i2 = i2 + gg::Rand( 200 );
              i3 = i3 + gg::Rand( 200 );
            }
            else if( i1 == 11 )
            {
              i2 = 15538;
              i3 = -49153;
              i4 = -1056;
              i2 = i2 + gg::Rand( 200 );
              i3 = i3 + gg::Rand( 200 );
            }
            else if( i1 == 12 )
            {
              i2 = 17001;
              i3 = -49149;
              i4 = -1064;
              i2 = i2 + gg::Rand( 650 );
              i3 = i3 + gg::Rand( 650 );
            }
            myself::InstantTeleport( myself.c_quest0, i2, i3, i4 );
            myself::RemoveAttackDesire( myself.c_quest0.id );
          }
        }
      }
      myself.i_quest0 = 0;
      myself.int_list::Clear();
      myself::LookNeighbor( 600 );
    }
  }

  EventHandler SCRIPT_EVENT( script_event_arg1, script_event_arg2 )
  {
    if( script_event_arg1 == @SCE_BENOM_TELEPORT )
    {
      myself::InstantTeleport( myself.sm, 11563, -49152, -537 );
      myself.i_ai0 = script_event_arg2;
      myself.i_quest1 = 1;
      myself::AddTimerEx( 1002, 60 * 2 * 1000 );
      myself::AddTimerEx( 1001, 5000 );
    }
  }

  EventHandler MY_DYING()
  {
    myself.int_list::Clear();
    myself::Shout( gg::MakeFString( 1010626, "", "", "", "", "" ) );
    if( myself.i_ai0 == 0 )
    {
      myself::CreateOnePrivateEx( @teleport_cube_benom,
                                  "ai_teleport_cube_benom", 0, 0, 12589,
                                  -49044, -3008, 0, 0, 0, 0 );
    }
  }
}

АИ бенома.

Код:
npc_begin    warrior    18466    [outcastleguard]    category={}    level=81    exp=6300000000    ex_crt_effect=0    unique=0    s_npc_prop_hp_rate=1    race=demonic    sex=male    skill_list={@s_npc_prop_race_demonic;@s_npc_prop_attribute_unholy1;@s_npc_prop_hp_lv_p0;@s_npc_prop_mp_lv_p0;@s_npc_prop_pa_lv_p0;@s_npc_prop_ma_lv_p0;@s_npc_prop_pd_lv_p0;@s_npc_prop_md_lv_p0;@s_npc_prop_armor_type_n;@s_npc_prop_weapon_type_sword}    slot_chest=[]    slot_rhand=[benom_sword]    slot_lhand=[benom_sword]    collision_radius={20;20}    collision_height={56;56}    hit_time_factor=0.43    hit_time_factor_skill=-1    ground_high={220;0;0}    ground_low={79;0;0}    str=40    int=21    dex=30    wit=20    con=43    men=20    org_hp=111546.700057767    org_hp_regen=187.260794107867    org_mp=1846.8    org_mp_regen=3    base_attack_type=sword    base_attack_range=40    base_damage_range={0;0;80;120}    base_rand_dam=30    base_physical_attack=9311.83314853711    base_critical=4    physical_hit_modify=4.75    base_attack_speed=253    base_reuse_delay=0    base_magic_attack=6508.39315054715    base_defend=592.481283388235    base_magic_defend=650.328136094118    base_attribute_attack={unholy;150}    base_attribute_defend={100;100;100;100;80;150;90}    physical_avoid_modify=0    shield_defense_rate=0    shield_defense=0    safe_height=100    soulshot_count=0    spiritshot_count=0    clan={@castleout_clan}    ignore_clan_list={}    clan_help_range=1000    undying=0    can_be_attacked=1    corpse_time=7    no_sleep_mode=0    agro_range=450    passable_door=0    can_move=1    flying=0    has_summoner=0    targetable=1    show_name_tag=1    npc_ai={[outcastleguard];{[MoveAroundSocial]=80};{[MoveAroundSocial1]=80};{[MoveAroundSocial2]=80};{[IsAggressive]=1};{[Aggressive_Time]=1};{[MovingAttack]=0};{[Skill01_Target]=3};{[Skill01_AttackSplash]=1};{[Skill01_Check_Dist]=1};{[Skill01_Dist_Max]=150};{[Skill02_Type]=2};{[FieldCycle]=1};{[Skill01_ID]=@s_npc_party30_p_short_range_attack_unholy_paralyze4};{[Skill02_ID]=@s_npc_surrender_to_unholy3}}    event_flag={1}    unsowing=0    private_respawn_log=0    acquire_exp_rate=0    acquire_sp=0    acquire_rp=0    corpse_make_list={}    additional_make_list={}    additional_make_multi_list={}    ex_item_drop_list={}    fake_class_id=-1    npc_end

Босс в руне, который появляется во время осады.

Код:
class 0 warrior_outdoor_guard : warrior_basic
{
parameter:
  int     CallPCRate = 10000;
  int     MovingAttack = 0;

handler:
  EventHandler CREATED()
  {
    gg::Castle_GateOpenClose2( "iron_tower_out_door", 1 );
  }

  EventHandler ATTACKED( attacker )
  {
    if( myself::CanAttack( attacker ) == 0 )
    {
      if( myself::IsNullCreature( attacker ) == @FALSE )
      {
        if( gg::Rand( 10000 ) < CallPCRate )
        {
          myself::InstantTeleport( attacker, gg::FloatToInt( myself.sm.x ),
                                   gg::FloatToInt( myself.sm.y ),
                                   gg::FloatToInt( myself.sm.z ) );
        }
      }
    }
    super;
  }

  EventHandler MY_DYING( i0 )
  {
    i0 = gg::GetStep_FieldCycle( 1 );
    if( i0 == 8 )
    {
      myself::CreateOnePrivateEx( @outcastle_resister_npc,
                                  "npc_open_outcastle_door", 0, 0,
                                  gg::FloatToInt( myself.sm.x ),
                                  gg::FloatToInt( myself.sm.y ),
                                  gg::FloatToInt( myself.sm.z ), 0, 0, 0, 0 );
    }
    super;
  }
}

АИ босса.
 
Спасибо за помощь, вроде как сделали)) По крайней мере в ГСе написало что респ его в субботу через 5 мин после начала осады:)
 
Назад
Сверху Снизу