Revision: 8442
http://planeshift.svn.sourceforge.net/planeshift/?rev=8442&view=rev
Author: weltall2
Date: 2012-09-23 12:34:00 +0000 (Sun, 23 Sep 2012)
Log Message:
-----------
behaviour change set the base values only if not previously set.
Modified Paths:
--------------
trunk/src/server/lootrandomizer.cpp
Modified: trunk/src/server/lootrandomizer.cpp
===================================================================
--- trunk/src/server/lootrandomizer.cpp 2012-09-23 11:10:26 UTC (rev 8441)
+++ trunk/src/server/lootrandomizer.cpp 2012-09-23 12:34:00 UTC (rev 8442)
@@ -356,58 +356,112 @@
}
if(AttributeName.Compare("item.weight"))
{
- overlay->weight = baseItem->GetWeight();
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->weight))
+ {
+ overlay->weight = baseItem->GetWeight();
+ }
+
value[0] = &overlay->weight;
}
else if(AttributeName.Compare("item.speed"))
{
- overlay->latency = baseItem->Weapon().Latency();
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->latency))
+ {
+ overlay->latency = baseItem->Weapon().Latency();
+ }
+
value[0] = &overlay->latency;
}
else if(AttributeName.Compare("item.damage"))
{
for(int i = 0; i < 3; i++)
- overlay->damageStats[i] = baseItem->Weapon().Damage((PSITEMSTATS_DAMAGETYPE)i);
+ {
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[i]))
+ {
+ overlay->damageStats[i] = baseItem->Weapon().Damage((PSITEMSTATS_DAMAGETYPE)i);
+ }
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH];
value[1] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT];
value[2] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE];
}
else if(AttributeName.Compare("item.damage.slash"))
{
- overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH] = baseItem->Weapon().Damage(PSITEMSTATS_DAMAGETYPE_SLASH);
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH]))
+ {
+ overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH] = baseItem->Weapon().Damage(PSITEMSTATS_DAMAGETYPE_SLASH);
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH];
}
else if(AttributeName.Compare("item.damage.pierce"))
{
- overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE] = baseItem->Weapon().Damage(PSITEMSTATS_DAMAGETYPE_PIERCE);
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE]))
+ {
+ overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE] = baseItem->Weapon().Damage(PSITEMSTATS_DAMAGETYPE_PIERCE);
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE];
}
else if(AttributeName.Compare("item.damage.blunt"))
{
- overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT] = baseItem->Weapon().Damage(PSITEMSTATS_DAMAGETYPE_BLUNT);
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT]))
+ {
+ overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT] = baseItem->Weapon().Damage(PSITEMSTATS_DAMAGETYPE_BLUNT);
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT];
}
else if(AttributeName.Compare("item.protection"))
{
+ for(int i = 0; i < 3; i++)
+ {
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[i]))
+ {
+ overlay->damageStats[i] = baseItem->Armor().Protection((PSITEMSTATS_DAMAGETYPE)i);
+ }
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH];
value[1] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT];
value[2] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE];
- for(int i = 0; i < 3; i++)
- overlay->damageStats[i] = baseItem->Armor().Protection((PSITEMSTATS_DAMAGETYPE)i);
}
else if(AttributeName.Compare("item.protection.slash"))
{
- overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH] = baseItem->Armor().Protection(PSITEMSTATS_DAMAGETYPE_SLASH);
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH]))
+ {
+ overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH] = baseItem->Armor().Protection(PSITEMSTATS_DAMAGETYPE_SLASH);
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_SLASH];
}
else if(AttributeName.Compare("item.protection.pierce"))
{
- overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE] = baseItem->Armor().Protection(PSITEMSTATS_DAMAGETYPE_PIERCE);
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE]))
+ {
+ overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE] = baseItem->Armor().Protection(PSITEMSTATS_DAMAGETYPE_PIERCE);
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_PIERCE];
}
else if(AttributeName.Compare("item.protection.blunt"))
{
- overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT] = baseItem->Armor().Protection(PSITEMSTATS_DAMAGETYPE_BLUNT);
+ // Initialize the value if needed
+ if(CS::IsNaN(overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT]))
+ {
+ overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT] = baseItem->Armor().Protection(PSITEMSTATS_DAMAGETYPE_BLUNT);
+ }
+
value[0] = &overlay->damageStats[PSITEMSTATS_DAMAGETYPE_BLUNT];
}
@@ -489,6 +543,7 @@
csString EffectOp = node->GetAttribute("operation")->GetValue();
csString EffectName = node->GetAttribute("name")->GetValue();
float EffectValue = node->GetAttribute("value")->GetValueAsFloat();
+
//Add to the Attributes
if(!SetAttribute(EffectOp, EffectName, EffectValue, overlay, baseItem, variableValues))
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|