mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-10-05 20:13:29 -04:00
2513 lines
74 KiB
C++
2513 lines
74 KiB
C++
//========================================================================
|
|
//
|
|
// ServerCreatureObjectTemplate.cpp
|
|
//
|
|
//IMPORTANT: Any code between //@BEGIN TFD... and //@END TFD... will be
|
|
//overwritten the next time the template definition is compiled. Do not
|
|
//make changes to code inside these blocks.
|
|
//
|
|
// copyright 2001 Sony Online Entertainment
|
|
//
|
|
//========================================================================
|
|
|
|
#include "serverGame/FirstServerGame.h"
|
|
#include "ServerCreatureObjectTemplate.h"
|
|
#include "serverGame/CreatureObject.h"
|
|
#include "serverGame/NameManager.h"
|
|
#include "sharedFile/Iff.h"
|
|
#include "sharedObject/ObjectTemplate.h"
|
|
#include "sharedObject/ObjectTemplateList.h"
|
|
#include "sharedUtility/NameGenerator.h"
|
|
#include "sharedNetworkMessages/NameErrors.h"
|
|
//@BEGIN TFD TEMPLATE REFS
|
|
#include "ServerWeaponObjectTemplate.h"
|
|
//@END TFD TEMPLATE REFS
|
|
#include <stdio.h>
|
|
|
|
const std::string DefaultString("");
|
|
const StringId DefaultStringId("", 0);
|
|
const Vector DefaultVector(0,0,0);
|
|
const TriggerVolumeData DefaultTriggerVolumeData;
|
|
|
|
bool ServerCreatureObjectTemplate::ms_allowDefaultTemplateParams = true;
|
|
|
|
|
|
/**
|
|
* Class constructor.
|
|
*/
|
|
ServerCreatureObjectTemplate::ServerCreatureObjectTemplate(const std::string & filename)
|
|
//@BEGIN TFD INIT
|
|
: ServerTangibleObjectTemplate(filename)
|
|
,m_attribModsLoaded(false)
|
|
,m_attribModsAppend(false)
|
|
,m_versionOk(true)
|
|
//@END TFD INIT
|
|
{
|
|
} // ServerCreatureObjectTemplate::ServerCreatureObjectTemplate
|
|
|
|
/**
|
|
* Class destructor.
|
|
*/
|
|
ServerCreatureObjectTemplate::~ServerCreatureObjectTemplate()
|
|
{
|
|
//@BEGIN TFD CLEANUP
|
|
{
|
|
std::vector<StructParamOT *>::iterator iter;
|
|
for (iter = m_attribMods.begin(); iter != m_attribMods.end(); ++iter)
|
|
{
|
|
delete *iter;
|
|
*iter = NULL;
|
|
}
|
|
m_attribMods.clear();
|
|
}
|
|
//@END TFD CLEANUP
|
|
} // ServerCreatureObjectTemplate::~ServerCreatureObjectTemplate
|
|
|
|
/**
|
|
* Static function used to register this template.
|
|
*/
|
|
void ServerCreatureObjectTemplate::registerMe(void)
|
|
{
|
|
ObjectTemplateList::registerTemplate(ServerCreatureObjectTemplate_tag, create);
|
|
} // ServerCreatureObjectTemplate::registerMe
|
|
|
|
/**
|
|
* Creates a ServerCreatureObjectTemplate template.
|
|
*
|
|
* @return a new instance of the template
|
|
*/
|
|
ObjectTemplate * ServerCreatureObjectTemplate::create(const std::string & filename)
|
|
{
|
|
return new ServerCreatureObjectTemplate(filename);
|
|
} // ServerCreatureObjectTemplate::create
|
|
|
|
/**
|
|
* Returns the template id.
|
|
*
|
|
* @return the template id
|
|
*/
|
|
Tag ServerCreatureObjectTemplate::getId(void) const
|
|
{
|
|
return ServerCreatureObjectTemplate_tag;
|
|
} // ServerCreatureObjectTemplate::getId
|
|
|
|
/**
|
|
* Returns this template's version.
|
|
*
|
|
* @return the version
|
|
*/
|
|
Tag ServerCreatureObjectTemplate::getTemplateVersion(void) const
|
|
{
|
|
return m_templateVersion;
|
|
} // ServerCreatureObjectTemplate::getTemplateVersion
|
|
|
|
/**
|
|
* Returns the highest version of this template or it's base templates.
|
|
*
|
|
* @return the highest version
|
|
*/
|
|
Tag ServerCreatureObjectTemplate::getHighestTemplateVersion(void) const
|
|
{
|
|
if (m_baseData == NULL)
|
|
return m_templateVersion;
|
|
const ServerCreatureObjectTemplate * base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
if (base == NULL)
|
|
return m_templateVersion;
|
|
return std::max(m_templateVersion, base->getHighestTemplateVersion());
|
|
} // ServerCreatureObjectTemplate::getHighestTemplateVersion
|
|
|
|
/**
|
|
* Creates a new object from this template.
|
|
*
|
|
* @return the object
|
|
*/
|
|
Object * ServerCreatureObjectTemplate::createObject(void) const
|
|
{
|
|
return new CreatureObject(this);
|
|
} // ServerCreatureObjectTemplate::createObject
|
|
|
|
//@BEGIN TFD
|
|
const ServerWeaponObjectTemplate * ServerCreatureObjectTemplate::getDefaultWeapon() const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
if (!m_defaultWeapon.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter defaultWeapon in template %s", DataResource::getName()));
|
|
return NULL;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter defaultWeapon has not been defined in template %s!", DataResource::getName()));
|
|
return base->getDefaultWeapon();
|
|
}
|
|
}
|
|
|
|
const ServerWeaponObjectTemplate * returnValue = NULL;
|
|
const std::string & templateName = m_defaultWeapon.getValue();
|
|
if (!templateName.empty())
|
|
{
|
|
returnValue = dynamic_cast<const ServerWeaponObjectTemplate *>(ObjectTemplateList::fetch(templateName));
|
|
if (returnValue == NULL)
|
|
WARNING_STRICT_FATAL(true, ("Error loading template %s",templateName.c_str()));
|
|
}
|
|
return returnValue;
|
|
} // ServerCreatureObjectTemplate::getDefaultWeapon
|
|
|
|
int ServerCreatureObjectTemplate::getAttributes(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_attributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter attributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter attributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getAttributes(index);
|
|
}
|
|
}
|
|
|
|
int value = m_attributes[index].getValue();
|
|
char delta = m_attributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getAttributes(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getAttributes
|
|
|
|
int ServerCreatureObjectTemplate::getAttributesMin(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_attributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter attributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter attributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getAttributesMin(index);
|
|
}
|
|
}
|
|
|
|
int value = m_attributes[index].getMinValue();
|
|
char delta = m_attributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getAttributesMin(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getAttributesMin
|
|
|
|
int ServerCreatureObjectTemplate::getAttributesMax(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_attributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter attributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter attributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getAttributesMax(index);
|
|
}
|
|
}
|
|
|
|
int value = m_attributes[index].getMaxValue();
|
|
char delta = m_attributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getAttributesMax(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getAttributesMax
|
|
|
|
int ServerCreatureObjectTemplate::getMinAttributes(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_minAttributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minAttributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minAttributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinAttributes(index);
|
|
}
|
|
}
|
|
|
|
int value = m_minAttributes[index].getValue();
|
|
char delta = m_minAttributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinAttributes(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinAttributes
|
|
|
|
int ServerCreatureObjectTemplate::getMinAttributesMin(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_minAttributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minAttributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minAttributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinAttributesMin(index);
|
|
}
|
|
}
|
|
|
|
int value = m_minAttributes[index].getMinValue();
|
|
char delta = m_minAttributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinAttributesMin(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinAttributesMin
|
|
|
|
int ServerCreatureObjectTemplate::getMinAttributesMax(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_minAttributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minAttributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minAttributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinAttributesMax(index);
|
|
}
|
|
}
|
|
|
|
int value = m_minAttributes[index].getMaxValue();
|
|
char delta = m_minAttributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinAttributesMax(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinAttributesMax
|
|
|
|
int ServerCreatureObjectTemplate::getMaxAttributes(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_maxAttributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxAttributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxAttributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxAttributes(index);
|
|
}
|
|
}
|
|
|
|
int value = m_maxAttributes[index].getValue();
|
|
char delta = m_maxAttributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxAttributes(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxAttributes
|
|
|
|
int ServerCreatureObjectTemplate::getMaxAttributesMin(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_maxAttributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxAttributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxAttributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxAttributesMin(index);
|
|
}
|
|
}
|
|
|
|
int value = m_maxAttributes[index].getMinValue();
|
|
char delta = m_maxAttributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxAttributesMin(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxAttributesMin
|
|
|
|
int ServerCreatureObjectTemplate::getMaxAttributesMax(Attributes index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 6, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_maxAttributes[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxAttributes in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxAttributes has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxAttributesMax(index);
|
|
}
|
|
}
|
|
|
|
int value = m_maxAttributes[index].getMaxValue();
|
|
char delta = m_maxAttributes[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxAttributesMax(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxAttributesMax
|
|
|
|
float ServerCreatureObjectTemplate::getMinDrainModifier(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMinDrainModifier(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_minDrainModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minDrainModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minDrainModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinDrainModifier();
|
|
}
|
|
}
|
|
|
|
float value = m_minDrainModifier.getValue();
|
|
char delta = m_minDrainModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinDrainModifier();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinDrainModifier
|
|
|
|
float ServerCreatureObjectTemplate::getMinDrainModifierMin(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMinDrainModifierMin(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_minDrainModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minDrainModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minDrainModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinDrainModifierMin();
|
|
}
|
|
}
|
|
|
|
float value = m_minDrainModifier.getMinValue();
|
|
char delta = m_minDrainModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinDrainModifierMin();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinDrainModifierMin
|
|
|
|
float ServerCreatureObjectTemplate::getMinDrainModifierMax(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMinDrainModifierMax(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_minDrainModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minDrainModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minDrainModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinDrainModifierMax();
|
|
}
|
|
}
|
|
|
|
float value = m_minDrainModifier.getMaxValue();
|
|
char delta = m_minDrainModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinDrainModifierMax();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinDrainModifierMax
|
|
|
|
float ServerCreatureObjectTemplate::getMaxDrainModifier(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMaxDrainModifier(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_maxDrainModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxDrainModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxDrainModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxDrainModifier();
|
|
}
|
|
}
|
|
|
|
float value = m_maxDrainModifier.getValue();
|
|
char delta = m_maxDrainModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxDrainModifier();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxDrainModifier
|
|
|
|
float ServerCreatureObjectTemplate::getMaxDrainModifierMin(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMaxDrainModifierMin(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_maxDrainModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxDrainModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxDrainModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxDrainModifierMin();
|
|
}
|
|
}
|
|
|
|
float value = m_maxDrainModifier.getMinValue();
|
|
char delta = m_maxDrainModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxDrainModifierMin();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxDrainModifierMin
|
|
|
|
float ServerCreatureObjectTemplate::getMaxDrainModifierMax(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMaxDrainModifierMax(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_maxDrainModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxDrainModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxDrainModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxDrainModifierMax();
|
|
}
|
|
}
|
|
|
|
float value = m_maxDrainModifier.getMaxValue();
|
|
char delta = m_maxDrainModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxDrainModifierMax();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxDrainModifierMax
|
|
|
|
float ServerCreatureObjectTemplate::getMinFaucetModifier(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMinFaucetModifier(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_minFaucetModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minFaucetModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minFaucetModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinFaucetModifier();
|
|
}
|
|
}
|
|
|
|
float value = m_minFaucetModifier.getValue();
|
|
char delta = m_minFaucetModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinFaucetModifier();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinFaucetModifier
|
|
|
|
float ServerCreatureObjectTemplate::getMinFaucetModifierMin(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMinFaucetModifierMin(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_minFaucetModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minFaucetModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minFaucetModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinFaucetModifierMin();
|
|
}
|
|
}
|
|
|
|
float value = m_minFaucetModifier.getMinValue();
|
|
char delta = m_minFaucetModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinFaucetModifierMin();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinFaucetModifierMin
|
|
|
|
float ServerCreatureObjectTemplate::getMinFaucetModifierMax(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMinFaucetModifierMax(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_minFaucetModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter minFaucetModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter minFaucetModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMinFaucetModifierMax();
|
|
}
|
|
}
|
|
|
|
float value = m_minFaucetModifier.getMaxValue();
|
|
char delta = m_minFaucetModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMinFaucetModifierMax();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMinFaucetModifierMax
|
|
|
|
float ServerCreatureObjectTemplate::getMaxFaucetModifier(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMaxFaucetModifier(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_maxFaucetModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxFaucetModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxFaucetModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxFaucetModifier();
|
|
}
|
|
}
|
|
|
|
float value = m_maxFaucetModifier.getValue();
|
|
char delta = m_maxFaucetModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxFaucetModifier();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxFaucetModifier
|
|
|
|
float ServerCreatureObjectTemplate::getMaxFaucetModifierMin(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMaxFaucetModifierMin(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_maxFaucetModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxFaucetModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxFaucetModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxFaucetModifierMin();
|
|
}
|
|
}
|
|
|
|
float value = m_maxFaucetModifier.getMinValue();
|
|
char delta = m_maxFaucetModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxFaucetModifierMin();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxFaucetModifierMin
|
|
|
|
float ServerCreatureObjectTemplate::getMaxFaucetModifierMax(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getMaxFaucetModifierMax(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_maxFaucetModifier.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxFaucetModifier in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxFaucetModifier has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxFaucetModifierMax();
|
|
}
|
|
}
|
|
|
|
float value = m_maxFaucetModifier.getMaxValue();
|
|
char delta = m_maxFaucetModifier.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxFaucetModifierMax();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxFaucetModifierMax
|
|
|
|
void ServerCreatureObjectTemplate::getAttribMods(AttribMod &data, int index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
if (!m_attribModsLoaded)
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter attribMods in template %s", DataResource::getName()));
|
|
return ;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter attribMods has not been defined in template %s!", DataResource::getName()));
|
|
base->getAttribMods(data, index);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (m_attribModsAppend && base != NULL)
|
|
{
|
|
int baseCount = base->getAttribModsCount();
|
|
if (static_cast<int>(index) < baseCount)
|
|
{
|
|
base->getAttribMods(data, index);
|
|
return;
|
|
}
|
|
index -= baseCount;
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<size_t>(index) >= m_attribMods.size(), ("template param static_cast<int>(index) <out of range"));
|
|
const ObjectTemplate * structTemplate = (*m_attribMods[index]).getValue();
|
|
NOT_NULL(structTemplate);
|
|
const _AttribMod *param = dynamic_cast<const _AttribMod *>(structTemplate);
|
|
NOT_NULL(param);
|
|
data.target = param->getTarget(m_versionOk);
|
|
data.value = param->getValue(m_versionOk);
|
|
data.time = param->getTime(m_versionOk);
|
|
data.timeAtValue = param->getTimeAtValue(m_versionOk);
|
|
data.decay = param->getDecay(m_versionOk);
|
|
} // ServerCreatureObjectTemplate::getAttribMods
|
|
|
|
void ServerCreatureObjectTemplate::getAttribModsMin(AttribMod &data, int index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
if (!m_attribModsLoaded)
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter attribMods in template %s", DataResource::getName()));
|
|
return ;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter attribMods has not been defined in template %s!", DataResource::getName()));
|
|
base->getAttribModsMin(data, index);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (m_attribModsAppend && base != NULL)
|
|
{
|
|
int baseCount = base->getAttribModsCount();
|
|
if (static_cast<int>(index) < baseCount)
|
|
{
|
|
base->getAttribModsMin(data, index);
|
|
return;
|
|
}
|
|
index -= baseCount;
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<size_t>(index) >= m_attribMods.size(), ("template param static_cast<int>(index) <out of range"));
|
|
const ObjectTemplate * structTemplate = (*m_attribMods[index]).getValue();
|
|
NOT_NULL(structTemplate);
|
|
const _AttribMod *param = dynamic_cast<const _AttribMod *>(structTemplate);
|
|
NOT_NULL(param);
|
|
data.target = param->getTarget(m_versionOk);
|
|
data.value = param->getValueMin(m_versionOk);
|
|
data.time = param->getTimeMin(m_versionOk);
|
|
data.timeAtValue = param->getTimeAtValueMin(m_versionOk);
|
|
data.decay = param->getDecayMin(m_versionOk);
|
|
} // ServerCreatureObjectTemplate::getAttribModsMin
|
|
|
|
void ServerCreatureObjectTemplate::getAttribModsMax(AttribMod &data, int index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
if (!m_attribModsLoaded)
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter attribMods in template %s", DataResource::getName()));
|
|
return ;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter attribMods has not been defined in template %s!", DataResource::getName()));
|
|
base->getAttribModsMax(data, index);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (m_attribModsAppend && base != NULL)
|
|
{
|
|
int baseCount = base->getAttribModsCount();
|
|
if (static_cast<int>(index) < baseCount)
|
|
{
|
|
base->getAttribModsMax(data, index);
|
|
return;
|
|
}
|
|
index -= baseCount;
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<size_t>(index) >= m_attribMods.size(), ("template param static_cast<int>(index) <out of range"));
|
|
const ObjectTemplate * structTemplate = (*m_attribMods[index]).getValue();
|
|
NOT_NULL(structTemplate);
|
|
const _AttribMod *param = dynamic_cast<const _AttribMod *>(structTemplate);
|
|
NOT_NULL(param);
|
|
data.target = param->getTarget(m_versionOk);
|
|
data.value = param->getValueMax(m_versionOk);
|
|
data.time = param->getTimeMax(m_versionOk);
|
|
data.timeAtValue = param->getTimeAtValueMax(m_versionOk);
|
|
data.decay = param->getDecayMax(m_versionOk);
|
|
} // ServerCreatureObjectTemplate::getAttribModsMax
|
|
|
|
size_t ServerCreatureObjectTemplate::getAttribModsCount(void) const
|
|
{
|
|
if (!m_attribModsLoaded)
|
|
{
|
|
if (m_baseData == NULL)
|
|
return 0;
|
|
const ServerCreatureObjectTemplate * base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
DEBUG_FATAL(base == NULL, ("base template wrong type"));
|
|
return base->getAttribModsCount();
|
|
}
|
|
|
|
size_t count = m_attribMods.size();
|
|
|
|
// if we are extending our base template, add it's count
|
|
if (m_attribModsAppend && m_baseData != NULL)
|
|
{
|
|
const ServerCreatureObjectTemplate * base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
if (base != NULL)
|
|
count += base->getAttribModsCount();
|
|
}
|
|
|
|
return count;
|
|
} // ServerCreatureObjectTemplate::getAttribModsCount
|
|
|
|
int ServerCreatureObjectTemplate::getShockWounds(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
int testDataValue = 0;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getShockWounds(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_shockWounds.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter shockWounds in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter shockWounds has not been defined in template %s!", DataResource::getName()));
|
|
return base->getShockWounds();
|
|
}
|
|
}
|
|
|
|
int value = m_shockWounds.getValue();
|
|
char delta = m_shockWounds.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getShockWounds();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getShockWounds
|
|
|
|
int ServerCreatureObjectTemplate::getShockWoundsMin(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
int testDataValue = 0;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getShockWoundsMin(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_shockWounds.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter shockWounds in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter shockWounds has not been defined in template %s!", DataResource::getName()));
|
|
return base->getShockWoundsMin();
|
|
}
|
|
}
|
|
|
|
int value = m_shockWounds.getMinValue();
|
|
char delta = m_shockWounds.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getShockWoundsMin();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getShockWoundsMin
|
|
|
|
int ServerCreatureObjectTemplate::getShockWoundsMax(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
int testDataValue = 0;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getShockWoundsMax(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_shockWounds.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter shockWounds in template %s", DataResource::getName()));
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter shockWounds has not been defined in template %s!", DataResource::getName()));
|
|
return base->getShockWoundsMax();
|
|
}
|
|
}
|
|
|
|
int value = m_shockWounds.getMaxValue();
|
|
char delta = m_shockWounds.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
int baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getShockWoundsMax();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<int>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<int>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getShockWoundsMax
|
|
|
|
bool ServerCreatureObjectTemplate::getCanCreateAvatar(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
bool testDataValue = false;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getCanCreateAvatar(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_canCreateAvatar.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter canCreateAvatar in template %s", DataResource::getName()));
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter canCreateAvatar has not been defined in template %s!", DataResource::getName()));
|
|
return base->getCanCreateAvatar();
|
|
}
|
|
}
|
|
|
|
bool value = m_canCreateAvatar.getValue();
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getCanCreateAvatar
|
|
|
|
const std::string & ServerCreatureObjectTemplate::getNameGeneratorType(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
std::string testDataValue = DefaultString;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getNameGeneratorType(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_nameGeneratorType.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter nameGeneratorType in template %s", DataResource::getName()));
|
|
return DefaultString;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter nameGeneratorType has not been defined in template %s!", DataResource::getName()));
|
|
return base->getNameGeneratorType();
|
|
}
|
|
}
|
|
|
|
const std::string & value = m_nameGeneratorType.getValue();
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getNameGeneratorType
|
|
|
|
float ServerCreatureObjectTemplate::getApproachTriggerRange(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getApproachTriggerRange(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_approachTriggerRange.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter approachTriggerRange in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter approachTriggerRange has not been defined in template %s!", DataResource::getName()));
|
|
return base->getApproachTriggerRange();
|
|
}
|
|
}
|
|
|
|
float value = m_approachTriggerRange.getValue();
|
|
char delta = m_approachTriggerRange.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getApproachTriggerRange();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getApproachTriggerRange
|
|
|
|
float ServerCreatureObjectTemplate::getApproachTriggerRangeMin(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getApproachTriggerRangeMin(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_approachTriggerRange.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter approachTriggerRange in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter approachTriggerRange has not been defined in template %s!", DataResource::getName()));
|
|
return base->getApproachTriggerRangeMin();
|
|
}
|
|
}
|
|
|
|
float value = m_approachTriggerRange.getMinValue();
|
|
char delta = m_approachTriggerRange.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getApproachTriggerRangeMin();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getApproachTriggerRangeMin
|
|
|
|
float ServerCreatureObjectTemplate::getApproachTriggerRangeMax(bool testData) const
|
|
{
|
|
#ifdef _DEBUG
|
|
float testDataValue = 0.0f;
|
|
#else
|
|
UNREF(testData);
|
|
#endif
|
|
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
testDataValue = base->getApproachTriggerRangeMax(true);
|
|
#endif
|
|
}
|
|
|
|
if (!m_approachTriggerRange.isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter approachTriggerRange in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter approachTriggerRange has not been defined in template %s!", DataResource::getName()));
|
|
return base->getApproachTriggerRangeMax();
|
|
}
|
|
}
|
|
|
|
float value = m_approachTriggerRange.getMaxValue();
|
|
char delta = m_approachTriggerRange.getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getApproachTriggerRangeMax();
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
#ifdef _DEBUG
|
|
if (testData && base != NULL)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getApproachTriggerRangeMax
|
|
|
|
float ServerCreatureObjectTemplate::getMaxMentalStates(MentalStates index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 4, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_maxMentalStates[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxMentalStates in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxMentalStates has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxMentalStates(index);
|
|
}
|
|
}
|
|
|
|
float value = m_maxMentalStates[index].getValue();
|
|
char delta = m_maxMentalStates[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxMentalStates(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxMentalStates
|
|
|
|
float ServerCreatureObjectTemplate::getMaxMentalStatesMin(MentalStates index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 4, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_maxMentalStates[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxMentalStates in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxMentalStates has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxMentalStatesMin(index);
|
|
}
|
|
}
|
|
|
|
float value = m_maxMentalStates[index].getMinValue();
|
|
char delta = m_maxMentalStates[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxMentalStatesMin(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxMentalStatesMin
|
|
|
|
float ServerCreatureObjectTemplate::getMaxMentalStatesMax(MentalStates index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 4, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_maxMentalStates[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter maxMentalStates in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter maxMentalStates has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMaxMentalStatesMax(index);
|
|
}
|
|
}
|
|
|
|
float value = m_maxMentalStates[index].getMaxValue();
|
|
char delta = m_maxMentalStates[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMaxMentalStatesMax(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMaxMentalStatesMax
|
|
|
|
float ServerCreatureObjectTemplate::getMentalStatesDecay(MentalStates index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 4, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_mentalStatesDecay[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter mentalStatesDecay in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter mentalStatesDecay has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMentalStatesDecay(index);
|
|
}
|
|
}
|
|
|
|
float value = m_mentalStatesDecay[index].getValue();
|
|
char delta = m_mentalStatesDecay[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMentalStatesDecay(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMentalStatesDecay
|
|
|
|
float ServerCreatureObjectTemplate::getMentalStatesDecayMin(MentalStates index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 4, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_mentalStatesDecay[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter mentalStatesDecay in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter mentalStatesDecay has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMentalStatesDecayMin(index);
|
|
}
|
|
}
|
|
|
|
float value = m_mentalStatesDecay[index].getMinValue();
|
|
char delta = m_mentalStatesDecay[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMentalStatesDecayMin(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMentalStatesDecayMin
|
|
|
|
float ServerCreatureObjectTemplate::getMentalStatesDecayMax(MentalStates index) const
|
|
{
|
|
const ServerCreatureObjectTemplate * base = NULL;
|
|
if (m_baseData != NULL)
|
|
{
|
|
base = dynamic_cast<const ServerCreatureObjectTemplate *>(m_baseData);
|
|
}
|
|
|
|
DEBUG_FATAL(static_cast<int>(index) < 0 || static_cast<int>(index) >= 4, ("template param static_cast<int>(index) <out of range"));
|
|
if (!m_mentalStatesDecay[index].isLoaded())
|
|
{
|
|
if (ms_allowDefaultTemplateParams && /*!m_versionOk &&*/ base == NULL)
|
|
{
|
|
DEBUG_WARNING(true, ("Returning default value for missing parameter mentalStatesDecay in template %s", DataResource::getName()));
|
|
return 0.0f;
|
|
}
|
|
else
|
|
{
|
|
DEBUG_FATAL(base == NULL, ("Template parameter mentalStatesDecay has not been defined in template %s!", DataResource::getName()));
|
|
return base->getMentalStatesDecayMax(index);
|
|
}
|
|
}
|
|
|
|
float value = m_mentalStatesDecay[index].getMaxValue();
|
|
char delta = m_mentalStatesDecay[index].getDeltaType();
|
|
if (delta == '+' || delta == '-' || delta == '_' || delta == '=')
|
|
{
|
|
float baseValue = 0;
|
|
if (m_baseData != NULL)
|
|
{
|
|
if (base != NULL)
|
|
baseValue = base->getMentalStatesDecayMax(index);
|
|
else if (ms_allowDefaultTemplateParams)
|
|
DEBUG_WARNING(true, ("No base template for delta, using 0"));
|
|
else
|
|
NOT_NULL(base);
|
|
}
|
|
if (delta == '+')
|
|
value = baseValue + value;
|
|
else if (delta == '-')
|
|
value = baseValue - value;
|
|
else if (delta == '=')
|
|
value = baseValue + static_cast<float>(baseValue * (value / 100.0f));
|
|
else if (delta == '_')
|
|
value = baseValue - static_cast<float>(baseValue * (value / 100.0f));
|
|
}
|
|
return value;
|
|
} // ServerCreatureObjectTemplate::getMentalStatesDecayMax
|
|
|
|
#ifdef _DEBUG
|
|
/**
|
|
* Special function used by datalint. Checks for duplicate values in base and derived templates.
|
|
*/
|
|
void ServerCreatureObjectTemplate::testValues(void) const
|
|
{
|
|
IGNORE_RETURN(getMinDrainModifierMin(true));
|
|
IGNORE_RETURN(getMinDrainModifierMax(true));
|
|
IGNORE_RETURN(getMaxDrainModifierMin(true));
|
|
IGNORE_RETURN(getMaxDrainModifierMax(true));
|
|
IGNORE_RETURN(getMinFaucetModifierMin(true));
|
|
IGNORE_RETURN(getMinFaucetModifierMax(true));
|
|
IGNORE_RETURN(getMaxFaucetModifierMin(true));
|
|
IGNORE_RETURN(getMaxFaucetModifierMax(true));
|
|
IGNORE_RETURN(getShockWoundsMin(true));
|
|
IGNORE_RETURN(getShockWoundsMax(true));
|
|
IGNORE_RETURN(getCanCreateAvatar(true));
|
|
IGNORE_RETURN(getNameGeneratorType(true));
|
|
IGNORE_RETURN(getApproachTriggerRangeMin(true));
|
|
IGNORE_RETURN(getApproachTriggerRangeMax(true));
|
|
ServerTangibleObjectTemplate::testValues();
|
|
} // ServerCreatureObjectTemplate::testValues
|
|
#endif
|
|
|
|
/**
|
|
* Loads the template data from an iff file. We should already be in the form
|
|
* for this template.
|
|
*
|
|
* @param file file to load from
|
|
*/
|
|
void ServerCreatureObjectTemplate::load(Iff &file)
|
|
{
|
|
static const int MAX_NAME_SIZE = 256;
|
|
char paramName[MAX_NAME_SIZE];
|
|
|
|
if (file.getCurrentName() != ServerCreatureObjectTemplate_tag)
|
|
{
|
|
ServerTangibleObjectTemplate::load(file);
|
|
return;
|
|
}
|
|
|
|
file.enterForm();
|
|
m_templateVersion = file.getCurrentName();
|
|
if (m_templateVersion == TAG(D,E,R,V))
|
|
{
|
|
file.enterForm();
|
|
file.enterChunk();
|
|
std::string baseFilename;
|
|
file.read_string(baseFilename);
|
|
file.exitChunk();
|
|
const ObjectTemplate *base = ObjectTemplateList::fetch(baseFilename);
|
|
DEBUG_WARNING(base == NULL, ("was unable to load base template %s", baseFilename.c_str()));
|
|
if (m_baseData == base && base != NULL)
|
|
base->releaseReference();
|
|
else
|
|
{
|
|
if (m_baseData != NULL)
|
|
m_baseData->releaseReference();
|
|
m_baseData = base;
|
|
}
|
|
file.exitForm();
|
|
m_templateVersion = file.getCurrentName();
|
|
}
|
|
if (getHighestTemplateVersion() != TAG(0,0,0,5))
|
|
{
|
|
if (DataLint::isEnabled())
|
|
DEBUG_WARNING(true, ("template %s version out of date", file.getFileName()));
|
|
m_versionOk = false;
|
|
}
|
|
|
|
file.enterForm();
|
|
|
|
file.enterChunk();
|
|
int paramCount = file.read_int32();
|
|
file.exitChunk();
|
|
for (int i = 0; i < paramCount; ++i)
|
|
{
|
|
file.enterChunk();
|
|
file.read_string(paramName, MAX_NAME_SIZE);
|
|
if (strcmp(paramName, "defaultWeapon") == 0)
|
|
m_defaultWeapon.loadFromIff(file);
|
|
else if (strcmp(paramName, "attributes") == 0)
|
|
{
|
|
int listCount = file.read_int32();
|
|
DEBUG_WARNING(listCount != 6, ("Template %s: read array size of %d for array \"attributes\" of size 6, reading values anyway", file.getFileName(), listCount));
|
|
int j;
|
|
for (j = 0; j < 6 && j < listCount; ++j)
|
|
m_attributes[j].loadFromIff(file);
|
|
// if there are more params for attributes read and dump them
|
|
for (; j < listCount; ++j)
|
|
{
|
|
IntegerParam dummy;
|
|
dummy.loadFromIff(file);
|
|
}
|
|
}
|
|
else if (strcmp(paramName, "minAttributes") == 0)
|
|
{
|
|
int listCount = file.read_int32();
|
|
DEBUG_WARNING(listCount != 6, ("Template %s: read array size of %d for array \"minAttributes\" of size 6, reading values anyway", file.getFileName(), listCount));
|
|
int j;
|
|
for (j = 0; j < 6 && j < listCount; ++j)
|
|
m_minAttributes[j].loadFromIff(file);
|
|
// if there are more params for minAttributes read and dump them
|
|
for (; j < listCount; ++j)
|
|
{
|
|
IntegerParam dummy;
|
|
dummy.loadFromIff(file);
|
|
}
|
|
}
|
|
else if (strcmp(paramName, "maxAttributes") == 0)
|
|
{
|
|
int listCount = file.read_int32();
|
|
DEBUG_WARNING(listCount != 6, ("Template %s: read array size of %d for array \"maxAttributes\" of size 6, reading values anyway", file.getFileName(), listCount));
|
|
int j;
|
|
for (j = 0; j < 6 && j < listCount; ++j)
|
|
m_maxAttributes[j].loadFromIff(file);
|
|
// if there are more params for maxAttributes read and dump them
|
|
for (; j < listCount; ++j)
|
|
{
|
|
IntegerParam dummy;
|
|
dummy.loadFromIff(file);
|
|
}
|
|
}
|
|
else if (strcmp(paramName, "minDrainModifier") == 0)
|
|
m_minDrainModifier.loadFromIff(file);
|
|
else if (strcmp(paramName, "maxDrainModifier") == 0)
|
|
m_maxDrainModifier.loadFromIff(file);
|
|
else if (strcmp(paramName, "minFaucetModifier") == 0)
|
|
m_minFaucetModifier.loadFromIff(file);
|
|
else if (strcmp(paramName, "maxFaucetModifier") == 0)
|
|
m_maxFaucetModifier.loadFromIff(file);
|
|
else if (strcmp(paramName, "attribMods") == 0)
|
|
{
|
|
std::vector<StructParamOT *>::iterator iter;
|
|
for (iter = m_attribMods.begin(); iter != m_attribMods.end(); ++iter)
|
|
{
|
|
delete *iter;
|
|
*iter = NULL;
|
|
}
|
|
m_attribMods.clear();
|
|
m_attribModsAppend = file.read_bool8();
|
|
int listCount = file.read_int32();
|
|
for (int j = 0; j < listCount; ++j)
|
|
{
|
|
StructParamOT * newData = new StructParamOT;
|
|
newData->loadFromIff(file);
|
|
m_attribMods.push_back(newData);
|
|
}
|
|
m_attribModsLoaded = true;
|
|
}
|
|
else if (strcmp(paramName, "shockWounds") == 0)
|
|
m_shockWounds.loadFromIff(file);
|
|
else if (strcmp(paramName, "canCreateAvatar") == 0)
|
|
m_canCreateAvatar.loadFromIff(file);
|
|
else if (strcmp(paramName, "nameGeneratorType") == 0)
|
|
m_nameGeneratorType.loadFromIff(file);
|
|
else if (strcmp(paramName, "approachTriggerRange") == 0)
|
|
m_approachTriggerRange.loadFromIff(file);
|
|
else if (strcmp(paramName, "maxMentalStates") == 0)
|
|
{
|
|
int listCount = file.read_int32();
|
|
DEBUG_WARNING(listCount != 4, ("Template %s: read array size of %d for array \"maxMentalStates\" of size 4, reading values anyway", file.getFileName(), listCount));
|
|
int j;
|
|
for (j = 0; j < 4 && j < listCount; ++j)
|
|
m_maxMentalStates[j].loadFromIff(file);
|
|
// if there are more params for maxMentalStates read and dump them
|
|
for (; j < listCount; ++j)
|
|
{
|
|
FloatParam dummy;
|
|
dummy.loadFromIff(file);
|
|
}
|
|
}
|
|
else if (strcmp(paramName, "mentalStatesDecay") == 0)
|
|
{
|
|
int listCount = file.read_int32();
|
|
DEBUG_WARNING(listCount != 4, ("Template %s: read array size of %d for array \"mentalStatesDecay\" of size 4, reading values anyway", file.getFileName(), listCount));
|
|
int j;
|
|
for (j = 0; j < 4 && j < listCount; ++j)
|
|
m_mentalStatesDecay[j].loadFromIff(file);
|
|
// if there are more params for mentalStatesDecay read and dump them
|
|
for (; j < listCount; ++j)
|
|
{
|
|
FloatParam dummy;
|
|
dummy.loadFromIff(file);
|
|
}
|
|
}
|
|
file.exitChunk(true);
|
|
}
|
|
|
|
file.exitForm();
|
|
ServerTangibleObjectTemplate::load(file);
|
|
file.exitForm();
|
|
return;
|
|
} // ServerCreatureObjectTemplate::load
|
|
|
|
//@END TFD
|
|
|
|
/*
|
|
Unicode::String ServerCreatureObjectTemplate::generateRandomName(StringId &o_errorMessage) const
|
|
{
|
|
o_errorMessage = NameErrors::nameApproved;
|
|
return NameManager::getInstance().generateRandomName("name",getNameGeneratorType());
|
|
}
|
|
|
|
const StringId &ServerCreatureObjectTemplate::verifyName(const Unicode::String &name) const
|
|
{
|
|
if (NameManager::getInstance().isNameAppropriate("name",getNameGeneratorType(),name))
|
|
return NameErrors::nameApproved;
|
|
else
|
|
return NameErrors::nameDeclinedRaciallyInappropriate;
|
|
}
|
|
*/
|
|
|
|
void ServerCreatureObjectTemplate::postLoad()
|
|
{
|
|
ServerTangibleObjectTemplate::postLoad();
|
|
}
|