case 4:rValue = IP_CONST_DAMAGETYPE_ELECTRICAL;break;
case 5:rValue = IP_CONST_DAMAGETYPE_ACID;break;
case 6:rValue = IP_CONST_DAMAGETYPE_SONIC;break;
case 7:rValue = IP_CONST_DAMAGETYPE_BLUDGEONING;break;
case 8:rValue = IP_CONST_DAMAGETYPE_SLASHING;break;
case 9:rValue = IP_CONST_DAMAGETYPE_PIERCING;break;
}
return rValue;
}
int EnhValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = 1;break;
case 2:rValue = 2;break;
case 3:rValue = 3;break;
case 4:rValue = 4;break;
case 5:rValue = 5;break;
case 6:rValue = 6;break;
case 7:rValue = 7;break;
case 8:rValue = 8;break;
case 9:rValue = 9;break;
case 10:rValue = 10;break;
case 11:rValue = IP_CONST_DAMAGEBONUS_1d4;break;
case 12:rValue = IP_CONST_DAMAGEBONUS_2d4;break;
case 13:rValue = IP_CONST_DAMAGEBONUS_2d6;break;
case 14:rValue = IP_CONST_DAMAGEBONUS_2d8;break;
case 15:rValue = IP_CONST_DAMAGEBONUS_1d6;break;
case 16:rValue = IP_CONST_DAMAGEBONUS_1d8;break;
case 17:rValue = IP_CONST_DAMAGEBONUS_1d10;break;
case 18:rValue = IP_CONST_DAMAGEBONUS_1d12;break;
case 19:rValue = IP_CONST_DAMAGEBONUS_2d10;break;
case 20:rValue = IP_CONST_DAMAGEBONUS_2d12;break;
}
return rValue;
}
int FeatValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_FEAT_ALERTNESS;break;
case 2:rValue = IP_CONST_FEAT_AMBIDEXTROUS;break;
case 3:rValue = IP_CONST_FEAT_ARMOR_PROF_HEAVY;break;
case 4:rValue = IP_CONST_FEAT_ARMOR_PROF_LIGHT;break;
case 5:rValue = IP_CONST_FEAT_ARMOR_PROF_MEDIUM;break;
case 6:rValue = IP_CONST_FEAT_CLEAVE;break;
case 7:rValue = IP_CONST_FEAT_COMBAT_CASTING;break;
case 8:rValue = IP_CONST_FEAT_DODGE;break;
case 9:rValue = IP_CONST_FEAT_EXTRA_TURNING;break;
case 10:rValue = IP_CONST_FEAT_IMPCRITUNARM;break;
case 11:rValue = IP_CONST_FEAT_KNOCKDOWN;break;
case 12:rValue = IP_CONST_FEAT_POINTBLANK;break;
case 13:rValue = IP_CONST_FEAT_POWERATTACK;break;
case 14:rValue = IP_CONST_FEAT_SPELLFOCUSABJ;break;
case 15:rValue = IP_CONST_FEAT_SPELLFOCUSCON;break;
case 16:rValue = IP_CONST_FEAT_SPELLFOCUSDIV;break;
case 17:rValue = IP_CONST_FEAT_SPELLFOCUSENC;break;
case 18:rValue = IP_CONST_FEAT_SPELLFOCUSEVO;break;
case 19:rValue = IP_CONST_FEAT_SPELLFOCUSILL;break;
case 20:rValue = IP_CONST_FEAT_SPELLFOCUSNEC;break;
case 21:rValue = IP_CONST_FEAT_SPELLPENETRATION;break;
case 22:rValue = IP_CONST_FEAT_TWO_WEAPON_FIGHTING;break;
case 23:rValue = IP_CONST_FEAT_WEAPFINESSE;break;
case 24:rValue = IP_CONST_FEAT_WEAPON_PROF_EXOTIC;break;
case 25:rValue = IP_CONST_FEAT_WEAPON_PROF_MARTIAL;break;
case 26:rValue = IP_CONST_FEAT_WEAPON_PROF_SIMPLE;break;
case 27:rValue = IP_CONST_FEAT_WEAPSPEUNARM;break;
}
return rValue;
}
int SoakValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_DAMAGEREDUCTION_1;break;
case 2:rValue = IP_CONST_DAMAGEREDUCTION_2;break;
case 3:rValue = IP_CONST_DAMAGEREDUCTION_3;break;
case 4:rValue = IP_CONST_DAMAGEREDUCTION_4;break;
case 5:rValue = IP_CONST_DAMAGEREDUCTION_5;break;
case 6:rValue = IP_CONST_DAMAGEREDUCTION_6;break;
}
return rValue;
}
int SoakAmount(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_DAMAGESOAK_5_HP;break;
case 2:rValue = IP_CONST_DAMAGESOAK_10_HP;break;
case 3:rValue = IP_CONST_DAMAGESOAK_15_HP;break;
case 4:rValue = IP_CONST_DAMAGESOAK_20_HP;break;
}
return rValue;
}
int SaveValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_SAVEBASETYPE_FORTITUDE;break;
case 2:rValue = IP_CONST_SAVEBASETYPE_REFLEX;break;
case 3:rValue = IP_CONST_SAVEBASETYPE_WILL;break;
}
return rValue;
}
int AbilityValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_ABILITY_CHA;break;
case 2:rValue = IP_CONST_ABILITY_CON;break;
case 3:rValue = IP_CONST_ABILITY_DEX;break;
case 4:rValue = IP_CONST_ABILITY_INT;break;
case 5:rValue = IP_CONST_ABILITY_STR;break;
case 6:rValue = IP_CONST_ABILITY_WIS;break;
}
return rValue;
}
int SkillValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = SKILL_ANIMAL_EMPATHY;break;
case 2:rValue = SKILL_APPRAISE;break;
case 3:rValue = SKILL_BLUFF;break;
case 4:rValue = SKILL_CONCENTRATION;break;
case 5:rValue = SKILL_CRAFT_ARMOR;break;
case 6:rValue = SKILL_CRAFT_TRAP;break;
case 7:rValue = SKILL_CRAFT_WEAPON;break;
case 8:rValue = SKILL_DISABLE_TRAP;break;
case 9:rValue = SKILL_DISCIPLINE;break;
case 10:rValue = SKILL_HEAL;break;
case 11:rValue = SKILL_HIDE;break;
case 12:rValue = SKILL_INTIMIDATE;break;
case 13:rValue = SKILL_LISTEN;break;
case 14:rValue = SKILL_LORE;break;
case 15:rValue = SKILL_MOVE_SILENTLY;break;
case 16:rValue = SKILL_OPEN_LOCK;break;
case 17:rValue = SKILL_PARRY;break;
case 18:rValue = SKILL_PERFORM;break;
case 19:rValue = SKILL_PERSUADE;break;
case 20:rValue = SKILL_PICK_POCKET;break;
case 21:rValue = SKILL_SEARCH;break;
case 22:rValue = SKILL_SET_TRAP;break;
case 23:rValue = SKILL_SPELLCRAFT;break;
case 24:rValue = SKILL_SPOT;break;
case 25:rValue = SKILL_TAUNT;break;
case 26:rValue = SKILL_TUMBLE;break;
case 27:rValue = SKILL_USE_MAGIC_DEVICE;break;
}
return rValue;
}
int SpellResValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_SPELLRESISTANCEBONUS_10;break;
case 2:rValue = IP_CONST_SPELLRESISTANCEBONUS_12;break;
case 3:rValue = IP_CONST_SPELLRESISTANCEBONUS_14;break;
case 4:rValue = IP_CONST_SPELLRESISTANCEBONUS_16;break;
case 5:rValue = IP_CONST_SPELLRESISTANCEBONUS_18;break;
case 6:rValue = IP_CONST_SPELLRESISTANCEBONUS_20;break;
case 7:rValue = IP_CONST_SPELLRESISTANCEBONUS_22;break;
case 8:rValue = IP_CONST_SPELLRESISTANCEBONUS_24;break;
case 9:rValue = IP_CONST_SPELLRESISTANCEBONUS_26;break;
case 10:rValue = IP_CONST_SPELLRESISTANCEBONUS_28;break;
case 11:rValue = IP_CONST_SPELLRESISTANCEBONUS_30;break;
case 12:rValue = IP_CONST_SPELLRESISTANCEBONUS_32;break;
}
return rValue;
}
int AmmoType(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_UNLIMITEDAMMO_BASIC;break;
case 2:rValue = IP_CONST_UNLIMITEDAMMO_1D6COLD;break;
case 3:rValue = IP_CONST_UNLIMITEDAMMO_1D6FIRE;break;
case 4:rValue = IP_CONST_UNLIMITEDAMMO_1D6LIGHT;break;
case 5:rValue = IP_CONST_UNLIMITEDAMMO_PLUS1;break;
case 6:rValue = IP_CONST_UNLIMITEDAMMO_PLUS2;break;
case 7:rValue = IP_CONST_UNLIMITEDAMMO_PLUS3;break;
case 8:rValue = IP_CONST_UNLIMITEDAMMO_PLUS4;break;
case 9:rValue = IP_CONST_UNLIMITEDAMMO_PLUS5;break;
}
return rValue;
}
int VisualType(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = ITEM_VISUAL_ACID;break;
case 2:rValue = ITEM_VISUAL_COLD;break;
case 3:rValue = ITEM_VISUAL_ELECTRICAL;break;
case 4:rValue = ITEM_VISUAL_EVIL;break;
case 5:rValue = ITEM_VISUAL_FIRE;break;
case 6:rValue = ITEM_VISUAL_HOLY;break;
case 7:rValue = ITEM_VISUAL_SONIC;break;
}
return rValue;
}
int SpellClass(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_CLASS_BARD;break;
case 2:rValue = IP_CONST_CLASS_CLERIC;break;
case 3:rValue = IP_CONST_CLASS_DRUID;break;
case 4:rValue = IP_CONST_CLASS_PALADIN;break;
case 5:rValue = IP_CONST_CLASS_RANGER;break;
case 6:rValue = IP_CONST_CLASS_SORCERER;break;
case 7:rValue = IP_CONST_CLASS_WIZARD;break;
}
return rValue;
}
int ImmunityPercent(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_DAMAGEIMMUNITY_5_PERCENT;break;
case 2:rValue = IP_CONST_DAMAGEIMMUNITY_10_PERCENT;break;
case 3:rValue = IP_CONST_DAMAGEIMMUNITY_25_PERCENT;break;
case 4:rValue = IP_CONST_DAMAGEIMMUNITY_50_PERCENT;break;
case 5:rValue = IP_CONST_DAMAGEIMMUNITY_75_PERCENT;break;
case 6:rValue = IP_CONST_DAMAGEIMMUNITY_90_PERCENT;break;
case 7:rValue = IP_CONST_DAMAGEIMMUNITY_100_PERCENT;break;
}
return rValue;
}
int ImmunityValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_IMMUNITYMISC_DEATH_MAGIC;break;
case 2:rValue = IP_CONST_IMMUNITYMISC_DISEASE;break;
case 3:rValue = IP_CONST_IMMUNITYMISC_FEAR;break;
case 4:rValue = IP_CONST_IMMUNITYMISC_KNOCKDOWN;break;
case 5:rValue = IP_CONST_IMMUNITYMISC_LEVEL_ABIL_DRAIN;break;
case 6:rValue = IP_CONST_IMMUNITYMISC_MINDSPELLS;break;
case 7:rValue = IP_CONST_IMMUNITYMISC_PARALYSIS;break;
case 8:rValue = IP_CONST_IMMUNITYMISC_POISON;break;
}
return rValue;
}
int IsEnhanced(int Token)
{
if(Token >= 2){return 0;}else{return 1;}
}
int IsSpecial(int Token)
{
if(Token < 10){return 0;}else{return 1;}
}
int ResValue(int Token)
{
int rValue = 0;
switch(Token){
case 1:rValue = IP_CONST_DAMAGERESIST_5;break;
case 2:rValue = IP_CONST_DAMAGERESIST_10;break;
case 3:rValue = IP_CONST_DAMAGERESIST_15;break;
case 4:rValue = IP_CONST_DAMAGERESIST_20;break;
}
return rValue;
}
int GetHasTokens(object oPC, int Count)
{
int Total = 0;
object oToken = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oToken))
{
if(GetTag(oToken) == "ldf_token")
{
Total = Total + GetItemStackSize(oToken);
}
oToken = GetNextItemInInventory(oPC);
}
return Total >= Count;
}
void GetTokens(object oPC, int Count)
{
int Done = FALSE;
object oToken = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oToken) && !Done)
{
if(GetTag(oToken) == "ldf_token")
{
int iStack = GetItemStackSize(oToken);
if(iStack > Count)
{
SetItemStackSize(oToken,(iStack-Count));
Done = TRUE;
} else {
Count = Count - iStack;
DestroyObject(oToken);
}
}
oToken = GetNextItemInInventory(oPC);
}
}
void ModGauntlets(object oTarget,string sTag)
{
string sToken = GetStringRight(sTag,2);
string sType = GetStringLeft(sToken,1);
string sValue = GetStringRight(sToken,1);
string sSpecial = GetStringLeft(sTag,1);
if(IsSpecial(TagDecode(sType))){
switch(TagDecode(sType)){
case 10:IPSafeAddItemProperty(oTarget,Enhancement(10));break;
case 21:IPSafeAddItemProperty(oTarget,Enhancement(21,ImmunityValue(TagDecode(sValue))));break;
case 22:IPSafeAddItemProperty(oTarget,Enhancement(22,AbilityValue(TagDecode(sSpecial)),TagDecode(sValue)));break;
case 23:IPSafeAddItemProperty(oTarget,Enhancement(23));break;
case 24:IPSafeAddItemProperty(oTarget,Enhancement(24,SkillValue(TagDecode(sSpecial)),TagDecode(sValue)));break;
case 25:IPSafeAddItemProperty(oTarget,Enhancement(25));break;
case 26:IPSafeAddItemProperty(oTarget,Enhancement(26,SoakValue(TagDecode(sSpecial)),SoakAmount(TagDecode(sValue))));break;
case 27:IPSafeAddItemProperty(oTarget,Enhancement(27,SaveValue(TagDecode(sSpecial)),TagDecode(sValue)));break;
case 28:IPSafeAddItemProperty(oTarget,Enhancement(28,FeatValue(TagDecode(sValue))));break;
case 29:IPSafeAddItemProperty(oTarget,Enhancement(29,TagDecode(sValue)));break;
case 31:IPSafeAddItemProperty(oTarget,Enhancement(31,SpellResValue(TagDecode(sValue))));break;
case 32:IPSafeAddItemProperty(oTarget,Enhancement(32,SpellClass(TagDecode(sSpecial)),TagDecode(sValue)),0.0,X2_IP_ADDPROP_POLICY_IGNORE_EXISTING);break;
case 33:IPSafeAddItemProperty(oTarget,Enhancement(33));break;
case 34:IPSafeAddItemProperty(oTarget,Enhancement(34,DmgType(TagDecode(sSpecial)),ImmunityPercent(TagDecode(sValue))));break;
case 21:IPSafeAddItemProperty(oTarget,Enhancement(21,ImmunityValue(TagDecode(sValue))));break;
case 22:IPSafeAddItemProperty(oTarget,Enhancement(22,AbilityValue(TagDecode(sSpecial)),TagDecode(sValue)));break;
case 23:IPSafeAddItemProperty(oTarget,Enhancement(23));break;
case 24:IPSafeAddItemProperty(oTarget,Enhancement(24,SkillValue(TagDecode(sSpecial)),TagDecode(sValue)));break;
case 25:IPSafeAddItemProperty(oTarget,Enhancement(25));break;
case 26:IPSafeAddItemProperty(oTarget,Enhancement(26,SoakValue(TagDecode(sSpecial)),SoakAmount(TagDecode(sValue))));break;
case 27:IPSafeAddItemProperty(oTarget,Enhancement(27,SaveValue(TagDecode(sSpecial)),TagDecode(sValue)));break;
case 28:IPSafeAddItemProperty(oTarget,Enhancement(28,FeatValue(TagDecode(sValue))));break;
case 29:IPSafeAddItemProperty(oTarget,Enhancement(29,TagDecode(sValue)));break;
case 30:if(IPGetIsMeleeWeapon(oTarget)){
IPSafeAddItemProperty(oTarget,Enhancement(30));
}break;
case 31:IPSafeAddItemProperty(oTarget,Enhancement(31,SpellResValue(TagDecode(sValue))));break;
case 32:IPSafeAddItemProperty(oTarget,Enhancement(32,SpellClass(TagDecode(sSpecial)),TagDecode(sValue)),0.0,X2_IP_ADDPROP_POLICY_IGNORE_EXISTING);break;
case 33:IPSafeAddItemProperty(oTarget,Enhancement(33));break;
case 34:IPSafeAddItemProperty(oTarget,Enhancement(34,DmgType(TagDecode(sSpecial)),ImmunityPercent(TagDecode(sValue))));break;