Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
91 lines
4.1 KiB
Plaintext
91 lines
4.1 KiB
Plaintext
/* Skarn Spines, which are equivalent to a shortsword*/
|
|
|
|
#include "moi_inc_moifunc"
|
|
|
|
void CleanSpines(object oMeldshaper);
|
|
|
|
void CleanSpines(object oMeldshaper)
|
|
{
|
|
object oItem = GetItemPossessedBy(oMeldshaper, "skarn_spine");
|
|
if (GetIsObjectValid(oItem))
|
|
{
|
|
DestroyObject(oItem);
|
|
DelayCommand(0.1, CleanSpines(oMeldshaper));
|
|
}
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oMeldshaper = OBJECT_SELF;
|
|
object oItem = GetItemPossessedBy(oMeldshaper, "skarn_spine");
|
|
int nClass = GetLevelByClass(CLASS_TYPE_SPINEMELD_WARRIOR, oMeldshaper);
|
|
if (GetIsObjectValid(oItem))
|
|
{
|
|
CleanSpines(oMeldshaper);
|
|
}
|
|
else if (nClass)
|
|
{
|
|
// Right Hand
|
|
oItem = CreateItemOnObject("nw_wswss001", oMeldshaper, 1, "skarn_spine");
|
|
SetPlotFlag(oItem, TRUE);
|
|
SetDroppableFlag(oItem, FALSE);
|
|
AssignCommand(oMeldshaper, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTHAND));
|
|
if (nClass >= 5) // Spine Rend
|
|
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
|
|
if (nClass >= 9)
|
|
{
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(5), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(5), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
}
|
|
else if (GetIsChakraBound(oMeldshaper, CHAKRA_ARMS))
|
|
{
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(3), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(3), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
}
|
|
|
|
// Left Hand
|
|
oItem = CreateItemOnObject("nw_wswss001", oMeldshaper, 1, "skarn_spine");
|
|
SetPlotFlag(oItem, TRUE);
|
|
SetDroppableFlag(oItem, FALSE);
|
|
AssignCommand(oMeldshaper, ActionEquipItem(oItem, INVENTORY_SLOT_LEFTHAND));
|
|
if (nClass >= 5) // Spine Rend
|
|
IPSafeAddItemProperty(oItem, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), 99999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
|
|
if (nClass >= 9)
|
|
{
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(5), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(5), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
}
|
|
else if (GetIsChakraBound(oMeldshaper, CHAKRA_ARMS))
|
|
{
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(3), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(3), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
oItem = CreateItemOnObject("nw_wswss001", oMeldshaper, 1, "skarn_spine");
|
|
// No dropping and no selling the item
|
|
SetPlotFlag(oItem, TRUE);
|
|
SetDroppableFlag(oItem, FALSE);
|
|
|
|
object oRight = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oMeldshaper);
|
|
object oLeft = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oMeldshaper);
|
|
if (!GetIsObjectValid(oRight))
|
|
AssignCommand(oMeldshaper, ActionEquipItem(oItem, INVENTORY_SLOT_RIGHTHAND));
|
|
else if (!GetIsObjectValid(oLeft))
|
|
AssignCommand(oMeldshaper, ActionEquipItem(oItem, INVENTORY_SLOT_LEFTHAND));
|
|
else
|
|
{
|
|
DestroyObject(oItem);
|
|
FloatingTextStringOnCreature("You have no free hands to use your Skarn Spine with", oMeldshaper, FALSE);
|
|
}
|
|
|
|
if (GetIsObjectValid(oItem) && GetIsChakraBound(oMeldshaper, CHAKRA_ARMS))
|
|
{
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(3), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
IPSafeAddItemProperty(oItem, ItemPropertyAttackPenalty(3), 9999.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE);
|
|
}
|
|
}
|
|
} |