Expanded Vassal of Bahamut for epic progression
Expanded Vassal of Bahamut for epic progression.
This commit is contained in:
@@ -104,42 +104,111 @@ void AddArmorOnhit(object oPC,int iEquip)
|
||||
}
|
||||
}
|
||||
|
||||
void DWRightWeap(object oPC,int iEquip)
|
||||
/* Dragonwrack (Su): Evil dragons that strike a vassal of Bahamut or
|
||||
are struck by him suffer grievous wounds. At 4th level, a vassal
|
||||
of Bahamut deals +2d6 points of damage with each successful
|
||||
melee attack made against an evil creature of the dragon type.
|
||||
Furthermore, any such creature that strikes the vassal with a
|
||||
natural weapon or melee weapon takes 1d6 points of damage. */
|
||||
|
||||
void DWRightWeap(object oPC, int iEquip)
|
||||
{
|
||||
object oItem ;
|
||||
object oItem;
|
||||
|
||||
if (iEquip==2)
|
||||
{
|
||||
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
|
||||
if ( GetLocalInt(oItem,"DWright"))
|
||||
return;
|
||||
if (iEquip == 2) // Equipping something
|
||||
{
|
||||
oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
||||
if (!GetIsObjectValid(oItem)) return;
|
||||
|
||||
if (GetBaseItemType(oItem)!=BASE_ITEM_SMALLSHIELD || BASE_ITEM_TOWERSHIELD || BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,999.0);
|
||||
if (GetLocalInt(oItem, "DWright"))
|
||||
return;
|
||||
|
||||
SetLocalInt(oItem,"DWright",1);
|
||||
}
|
||||
}
|
||||
else if (iEquip==1)
|
||||
{
|
||||
oItem=GetItemLastUnequipped();
|
||||
if (GetBaseItemType(oItem)==BASE_ITEM_SMALLSHIELD || BASE_ITEM_TOWERSHIELD || BASE_ITEM_LARGESHIELD) return;
|
||||
RemoveSpecificProperty(oItem,ITEM_PROPERTY_ONHITCASTSPELL,IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,0);
|
||||
DeleteLocalInt(oItem,"DWright");
|
||||
}
|
||||
else
|
||||
{
|
||||
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
|
||||
if ( !GetLocalInt(oItem,"DWright")&& GetBaseItemType(oItem)!=BASE_ITEM_SMALLSHIELD || BASE_ITEM_TOWERSHIELD || BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,999.0);
|
||||
SetLocalInt(oItem,"DWright",1);
|
||||
}
|
||||
}
|
||||
}
|
||||
int nType = GetBaseItemType(oItem);
|
||||
if (nType != BASE_ITEM_SMALLSHIELD && nType != BASE_ITEM_TOWERSHIELD && nType != BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), oItem, 999.0);
|
||||
SetLocalInt(oItem, "DWright", 1);
|
||||
}
|
||||
}
|
||||
else if (iEquip == 1) // Unequipping something
|
||||
{
|
||||
oItem = GetItemLastUnequipped();
|
||||
if (!GetIsObjectValid(oItem)) return;
|
||||
|
||||
void DWLeftWeap(object oPC,int iEquip)
|
||||
int nType = GetBaseItemType(oItem);
|
||||
if (nType == BASE_ITEM_SMALLSHIELD || nType == BASE_ITEM_TOWERSHIELD || nType == BASE_ITEM_LARGESHIELD)
|
||||
return;
|
||||
|
||||
RemoveSpecificProperty(oItem, ITEM_PROPERTY_ONHITCASTSPELL, IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 0);
|
||||
DeleteLocalInt(oItem, "DWright");
|
||||
}
|
||||
else // Fallback (e.g., login or heartbeat refresh)
|
||||
{
|
||||
oItem = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC);
|
||||
if (!GetIsObjectValid(oItem)) return;
|
||||
|
||||
if (!GetLocalInt(oItem, "DWright"))
|
||||
{
|
||||
int nType = GetBaseItemType(oItem);
|
||||
if (nType != BASE_ITEM_SMALLSHIELD && nType != BASE_ITEM_TOWERSHIELD && nType != BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), oItem, 999.0);
|
||||
SetLocalInt(oItem, "DWright", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DWLeftWeap(object oPC, int iEquip)
|
||||
{
|
||||
object oItem;
|
||||
|
||||
if (iEquip == 2) // Equipping something
|
||||
{
|
||||
oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
|
||||
if (!GetIsObjectValid(oItem)) return;
|
||||
|
||||
if (GetLocalInt(oItem, "DWleft"))
|
||||
return;
|
||||
|
||||
int nType = GetBaseItemType(oItem);
|
||||
if (nType != BASE_ITEM_SMALLSHIELD && nType != BASE_ITEM_TOWERSHIELD && nType != BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), oItem, 999.0);
|
||||
SetLocalInt(oItem, "DWleft", 1);
|
||||
}
|
||||
}
|
||||
else if (iEquip == 1) // Unequipping something
|
||||
{
|
||||
oItem = GetItemLastUnequipped();
|
||||
if (!GetIsObjectValid(oItem)) return;
|
||||
|
||||
int nType = GetBaseItemType(oItem);
|
||||
if (nType == BASE_ITEM_SMALLSHIELD || nType == BASE_ITEM_TOWERSHIELD || nType == BASE_ITEM_LARGESHIELD)
|
||||
return;
|
||||
|
||||
RemoveSpecificProperty(oItem, ITEM_PROPERTY_ONHITCASTSPELL, IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 0);
|
||||
DeleteLocalInt(oItem, "DWleft");
|
||||
}
|
||||
else // Fallback (e.g., login or heartbeat refresh)
|
||||
{
|
||||
oItem = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPC);
|
||||
if (!GetIsObjectValid(oItem)) return;
|
||||
|
||||
if (!GetLocalInt(oItem, "DWleft"))
|
||||
{
|
||||
int nType = GetBaseItemType(oItem);
|
||||
if (nType != BASE_ITEM_SMALLSHIELD && nType != BASE_ITEM_TOWERSHIELD && nType != BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY, ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER, 1), oItem, 999.0);
|
||||
SetLocalInt(oItem, "DWleft", 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* void DWLeftWeap(object oPC,int iEquip)
|
||||
{
|
||||
object oItem ;
|
||||
|
||||
@@ -149,9 +218,9 @@ void DWLeftWeap(object oPC,int iEquip)
|
||||
if ( GetLocalInt(oItem,"DWleft"))
|
||||
return;
|
||||
|
||||
if (GetBaseItemType(oItem)!=BASE_ITEM_SMALLSHIELD || BASE_ITEM_TOWERSHIELD || BASE_ITEM_LARGESHIELD)
|
||||
if (GetBaseItemType(oItem)!=BASE_ITEM_SMALLSHIELD && BASE_ITEM_TOWERSHIELD && BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,9999.0);
|
||||
|
||||
SetLocalInt(oItem,"DWleft",1);
|
||||
}
|
||||
@@ -166,14 +235,14 @@ void DWLeftWeap(object oPC,int iEquip)
|
||||
else
|
||||
{
|
||||
oItem=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
|
||||
if ( !GetLocalInt(oItem,"DWleft")&& GetBaseItemType(oItem)!=BASE_ITEM_SMALLSHIELD || BASE_ITEM_TOWERSHIELD || BASE_ITEM_LARGESHIELD)
|
||||
if ( !GetLocalInt(oItem,"DWleft")&& GetBaseItemType(oItem)!=BASE_ITEM_SMALLSHIELD && BASE_ITEM_TOWERSHIELD && BASE_ITEM_LARGESHIELD)
|
||||
{
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,999.0);
|
||||
AddItemProperty(DURATION_TYPE_TEMPORARY,ItemPropertyOnHitCastSpell(IP_CONST_ONHIT_CASTSPELL_ONHIT_UNIQUEPOWER,1),oItem,9999.0);
|
||||
SetLocalInt(oItem,"DWleft",1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
void ImperiousAura(object oPC, object oSkin, int iLevel)
|
||||
{
|
||||
if(GetLocalInt(oSkin, "ImperiousAura") == iLevel) return;
|
||||
|
@@ -8,12 +8,49 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Zedium
|
||||
//:: Created On: 5 april 2004
|
||||
//:: Updated By: Jaysyn
|
||||
//:: Updated On: 2025-04-26 21:11:16
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
/* Dragonwrack (Su): Evil dragons that strike a vassal of Bahamut or
|
||||
are struck by him suffer grievous wounds. At 4th level, a vassal
|
||||
of Bahamut deals +2d6 points of damage with each successful
|
||||
melee attack made against an evil creature of the dragon type.
|
||||
Furthermore, any such creature that strikes the vassal with a
|
||||
natural weapon or melee weapon takes 1d6 points of damage. At
|
||||
7th level, the vassal deals +3d6 points of damage to evil dragons
|
||||
an at 10th level, the damage increases to +4d6 points and 2d6
|
||||
points, respectively. */
|
||||
|
||||
|
||||
#include "prc_class_const"
|
||||
#include "prc_alterations"
|
||||
|
||||
void main()
|
||||
{
|
||||
int nVassal = GetLevelByClass(CLASS_TYPE_VASSAL, OBJECT_SELF);
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
int iDam = 0;
|
||||
effect eDam;
|
||||
|
||||
// Only start dealing bonus damage at 4th level
|
||||
if (nVassal >= 4)
|
||||
{
|
||||
iDam = d6(2 + ((nVassal - 4) / 3)); // 2d6 at 4th level, +1d6 every 3 levels
|
||||
}
|
||||
|
||||
if (iDam > 0 && MyPRCGetRacialType(oTarget) == RACIAL_TYPE_DRAGON)
|
||||
{
|
||||
if (GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL)
|
||||
{
|
||||
eDam = EffectDamage(iDam, DAMAGE_TYPE_DIVINE, DAMAGE_POWER_ENERGY);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* void main()
|
||||
{
|
||||
int nVassal = GetLevelByClass(CLASS_TYPE_VASSAL, OBJECT_SELF);
|
||||
object oTarget = PRCGetSpellTargetObject();
|
||||
@@ -39,4 +76,4 @@ void main()
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
} */
|
Reference in New Issue
Block a user