Multiple Vials.

Results 1 to 6 of 6
  1. #1
    Enthusiast ngskRabbit is offline
    MemberRank
    Sep 2012 Join Date
    32Posts

    Multiple Vials.

    ALL of ZModule_HealOverTime.h :
    Code:
    
    #ifndef _ZMODULE_HEALOVERTIME_H
    #define _ZMODULE_HEALOVERTIME_H
    
    #include "ZModule.h"
    #include "ZModuleID.h"
    
    // ステー」タヌ ネ蟶ァソ。 オ郞ュ HPウェ APー。 ネクコケオヌエツ ネソー弴ヲ タァヌム ク・
    
    struct ZHealInfo
    {
    	float					fBeginTime;		// ネ・ステタロヌム ステー」
    	float					fNextHealTime;	// エルタスケ・ネ・ゲタサ ステー」
    
    	float					fHeal;			// 1ネク ネクコケキョ
    	int						numHealDesire;	// テム ク・ ネクコケネスシ・
    	int						numHealDone;		// ヌ・ネクコケヌム ネスシ・
    
    	MMatchDamageType		type;
    	MMatchItemEffectId		nEffectId;
    	int						nItemId;			// ネソー弴ヲ タマタクナイ セニタフナロID
    
    	bool					bOnHeal;	// ネ・ゲー・タヨエツ チ゚タホー。
    };
    
    class ZModule_HealOverTime : public ZModule {
    private:
    	list<ZHealInfo *> m_Heals;
    
    	void RemoveEndedHeal();
    	void ClearHeal();
    
    public:
    	DECLARE_ID(ZMID_HEALOVERTIME)
    	ZModule_HealOverTime();
    	~ZModule_HealOverTime();
    
    	virtual bool Update(float fElapsed);
    	virtual void InitStatus();
    
    	void BeginHeal(MMatchDamageType type, int nHealAmount, int numHeal, MMatchItemEffectId effectId, int nItemId);
    	// bool IsOnHeal() { return m_bOnHeal.Ref(); }
    	// float GetHealBeginTime() { return m_fBeginTime.Ref(); }
    
    	bool GetHealOverTimeBuffInfo(vector<MTD_BuffInfo> &vecOut);
    
    	void ShiftFugitiveValues();
    };
    
    #endif
    
    ALL of ZModule_HealOverTime.cpp :
    Code:
    
    #include "stdafx.h"
    #include "ZModule_HealOverTime.h"
    #include "ZGame.h"
    #include "ZApplication.h"
    #include "ZModule_HPAP.h"
    
    int GetEffectLevel();
    
    ZModule_HealOverTime::ZModule_HealOverTime()
    {
    	ClearHeal();
    }
    
    ZModule_HealOverTime::~ZModule_HealOverTime()
    {
    	ClearHeal();
    }
    
    void ZModule_HealOverTime::InitStatus()
    {
    	Active(false);
    }
    
    bool ZModule_HealOverTime::Update(float fElapsed)
    {
    	ZCharacter* pChar = MDynamicCast(ZCharacter, m_pContainer);
    	if (!pChar)
    		_ASSERT(0);
    	else
    	{
    		for(list<ZHealInfo *>::iterator i = m_Heals.begin(); 
    			i != m_Heals.end(); i++)
    		{
    			ZHealInfo *pInfo = (*i);
    
    			if(ZGetGame()->GetTime() > pInfo->fNextHealTime) {
    				pInfo->fNextHealTime += 1.f;
    				pInfo->numHealDone += 1;
    
    				if(pChar->IsDie())
    				{
    					pInfo->bOnHeal = false;
    				}
    				else
    				{
    					switch (pInfo->type)
    					{
    					case MMDT_HEAL:
    						pChar->SetHP( min( pChar->GetHP() + pInfo->fHeal, pChar->GetMaxHP() ) );
    						break;
    					case MMDT_REPAIR:
    						pChar->SetAP( min( pChar->GetAP() + pInfo->fHeal, pChar->GetMaxAP() ) );
    						break;
    					default:
    						_ASSERT(0);
    					}
    					ZGetEffectManager()->AddPotionEffect( pChar->GetPosition(), pChar, pInfo->nEffectId );
    				}
    			}
    			if(pInfo->numHealDone == pInfo->numHealDesire) {
    				pInfo->bOnHeal = false;
    			}
    		}
    	}
    
    	RemoveEndedHeal();
    	return true;
    }
    
    void ZModule_HealOverTime::BeginHeal(MMatchDamageType type, int nHealAmount, int numHeal, MMatchItemEffectId effectId, int nItemId)
    {
    	if (type != MMDT_HEAL && type != MMDT_REPAIR) { _ASSERT(0); return; }
    
    	ZHealInfo *pNew = new ZHealInfo;
    
    	pNew->type = type;
    	pNew->nEffectId = effectId;
    
    	float fCurrTime = ZGetGame()->GetTime();
    
    	pNew->fBeginTime = fCurrTime;
    
    	pNew->fHeal = (float)nHealAmount;
    	pNew->numHealDesire = numHeal;
    	pNew->numHealDone = 0;
    
    	pNew->fNextHealTime = fCurrTime;
    
    	pNew->bOnHeal = true;
    	pNew->nItemId = nItemId;
    
    	m_Heals.push_back(pNew);
    
    
    	Active();
    }
    
    bool ZModule_HealOverTime::GetHealOverTimeBuffInfo(vector<MTD_BuffInfo> &vecOut)
    {
    	for(list<ZHealInfo *>::iterator i = m_Heals.begin(); 
    		i != m_Heals.end(); i++)
    	{
    		ZHealInfo *pInfo = (*i);
    
    		MTD_BuffInfo temp;
    		temp.nItemId = pInfo->nItemId;
    		temp.nRemainedTime = pInfo->numHealDesire - pInfo->numHealDone;
    		vecOut.push_back(temp);
    	}
    
    	return true;
    }
    
    void ZModule_HealOverTime::ShiftFugitiveValues()
    {
    	// Nothing.
    }
    
    
    void ZModule_HealOverTime::RemoveEndedHeal()
    {
    	list<ZHealInfo *>::iterator i = m_Heals.begin();
    
    	while(i != m_Heals.end())
    	{
    		if((*i)->bOnHeal == false)
    		{
    			delete (*i);
    			i = m_Heals.erase(i);
    		}
    		else
    			i++;
    	}
    }
    
    void ZModule_HealOverTime::ClearHeal()
    {
    	for(list<ZHealInfo *>::iterator i = m_Heals.begin(); 
    		i != m_Heals.end(); i++)
    			delete (*i);
    
    	m_Heals.clear();
    }
    
    ZMyCharacter.cpp - ZMyCharacter::MakeBuffEffectBlob() :
    Code:
    .......
    		if (((ZModule_Movable*)pMod)->GetHasteBuffInfo(tempBuffInfo))
    			vec.push_back(tempBuffInfo);
    	}
    	if (pMod = GetModule(ZMID_HEALOVERTIME))
    	{
    		// if (((ZModule_HealOverTime*)pMod)->GetHealOverTimeBuffInfo(tempBuffInfo))
    		// 	vec.push_back(tempBuffInfo);
    		((ZModule_HealOverTime*)pMod)->GetHealOverTimeBuffInfo(vec);
    	}
    
    	int num = (int)vec.size();
    	if (num == 0) return NULL;
    .......

    Usage :spam your vials.


  2. #2
    Account Upgraded | Title Enabled! Rejain is offline
    MemberRank
    Jul 2012 Join Date
    201Posts

    Re: Multiple Vials.

    Quote Originally Posted by ngskRabbit View Post
    ALL of ZModule_HealOverTime.h :
    Code:
    
    #ifndef _ZMODULE_HEALOVERTIME_H
    #define _ZMODULE_HEALOVERTIME_H
    
    #include "ZModule.h"
    #include "ZModuleID.h"
    
    // ステー」タヌ ネ蟶ァソ。 オ郞ュ HPウェ APー。 ネクコケオヌエツ ネソー弴ヲ タァヌム ク・
    
    struct ZHealInfo
    {
    	float					fBeginTime;		// ネ・ステタロヌム ステー」
    	float					fNextHealTime;	// エルタスケ・ネ・ゲタサ ステー」
    
    	float					fHeal;			// 1ネク ネクコケキョ
    	int						numHealDesire;	// テム ク・ ネクコケネスシ・
    	int						numHealDone;		// ヌ・ネクコケヌム ネスシ・
    
    	MMatchDamageType		type;
    	MMatchItemEffectId		nEffectId;
    	int						nItemId;			// ネソー弴ヲ タマタクナイ セニタフナロID
    
    	bool					bOnHeal;	// ネ・ゲー・タヨエツ チ゚タホー。
    };
    
    class ZModule_HealOverTime : public ZModule {
    private:
    	list<ZHealInfo *> m_Heals;
    
    	void RemoveEndedHeal();
    	void ClearHeal();
    
    public:
    	DECLARE_ID(ZMID_HEALOVERTIME)
    	ZModule_HealOverTime();
    	~ZModule_HealOverTime();
    
    	virtual bool Update(float fElapsed);
    	virtual void InitStatus();
    
    	void BeginHeal(MMatchDamageType type, int nHealAmount, int numHeal, MMatchItemEffectId effectId, int nItemId);
    	// bool IsOnHeal() { return m_bOnHeal.Ref(); }
    	// float GetHealBeginTime() { return m_fBeginTime.Ref(); }
    
    	bool GetHealOverTimeBuffInfo(vector<MTD_BuffInfo> &vecOut);
    
    	void ShiftFugitiveValues();
    };
    
    #endif
    
    ALL of ZModule_HealOverTime.cpp :
    Code:
    
    #include "stdafx.h"
    #include "ZModule_HealOverTime.h"
    #include "ZGame.h"
    #include "ZApplication.h"
    #include "ZModule_HPAP.h"
    
    int GetEffectLevel();
    
    ZModule_HealOverTime::ZModule_HealOverTime()
    {
    	ClearHeal();
    }
    
    ZModule_HealOverTime::~ZModule_HealOverTime()
    {
    	ClearHeal();
    }
    
    void ZModule_HealOverTime::InitStatus()
    {
    	Active(false);
    }
    
    bool ZModule_HealOverTime::Update(float fElapsed)
    {
    	ZCharacter* pChar = MDynamicCast(ZCharacter, m_pContainer);
    	if (!pChar)
    		_ASSERT(0);
    	else
    	{
    		for(list<ZHealInfo *>::iterator i = m_Heals.begin(); 
    			i != m_Heals.end(); i++)
    		{
    			ZHealInfo *pInfo = (*i);
    
    			if(ZGetGame()->GetTime() > pInfo->fNextHealTime) {
    				pInfo->fNextHealTime += 1.f;
    				pInfo->numHealDone += 1;
    
    				if(pChar->IsDie())
    				{
    					pInfo->bOnHeal = false;
    				}
    				else
    				{
    					switch (pInfo->type)
    					{
    					case MMDT_HEAL:
    						pChar->SetHP( min( pChar->GetHP() + pInfo->fHeal, pChar->GetMaxHP() ) );
    						break;
    					case MMDT_REPAIR:
    						pChar->SetAP( min( pChar->GetAP() + pInfo->fHeal, pChar->GetMaxAP() ) );
    						break;
    					default:
    						_ASSERT(0);
    					}
    					ZGetEffectManager()->AddPotionEffect( pChar->GetPosition(), pChar, pInfo->nEffectId );
    				}
    			}
    			if(pInfo->numHealDone == pInfo->numHealDesire) {
    				pInfo->bOnHeal = false;
    			}
    		}
    	}
    
    	RemoveEndedHeal();
    	return true;
    }
    
    void ZModule_HealOverTime::BeginHeal(MMatchDamageType type, int nHealAmount, int numHeal, MMatchItemEffectId effectId, int nItemId)
    {
    	if (type != MMDT_HEAL && type != MMDT_REPAIR) { _ASSERT(0); return; }
    
    	ZHealInfo *pNew = new ZHealInfo;
    
    	pNew->type = type;
    	pNew->nEffectId = effectId;
    
    	float fCurrTime = ZGetGame()->GetTime();
    
    	pNew->fBeginTime = fCurrTime;
    
    	pNew->fHeal = (float)nHealAmount;
    	pNew->numHealDesire = numHeal;
    	pNew->numHealDone = 0;
    
    	pNew->fNextHealTime = fCurrTime;
    
    	pNew->bOnHeal = true;
    	pNew->nItemId = nItemId;
    
    	m_Heals.push_back(pNew);
    
    
    	Active();
    }
    
    bool ZModule_HealOverTime::GetHealOverTimeBuffInfo(vector<MTD_BuffInfo> &vecOut)
    {
    	for(list<ZHealInfo *>::iterator i = m_Heals.begin(); 
    		i != m_Heals.end(); i++)
    	{
    		ZHealInfo *pInfo = (*i);
    
    		MTD_BuffInfo temp;
    		temp.nItemId = pInfo->nItemId;
    		temp.nRemainedTime = pInfo->numHealDesire - pInfo->numHealDone;
    		vecOut.push_back(temp);
    	}
    
    	return true;
    }
    
    void ZModule_HealOverTime::ShiftFugitiveValues()
    {
    	// Nothing.
    }
    
    
    void ZModule_HealOverTime::RemoveEndedHeal()
    {
    	list<ZHealInfo *>::iterator i = m_Heals.begin();
    
    	while(i != m_Heals.end())
    	{
    		if((*i)->bOnHeal == false)
    		{
    			delete (*i);
    			i = m_Heals.erase(i);
    		}
    		else
    			i++;
    	}
    }
    
    void ZModule_HealOverTime::ClearHeal()
    {
    	for(list<ZHealInfo *>::iterator i = m_Heals.begin(); 
    		i != m_Heals.end(); i++)
    			delete (*i);
    
    	m_Heals.clear();
    }
    
    ZMyCharacter.cpp - ZMyCharacter::MakeBuffEffectBlob() :
    Code:
    .......
    		if (((ZModule_Movable*)pMod)->GetHasteBuffInfo(tempBuffInfo))
    			vec.push_back(tempBuffInfo);
    	}
    	if (pMod = GetModule(ZMID_HEALOVERTIME))
    	{
    		// if (((ZModule_HealOverTime*)pMod)->GetHealOverTimeBuffInfo(tempBuffInfo))
    		// 	vec.push_back(tempBuffInfo);
    		((ZModule_HealOverTime*)pMod)->GetHealOverTimeBuffInfo(vec);
    	}
    
    	int num = (int)vec.size();
    	if (num == 0) return NULL;
    .......

    Usage :spam your vials.
    what is vials, i didnt get what it really does, lol

  3. #3
    I like pie OJuice is offline
    MemberRank
    Jul 2011 Join Date
    205Posts

    Re: Multiple Vials.

    this is because when you use your next vial it basically cancels out the other one. now you can use more at a time compared to waiting for one to finish

  4. #4
    DRGunZ 2 Creator wesman2232 is offline
    MemberRank
    Jan 2007 Join Date
    Erie, PALocation
    4,872Posts

    Re: Multiple Vials.

    Basically: How Diablo 2 used their potions. You could literally spam instant refill potions whenever you was battling a tough enemy and always have full hp.

  5. #5
    Account Upgraded | Title Enabled! medotarek is offline
    MemberRank
    Apr 2012 Join Date
    Egypt/RageZoneLocation
    615Posts

    Re: Multiple Vials.

    i thik that about the health lol

  6. #6
    RailGunZ Soon! megol is offline
    MemberRank
    Jun 2012 Join Date
    261Posts

    Re: Multiple Vials.

    what is vial?.

    aaaa the item medi vial, hoo yhea!!!.



Advertisement