530 lines
30 KiB
Plaintext
530 lines
30 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////////
|
|
// Unique Dragon Isle Treasure
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
#include "x2_inc_itemprop"
|
|
|
|
object fnBaseItem(string sRes,object oLocation)
|
|
{ // create base item and set it to plot and proper tag
|
|
object oItem=CreateObject(OBJECT_TYPE_ITEM,sRes,GetLocation(oLocation),FALSE,"rts_it_magic");
|
|
SetPlotFlag(oItem,TRUE);
|
|
return oItem;
|
|
} // fnBaseItem()
|
|
|
|
itemproperty fnWeaponProperty(int nType=0)
|
|
{ // type 0=common,1=uncommon,2=rare
|
|
itemproperty iRet;
|
|
int nR=d20();
|
|
int nN;
|
|
if (nType==0)
|
|
{ // common
|
|
if (nR<6) iRet=ItemPropertyAttackBonus(1);
|
|
else if (nR<9) iRet=ItemPropertyAttackBonus(2);
|
|
else if (nR<11) iRet=ItemPropertyAttackBonus(3);
|
|
else if (nR==11) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ACID,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==12) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==13) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==14) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==15) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ELECTRICAL,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==16) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_FIRE,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==17) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_NEGATIVE,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==18) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_PIERCING,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==19) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_POSITIVE,IP_CONST_DAMAGEBONUS_1);
|
|
else if (nR==20) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_SONIC,IP_CONST_DAMAGEBONUS_1);
|
|
} // common
|
|
else if (nType==1)
|
|
{ // uncommon
|
|
if (nR==1) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_WOUNDING,1);
|
|
else if (nR==2) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ACID,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==3) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==4) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==5) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_DIVINE,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==6) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ELECTRICAL,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==7) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_FIRE,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==8) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_NEGATIVE,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==9) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_PIERCING,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==10) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_POSITIVE,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==11) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_SONIC,IP_CONST_DAMAGEBONUS_1d4);
|
|
else if (nR==12) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_DISEASE,DISEASE_SHAKES);
|
|
else if (nR==13) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_ITEMPOISON,POISON_BLACK_ADDER_VENOM);
|
|
else if (nR==14) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_SLOW);
|
|
else if (nR==15) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_STUN);
|
|
else if (nR==16) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_FEAR);
|
|
else if (nR==17) iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_DAZE);
|
|
else if (nR>17)
|
|
{ // bonus vs.
|
|
nR=d20();
|
|
if (nR==1) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_ABERRATION,4);
|
|
else if (nR==2) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_ANIMAL,4);
|
|
else if (nR==3) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_BEAST,4);
|
|
else if (nR==4) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_CONSTRUCT,4);
|
|
else if (nR==5) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_DRAGON,4);
|
|
else if (nR==6) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_DWARF,4);
|
|
else if (nR==7) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_ELEMENTAL,4);
|
|
else if (nR==8) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_ELF,4);
|
|
else if (nR==9) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_FEY,4);
|
|
else if (nR==10) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_GIANT,4);
|
|
else if (nR==11) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_HUMAN,4);
|
|
else if (nR==12) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_HUMANOID_GOBLINOID,4);
|
|
else if (nR==13) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_HUMANOID_MONSTROUS,4);
|
|
else if (nR==14) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_HUMANOID_ORC,4);
|
|
else if (nR==15) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_HUMANOID_REPTILIAN,4);
|
|
else if (nR==16) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_MAGICAL_BEAST,4);
|
|
else if (nR==17) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_OUTSIDER,4);
|
|
else if (nR==18) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_SHAPECHANGER,4);
|
|
else if (nR==19) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_UNDEAD,4);
|
|
else if (nR==20) iRet=ItemPropertyAttackBonusVsRace(IP_CONST_RACIALTYPE_VERMIN,4);
|
|
} // bonus vs.
|
|
} // uncommon
|
|
else if (nType==2)
|
|
{ // rare
|
|
if (nR==1)iRet=ItemPropertyACBonusVsAlign(IP_CONST_ALIGNMENTGROUP_CHAOTIC,2);
|
|
else if (nR==2)iRet=ItemPropertyACBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,2);
|
|
else if (nR==3)iRet=ItemPropertyACBonusVsAlign(IP_CONST_ALIGNMENTGROUP_GOOD,2);
|
|
else if (nR==4)iRet=ItemPropertyACBonusVsAlign(IP_CONST_ALIGNMENTGROUP_LAWFUL,2);
|
|
else if (nR==5)iRet=ItemPropertyACBonusVsAlign(IP_CONST_ALIGNMENTGROUP_NEUTRAL,2);
|
|
else if (nR==6)iRet=ItemPropertyAttackBonusVsAlign(IP_CONST_ALIGNMENTGROUP_CHAOTIC,5);
|
|
else if (nR==7)iRet=ItemPropertyAttackBonusVsAlign(IP_CONST_ALIGNMENTGROUP_EVIL,5);
|
|
else if (nR==8)iRet=ItemPropertyAttackBonusVsAlign(IP_CONST_ALIGNMENTGROUP_GOOD,5);
|
|
else if (nR==9)iRet=ItemPropertyAttackBonusVsAlign(IP_CONST_ALIGNMENTGROUP_LAWFUL,5);
|
|
else if (nR==10)iRet=ItemPropertyAttackBonusVsAlign(IP_CONST_ALIGNMENTGROUP_NEUTRAL,5);
|
|
else if (nR==11)iRet=ItemPropertyOnMonsterHitProperties(IP_CONST_ONHIT_WOUNDING,3);
|
|
else if (nR==12) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ACID,IP_CONST_DAMAGEBONUS_2d4);
|
|
else if (nR==13) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEBONUS_2d4);
|
|
else if (nR==14) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_FIRE,IP_CONST_DAMAGEBONUS_2d4);
|
|
else if (nR==15) iRet=ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ELECTRICAL,IP_CONST_DAMAGEBONUS_2d4);
|
|
else if (nR==16) iRet=ItemPropertyVampiricRegeneration(3);
|
|
else if (nR==17) iRet=ItemPropertyVampiricRegeneration(4);
|
|
else if (nR==18) iRet=ItemPropertyVampiricRegeneration(5);
|
|
else if (nR==19) iRet=ItemPropertyMassiveCritical(IP_CONST_DAMAGEBONUS_2d8);
|
|
else if (nR==20) iRet=ItemPropertySkillBonus(SKILL_TUMBLE,10);
|
|
} // rare
|
|
return iRet;
|
|
} // fnWeaponProperty()
|
|
|
|
itemproperty fnHelmetProperty(int nType=0)
|
|
{ // type 0=common,1=uncommon,2=rare
|
|
itemproperty iRet;
|
|
int nR=d20();
|
|
int nN;
|
|
if (nType==0)
|
|
{ // common
|
|
if (nR==1) iRet=ItemPropertySkillBonus(SKILL_TUMBLE,2);
|
|
else if (nR==2) iRet=ItemPropertySkillBonus(SKILL_ANIMAL_EMPATHY,2);
|
|
else if (nR==3) iRet=ItemPropertySkillBonus(SKILL_APPRAISE,2);
|
|
else if (nR==4) iRet=ItemPropertySkillBonus(SKILL_CONCENTRATION,2);
|
|
else if (nR==5) iRet=ItemPropertySkillBonus(SKILL_DISCIPLINE,2);
|
|
else if (nR==6) iRet=ItemPropertySkillBonus(SKILL_HEAL,2);
|
|
else if (nR==7) iRet=ItemPropertySkillBonus(SKILL_HIDE,2);
|
|
else if (nR==8) iRet=ItemPropertySkillBonus(SKILL_LISTEN,2);
|
|
else if (nR==9) iRet=ItemPropertySkillBonus(SKILL_LORE,2);
|
|
else if (nR==10) iRet=ItemPropertySkillBonus(SKILL_MOVE_SILENTLY,2);
|
|
else if (nR==11) iRet=ItemPropertySkillBonus(SKILL_PARRY,2);
|
|
else if (nR==12) iRet=ItemPropertySkillBonus(SKILL_SEARCH,2);
|
|
else if (nR==13) iRet=ItemPropertySkillBonus(SKILL_SPELLCRAFT,2);
|
|
else if (nR==14) iRet=ItemPropertySkillBonus(SKILL_SPOT,2);
|
|
else if (nR==15) iRet=ItemPropertySkillBonus(SKILL_INTIMIDATE,3);
|
|
else if (nR>15) iRet=ItemPropertyDarkvision();
|
|
} // common
|
|
else if (nType==1)
|
|
{ // uncommon
|
|
if (nR<11) iRet=ItemPropertyACBonus(1);
|
|
else if (nR==11) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CHA,1);
|
|
else if (nR==12) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CON,1);
|
|
else if (nR==13) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_DEX,1);
|
|
else if (nR==14) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_INT,1);
|
|
else if (nR==15) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_STR,1);
|
|
else if (nR==16) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_WIS,1);
|
|
else if (nR==17) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CURE_LIGHT_WOUNDS_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==18) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BARKSKIN_3,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==19) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_INFLICT_LIGHT_WOUNDS_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==20) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_LIGHT_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
} // uncommon
|
|
else if (nType==2)
|
|
{ // rare
|
|
if (nR==1) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_ANIMATE_DEAD_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==2) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BESTOW_CURSE_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==3) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BULLS_STRENGTH_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==4) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CALL_LIGHTNING_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==5) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CHARM_PERSON_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==6) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CLAIRAUDIENCE_CLAIRVOYANCE_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==7) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CONTINUAL_FLAME_7,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==8) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CURE_SERIOUS_WOUNDS_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==9) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_DISPEL_MAGIC_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==10) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_DRAGON_BREATH_COLD_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==11) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_DRAGON_BREATH_FIRE_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==12) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_ELEMENTAL_SHIELD_12,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==13) iRet=ItemPropertyTrueSeeing();
|
|
else if (nR==14) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_FREEDOM_OF_MOVEMENT_7,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==15) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_GLOBE_OF_INVULNERABILITY_11,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==16) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_INVISIBILITY_3,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==17) iRet=ItemPropertyRegeneration(1);
|
|
else if (nR==18) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_ALERTNESS);
|
|
else if (nR==19) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_EXTRA_TURNING);
|
|
else if (nR==20) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_DODGE);
|
|
} // rare
|
|
return iRet;
|
|
} // fnHelmetProperty()
|
|
|
|
itemproperty fnShieldProperty(int nType=0)
|
|
{ // type 0=common,1=uncommon,2=rare
|
|
itemproperty iRet;
|
|
int nR=d20();
|
|
int nN;
|
|
if (nType==0)
|
|
{ // common
|
|
if (nR<11) iRet=ItemPropertyACBonus(1);
|
|
else if (nR<19) iRet=ItemPropertyLight(IP_CONST_LIGHTBRIGHTNESS_LOW,IP_CONST_LIGHTCOLOR_WHITE);
|
|
else { iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_NEGATIVE,5); }
|
|
} // common
|
|
else if (nType==1)
|
|
{ // uncommon
|
|
if (nR<11) iRet=ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1,IP_CONST_DAMAGESOAK_5_HP);
|
|
else if (nR==11) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CHA,1);
|
|
else if (nR==12) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CON,1);
|
|
else if (nR==13) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_DEX,1);
|
|
else if (nR==14) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_INT,1);
|
|
else if (nR==15) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_STR,1);
|
|
else if (nR==16) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_WIS,1);
|
|
else if (nR==17) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CURE_LIGHT_WOUNDS_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==18) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BARKSKIN_3,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==19) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_INFLICT_LIGHT_WOUNDS_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==20) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_LIGHT_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
} // uncommon
|
|
else if (nType==2)
|
|
{ // rare
|
|
if (nR==1) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_ANIMATE_DEAD_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==2) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BESTOW_CURSE_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==3) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BULLS_STRENGTH_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==4) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CALL_LIGHTNING_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==5) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CHARM_PERSON_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==6) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CLAIRAUDIENCE_CLAIRVOYANCE_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==7) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CONTINUAL_FLAME_7,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==8) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CURE_SERIOUS_WOUNDS_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==9) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_DISPEL_MAGIC_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==10) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_DRAGON_BREATH_COLD_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==11) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_DRAGON_BREATH_FIRE_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==12) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_ELEMENTAL_SHIELD_12,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==13) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_EVARDS_BLACK_TENTACLES_7,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==14) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_FREEDOM_OF_MOVEMENT_7,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==15) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_GLOBE_OF_INVULNERABILITY_11,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==16) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_INVISIBILITY_3,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==17) iRet=ItemPropertyRegeneration(1);
|
|
else if (nR==18) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_ALERTNESS);
|
|
else if (nR==19) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_EXTRA_TURNING);
|
|
else if (nR==20) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_DODGE);
|
|
} // rare
|
|
return iRet;
|
|
} // fnWeaponProperty()
|
|
|
|
itemproperty fnArmorProperty(int nType=0)
|
|
{ // type 0=common,1=uncommon,2=rare
|
|
itemproperty iRet;
|
|
int nR=d20();
|
|
int nN;
|
|
if (nType==0)
|
|
{ // common
|
|
if (nR<10) iRet=ItemPropertyACBonus(1);
|
|
else if (nR==10) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_NEGATIVE,5);
|
|
else if (nR==11) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ACID,5);
|
|
else if (nR==12) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_BLUDGEONING,5);
|
|
else if (nR==13) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_COLD,5);
|
|
else if (nR==14) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_DIVINE,5);
|
|
else if (nR==15) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_ELECTRICAL,5);
|
|
else if (nR==16) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_FIRE,5);
|
|
else if (nR==17) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_PIERCING,5);
|
|
else if (nR==18) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_POSITIVE,5);
|
|
else if (nR==19) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SLASHING,5);
|
|
else if (nR==20) iRet=ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_SONIC,5);
|
|
} // common
|
|
else if (nType==1)
|
|
{ // uncommon
|
|
if (nR<11) iRet=ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1,IP_CONST_DAMAGESOAK_5_HP);
|
|
else if (nR==11) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CHA,1);
|
|
else if (nR==12) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CON,1);
|
|
else if (nR==13) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_DEX,1);
|
|
else if (nR==14) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_INT,1);
|
|
else if (nR==15) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_STR,1);
|
|
else if (nR==16) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_WIS,1);
|
|
else if (nR==17) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CURE_LIGHT_WOUNDS_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==18) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BARKSKIN_3,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==19) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_INFLICT_LIGHT_WOUNDS_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==20) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_LIGHT_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
} // uncommon
|
|
else if (nType==2)
|
|
{ // rare
|
|
if (nR==1) iRet=ItemPropertyRegeneration(1);
|
|
else if (nR==2) iRet=ItemPropertyTrueSeeing();
|
|
else if (nR==3) iRet=ItemPropertyWeightReduction(IP_CONST_WEIGHTINCREASE_10_LBS);
|
|
else if (nR==4) iRet=ItemPropertyWeightReduction(IP_CONST_WEIGHTINCREASE_15_LBS);
|
|
else if (nR==5) iRet=ItemPropertyWeightReduction(IP_CONST_WEIGHTINCREASE_30_LBS);
|
|
else if (nR==6) iRet=ItemPropertyWeightReduction(IP_CONST_WEIGHTINCREASE_50_LBS);
|
|
else if (nR==7) iRet=ItemPropertyWeightReduction(IP_CONST_WEIGHTINCREASE_100_LBS);
|
|
else if (nR==8) iRet=ItemPropertyHaste();
|
|
else if (nR==9) iRet=ItemPropertyImprovedEvasion();
|
|
else if (nR==10) iRet=ItemPropertyFreeAction();
|
|
else if (nR==11) iRet=ItemPropertyDarkvision();
|
|
else if (nR==12) iRet=ItemPropertyDamageReduction(IP_CONST_DAMAGEREDUCTION_1,IP_CONST_DAMAGESOAK_5_HP);
|
|
else if (nR==13) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CHA,2);
|
|
else if (nR==14) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_CON,2);
|
|
else if (nR==15) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_DEX,2);
|
|
else if (nR==16) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_INT,2);
|
|
else if (nR==17) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_STR,2);
|
|
else if (nR==18) iRet=ItemPropertyAbilityBonus(IP_CONST_ABILITY_WIS,2);
|
|
else if (nR==19) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CURE_SERIOUS_WOUNDS_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==20) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BULLS_STRENGTH_10,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
} // rare
|
|
return iRet;
|
|
} // fnArmorProperty()
|
|
|
|
itemproperty fnMiscProperty(int nType=0)
|
|
{ // type 0=common,1=uncommon,2=rare
|
|
itemproperty iRet;
|
|
int nR=d20();
|
|
int nN;
|
|
if (nType==0)
|
|
{ // common
|
|
if (nR==1) iRet=ItemPropertySkillBonus(SKILL_TUMBLE,2);
|
|
else if (nR==2) iRet=ItemPropertySkillBonus(SKILL_ANIMAL_EMPATHY,2);
|
|
else if (nR==3) iRet=ItemPropertySkillBonus(SKILL_APPRAISE,2);
|
|
else if (nR==4) iRet=ItemPropertySkillBonus(SKILL_CONCENTRATION,2);
|
|
else if (nR==5) iRet=ItemPropertySkillBonus(SKILL_DISCIPLINE,2);
|
|
else if (nR==6) iRet=ItemPropertySkillBonus(SKILL_HEAL,2);
|
|
else if (nR==7) iRet=ItemPropertySkillBonus(SKILL_HIDE,2);
|
|
else if (nR==8) iRet=ItemPropertySkillBonus(SKILL_LISTEN,2);
|
|
else if (nR==9) iRet=ItemPropertySkillBonus(SKILL_LORE,2);
|
|
else if (nR==10) iRet=ItemPropertySkillBonus(SKILL_MOVE_SILENTLY,2);
|
|
else if (nR==11) iRet=ItemPropertySkillBonus(SKILL_PARRY,2);
|
|
else if (nR==12) iRet=ItemPropertySkillBonus(SKILL_SEARCH,2);
|
|
else if (nR==13) iRet=ItemPropertySkillBonus(SKILL_SPELLCRAFT,2);
|
|
else if (nR==14) iRet=ItemPropertySkillBonus(SKILL_SPOT,2);
|
|
else if (nR==15) iRet=ItemPropertySkillBonus(SKILL_INTIMIDATE,2);
|
|
else if (nR==16) iRet=ItemPropertySkillBonus(SKILL_BLUFF,2);
|
|
else if (nR==17) iRet=ItemPropertySkillBonus(SKILL_PERFORM,2);
|
|
else if (nR==18) iRet=ItemPropertySkillBonus(SKILL_PERSUADE,2);
|
|
else if (nR==19) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_EXTRA_TURNING);
|
|
else if (nR==20) iRet=ItemPropertyBonusFeat(IP_CONST_FEAT_COMBAT_CASTING);
|
|
} // common
|
|
else if (nType==1)
|
|
{ // uncommon
|
|
if (nR==1) iRet=ItemPropertySkillBonus(SKILL_TUMBLE,4);
|
|
else if (nR==2) iRet=ItemPropertySkillBonus(SKILL_ANIMAL_EMPATHY,4);
|
|
else if (nR==3) iRet=ItemPropertySkillBonus(SKILL_APPRAISE,4);
|
|
else if (nR==4) iRet=ItemPropertySkillBonus(SKILL_CONCENTRATION,4);
|
|
else if (nR==5) iRet=ItemPropertySkillBonus(SKILL_DISCIPLINE,4);
|
|
else if (nR==6) iRet=ItemPropertySkillBonus(SKILL_HEAL,4);
|
|
else if (nR==7) iRet=ItemPropertySkillBonus(SKILL_HIDE,4);
|
|
else if (nR==8) iRet=ItemPropertySkillBonus(SKILL_LISTEN,4);
|
|
else if (nR==9) iRet=ItemPropertySkillBonus(SKILL_LORE,4);
|
|
else if (nR==10) iRet=ItemPropertySkillBonus(SKILL_MOVE_SILENTLY,4);
|
|
else if (nR==11) iRet=ItemPropertySkillBonus(SKILL_PARRY,4);
|
|
else if (nR==12) iRet=ItemPropertySkillBonus(SKILL_SEARCH,4);
|
|
else if (nR==13) iRet=ItemPropertySkillBonus(SKILL_SPELLCRAFT,4);
|
|
else if (nR==14) iRet=ItemPropertySkillBonus(SKILL_SPOT,4);
|
|
else if (nR==15) iRet=ItemPropertySkillBonus(SKILL_INTIMIDATE,4);
|
|
else if (nR==16) iRet=ItemPropertySkillBonus(SKILL_BLUFF,4);
|
|
else if (nR==17) iRet=ItemPropertySkillBonus(SKILL_PERFORM,4);
|
|
else if (nR==18) iRet=ItemPropertySkillBonus(SKILL_PERSUADE,4);
|
|
else if (nR==19) iRet=ItemPropertyDarkvision();
|
|
else if (nR==20) iRet=ItemPropertyLight(IP_CONST_LIGHTBRIGHTNESS_NORMAL,IP_CONST_LIGHTCOLOR_PURPLE);
|
|
} // uncommon
|
|
else if (nType==2)
|
|
{ // rare
|
|
if (nR==1) iRet=ItemPropertyTrueSeeing();
|
|
else if (nR==2) iRet=ItemPropertyRegeneration(1);
|
|
else if (nR==3) iRet=ItemPropertyHaste();
|
|
else if (nR==4) iRet=ItemPropertyFreeAction();
|
|
else if (nR==5) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_ACID,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==6) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_BLUDGEONING,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==7) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_COLD,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==8) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_ELECTRICAL,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==9) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_FIRE,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==10) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_PIERCING,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==11) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_SLASHING,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==12) iRet=ItemPropertyDamageImmunity(IP_CONST_DAMAGETYPE_SONIC,IP_CONST_DAMAGEIMMUNITY_50_PERCENT);
|
|
else if (nR==13) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_SUNBEAM_13,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==14) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_SPIKE_GROWTH_9,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==15) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BIGBYS_GRASPING_HAND_17,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==16) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_BIGBYS_INTERPOSING_HAND_15,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==17) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_STONESKIN_7,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==18) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CONTROL_UNDEAD_13,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==19) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_CREATE_UNDEAD_11,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
else if (nR==20) iRet=ItemPropertyCastSpell(IP_CONST_CASTSPELL_STONE_TO_FLESH_5,IP_CONST_CASTSPELL_NUMUSES_1_USE_PER_DAY);
|
|
} // rare
|
|
return iRet;
|
|
} // fnMiscProperty()
|
|
|
|
object fnUniqueItem(object oAt,int nRare=0,int nUncommon=1,int nCommon=0)
|
|
{
|
|
object oItem;
|
|
itemproperty iP;
|
|
int nR;
|
|
int nN;
|
|
int nL;
|
|
nR=d100();
|
|
if (nR<31)
|
|
{ // weapon magic item
|
|
nR=Random(22)+1;
|
|
if (nR==1) oItem=fnBaseItem("nw_waxbt001",oAt);
|
|
else if (nR==2) oItem=fnBaseItem("nw_waxgr001",oAt);
|
|
else if (nR==3) oItem=fnBaseItem("nw_wswbs001",oAt);
|
|
else if (nR==4) oItem=fnBaseItem("nw_wswdg001",oAt);
|
|
else if (nR==5) oItem=fnBaseItem("nw_wswgs001",oAt);
|
|
else if (nR==6) oItem=fnBaseItem("nw_wswls001",oAt);
|
|
else if (nR==7) oItem=fnBaseItem("nw_wswss001",oAt);
|
|
else if (nR==8) oItem=fnBaseItem("nw_wswka001",oAt);
|
|
else if (nR==9) oItem=fnBaseItem("nw_wswsc001",oAt);
|
|
else if (nR==10) oItem=fnBaseItem("nw_wblcl001",oAt);
|
|
else if (nR==11) oItem=fnBaseItem("nw_wblfh001",oAt);
|
|
else if (nR==12) oItem=fnBaseItem("nw_wblfl001",oAt);
|
|
else if (nR==13) oItem=fnBaseItem("nw_wblhl001",oAt);
|
|
else if (nR==14) oItem=fnBaseItem("nw_wblhw001",oAt);
|
|
else if (nR==15) oItem=fnBaseItem("nw_wblml001",oAt);
|
|
else if (nR==16) oItem=fnBaseItem("nw_wblms001",oAt);
|
|
else if (nR==17) oItem=fnBaseItem("nw_wdbqs001",oAt);
|
|
else if (nR==18) oItem=fnBaseItem("nw_wspka001",oAt);
|
|
else if (nR==19) oItem=fnBaseItem("nw_wspku001",oAt);
|
|
else if (nR==20) oItem=fnBaseItem("x2_it_wpwhip",oAt);
|
|
else if (nR==21) oItem=fnBaseItem("x2_wdwraxe001",oAt);
|
|
else if (nR==22) oItem=fnBaseItem("nw_wplhb001",oAt);
|
|
nL=1;
|
|
while(nL<=nRare)
|
|
{ // rare properties
|
|
IPSafeAddItemProperty(oItem,fnWeaponProperty(2));
|
|
nL++;
|
|
} // rare properties
|
|
nL=1;
|
|
while(nL<=nUncommon)
|
|
{ // uncommon properties
|
|
IPSafeAddItemProperty(oItem,fnWeaponProperty(1));
|
|
nL++;
|
|
} // uncommon properties
|
|
nL=1;
|
|
while(nL<=nCommon)
|
|
{ // common properties
|
|
IPSafeAddItemProperty(oItem,fnWeaponProperty(0));
|
|
nL++;
|
|
} // common properties
|
|
} // weapon magic item
|
|
else if (nR<41)
|
|
{ // helmet magic item
|
|
nR=Random(3)+1;
|
|
if (nR==1) oItem=fnBaseItem("nw_arhe004",oAt);
|
|
else if (nR==2) oItem=fnBaseItem("x2_it_arhelm01",oAt);
|
|
else if (nR==3) oItem=fnBaseItem("nw_arhe002",oAt);
|
|
nL=1;
|
|
while(nL<=nRare)
|
|
{ // rare properties
|
|
IPSafeAddItemProperty(oItem,fnHelmetProperty(2));
|
|
nL++;
|
|
} // rare properties
|
|
nL=1;
|
|
while(nL<=nUncommon)
|
|
{ // uncommon properties
|
|
IPSafeAddItemProperty(oItem,fnHelmetProperty(1));
|
|
nL++;
|
|
} // uncommon properties
|
|
nL=1;
|
|
while(nL<=nCommon)
|
|
{ // common properties
|
|
IPSafeAddItemProperty(oItem,fnHelmetProperty(0));
|
|
nL++;
|
|
} // common properties
|
|
} // helmet magic item
|
|
else if (nR<56)
|
|
{ // shield magic item
|
|
nR=Random(3)+1;
|
|
if (nR==1) oItem=fnBaseItem("nw_ashsw001",oAt);
|
|
else if (nR==2) oItem=fnBaseItem("nw_ashlw001",oAt);
|
|
else if (nR==3) oItem=fnBaseItem("nw_ashto001",oAt);
|
|
nL=1;
|
|
while(nL<=nRare)
|
|
{ // rare properties
|
|
IPSafeAddItemProperty(oItem,fnShieldProperty(2));
|
|
nL++;
|
|
} // rare properties
|
|
nL=1;
|
|
while(nL<=nUncommon)
|
|
{ // uncommon properties
|
|
IPSafeAddItemProperty(oItem,fnShieldProperty(1));
|
|
nL++;
|
|
} // uncommon properties
|
|
nL=1;
|
|
while(nL<=nCommon)
|
|
{ // common properties
|
|
IPSafeAddItemProperty(oItem,fnShieldProperty(0));
|
|
nL++;
|
|
} // common properties
|
|
} // shield magic item
|
|
else if (nR<81)
|
|
{ // armor magic item
|
|
nR=Random(17)+1;
|
|
if (nR==1) oItem=fnBaseItem("nw_aarcl001",oAt);
|
|
else if (nR==2) oItem=fnBaseItem("nw_aarcl009",oAt);
|
|
else if (nR==3) oItem=fnBaseItem("nw_aarcl002",oAt);
|
|
else if (nR==4) oItem=fnBaseItem("nw_aarcl012",oAt);
|
|
else if (nR==5) oItem=fnBaseItem("nw_aarcl010",oAt);
|
|
else if (nR==6) oItem=fnBaseItem("nw_aarcl004",oAt);
|
|
else if (nR==7) oItem=fnBaseItem("nw_aarcl008",oAt);
|
|
else if (nR==8) oItem=fnBaseItem("nw_aarcl003",oAt);
|
|
else if (nR==9) oItem=fnBaseItem("nw_aarcl011",oAt);
|
|
else if (nR==10) oItem=fnBaseItem("nw_aarcl007",oAt);
|
|
else if (nR==11) oItem=fnBaseItem("nw_aarcl006",oAt);
|
|
else if (nR==12) oItem=fnBaseItem("nw_aarcl005",oAt);
|
|
else if (nR==13) oItem=fnBaseItem("x2_cloth008",oAt);
|
|
else if (nR==14) oItem=fnBaseItem("nw_cloth020",oAt);
|
|
nL=1;
|
|
while(nL<=nRare)
|
|
{ // rare properties
|
|
IPSafeAddItemProperty(oItem,fnArmorProperty(2));
|
|
nL++;
|
|
} // rare properties
|
|
nL=1;
|
|
while(nL<=nUncommon)
|
|
{ // uncommon properties
|
|
IPSafeAddItemProperty(oItem,fnArmorProperty(1));
|
|
nL++;
|
|
} // uncommon properties
|
|
nL=1;
|
|
while(nL<=nCommon)
|
|
{ // common properties
|
|
IPSafeAddItemProperty(oItem,fnArmorProperty(0));
|
|
nL++;
|
|
} // common properties
|
|
} // armor magic item
|
|
else
|
|
{ // ring, necklace, gloves, belt, or cloak
|
|
nR=Random(6)+1;
|
|
if (nR==1) oItem=fnBaseItem("belt",oAt);
|
|
else if (nR==2) oItem=fnBaseItem("boots",oAt);
|
|
else if (nR==3) oItem=fnBaseItem("fb1_cloak",oAt);
|
|
else if (nR==4) oItem=fnBaseItem("gauntlets",oAt);
|
|
else if (nR==5) oItem=fnBaseItem("amulet",oAt);
|
|
else if (nR==6) oItem=fnBaseItem("ring",oAt);
|
|
nL=1;
|
|
while(nL<=nRare)
|
|
{ // rare properties
|
|
IPSafeAddItemProperty(oItem,fnMiscProperty(2));
|
|
nL++;
|
|
} // rare properties
|
|
nL=1;
|
|
while(nL<=nUncommon)
|
|
{ // uncommon properties
|
|
IPSafeAddItemProperty(oItem,fnMiscProperty(1));
|
|
nL++;
|
|
} // uncommon properties
|
|
nL=1;
|
|
while(nL<=nCommon)
|
|
{ // common properties
|
|
IPSafeAddItemProperty(oItem,fnMiscProperty(0));
|
|
nL++;
|
|
} // common properties
|
|
} // ring, necklace, gloves, belt, or cloak
|
|
return oItem;
|
|
} // fnUniqueItem()
|
|
|
|
void main()
|
|
{
|
|
object oAt=GetWaypointByTag("DRAGON_TREASURE2");
|
|
object oItem=fnUniqueItem(oAt,1,Random(3),Random(4));
|
|
}
|