Тема: Вопросы
Показать сообщение отдельно
Старый 16.01.2020, 15:39   #7575
Asura
Модератор
 
Аватар для Asura
 
Регистрация: 28.02.2007
Адрес: Тула, Россия
Сообщений: 1,818
По умолчанию

Есть такая процедурка:
Код:
  protected void hitChunk (String chunk, Shot shot) {
    // --- Resolving the Chunk -------------------------------------------------
    if(chunk.lastIndexOf("_")==-1) chunk += "_D"+chunkDamageVisible(chunk);
    // --- Hit Energy in TNT Units ---------------------------------------------
    float energy = shot.powerToTNT();
    // --- Hit Energy in "Damage State Shift" Units ----------------------------
    if(chunk.endsWith("_D0") && !chunk.startsWith("Gear")) {
      if(energy>defaultUnitHit) {
        energy = 1.0f + ((energy-defaultUnitHit)/FM.Sq.getToughness(part(chunk)));
      }else {
        energy /= defaultUnitHit;
      }
    }else {
      energy /= FM.Sq.getToughness(part(chunk));
    }
    energy += FM.Sq.eAbsorber[part(chunk)];
    // --- Damage State Shifts -------------------------------------------------
    int nHits = (int)energy;
    FM.Sq.eAbsorber[part(chunk)] = energy - nHits;
    if(nHits>0) setDamager(shot.initiator,nHits);
    nextDMGLevels(nHits, HIT_SHOT, chunk, shot.initiator);
  }
вызывается в hitBone:

Код:
    }else if(bone.startsWith("xwing")) { // --- wings --------------------------
      if(bone.startsWith("xwinglin")) { // --- wing l in -----------------------
        if(chunkDamageVisible("WingLIn")<3) {
          hitChunk("WingLIn", shot);
        }
      }
Процедура nextDMGLevel включает очередной _Dx в зависимости от текущего...
__________________
Их восемь — нас двое. Расклад перед боем
Не наш, но мы будем играть!
Серёжа! Держись, нам не светит с тобою,
Но козыри надо равнять.

© В. Высоцкий
__________________

Asura вне форума   Ответить с цитированием