コード例 #1
0
void CStatusEffectContainer::AddStatusEffect(CStatusEffect* PStatusEffect)
{
	if(PStatusEffect != NULL) 
	{
		SetEffectName(PStatusEffect);
        PStatusEffect->SetOwner(m_POwner);
		PStatusEffect->SetStartTime(gettick());

        luautils::OnEffectGain(m_POwner, PStatusEffect);

        m_POwner->addModifiers(&PStatusEffect->modList);
        m_POwner->UpdateHealth();

		m_StatusEffectList.push_back(PStatusEffect);

		if (m_POwner->objtype == TYPE_PC)
        {
            CCharEntity* PChar = (CCharEntity*)m_POwner;

            if (PStatusEffect->GetIcon() != 0)
            {
                UpdateStatusIcons();
                PChar->pushPacket(new CMessageBasicPacket(PChar, PChar, PStatusEffect->GetIcon(), 0, 205));
            }
            if (PChar->status == STATUS_NORMAL) PChar->status = STATUS_UPDATE;

            PChar->pushPacket(new CCharHealthPacket(PChar));
            PChar->pushPacket(new CCharSyncPacket(PChar));
        }
	}
}
コード例 #2
0
ファイル: Layer.cpp プロジェクト: 4ian/GD
gd::Effect& Layer::InsertNewEffect(const gd::String& name,
                                   std::size_t position) {
  auto newEffect = std::make_shared<Effect>();
  newEffect->SetName(name);
  newEffect->SetEffectName(name);
  if (position < effects.size())
    effects.insert(effects.begin() + position, newEffect);
  else
    effects.push_back(newEffect);

  return *newEffect;
}