generated from Jaysyn/ModuleTemplate
Initial upload
Initial upload
This commit is contained in:
82
_mod/_module/nss/rts_it_uw4.nss
Normal file
82
_mod/_module/nss/rts_it_uw4.nss
Normal file
@@ -0,0 +1,82 @@
|
||||
// rts_it_uw4 - The Rage
|
||||
|
||||
void fnRage(object oPC)
|
||||
{ // rage possession
|
||||
object oTarget=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,1,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN);
|
||||
if (GetResRef(oTarget)=="listener001") oTarget=GetNearestCreature(CREATURE_TYPE_IS_ALIVE,TRUE,oPC,2,CREATURE_TYPE_PERCEPTION,PERCEPTION_SEEN);
|
||||
if (!GetIsDead(oPC)&&GetLocalInt(oPC,"bRagePossessed"))
|
||||
{ // in the rage
|
||||
if (!GetIsInCombat(oPC))
|
||||
{ // seek combat
|
||||
if (GetIsObjectValid(oTarget))
|
||||
{ // move
|
||||
AssignCommand(oPC,ClearAllActions());
|
||||
if (GetDistanceBetween(oPC,oTarget)>4.0) AssignCommand(oPC,ActionMoveToObject(oTarget,TRUE,2.5));
|
||||
AssignCommand(oPC,ActionAttack(oTarget));
|
||||
SetIsTemporaryEnemy(oTarget,oPC,TRUE,30.0);
|
||||
} // move
|
||||
else
|
||||
{ // random waypoint
|
||||
if (GetCurrentAction(oPC)!=ACTION_MOVETOPOINT)
|
||||
{ // move
|
||||
oTarget=GetNearestObject(OBJECT_TYPE_WAYPOINT,oPC,d20(2));
|
||||
if (GetIsObjectValid(oTarget))
|
||||
{ // move
|
||||
AssignCommand(oPC,ClearAllActions());
|
||||
AssignCommand(oPC,ActionMoveToObject(oTarget,TRUE));
|
||||
} // move
|
||||
} // move
|
||||
} // random waypoint
|
||||
} // seek combat
|
||||
else
|
||||
{ // in combat
|
||||
if (GetCurrentAction(oPC)!=ACTION_ATTACKOBJECT)
|
||||
{ // attack
|
||||
if (GetIsObjectValid(oTarget))
|
||||
{ // attack
|
||||
AssignCommand(oPC,ClearAllActions());
|
||||
if (GetDistanceBetween(oPC,oTarget)>4.0) AssignCommand(oPC,ActionMoveToObject(oTarget,TRUE,2.5));
|
||||
AssignCommand(oPC,ActionAttack(oTarget));
|
||||
SetIsTemporaryEnemy(oTarget,oPC,TRUE,30.0);
|
||||
} // attack
|
||||
} // attack
|
||||
} // in combat
|
||||
DelayCommand(2.0,fnRage(oPC));
|
||||
} // in the rage
|
||||
else
|
||||
{ // rage over
|
||||
DeleteLocalInt(oPC,"bRagePossessed");
|
||||
SetCutsceneMode(oPC,FALSE,FALSE);
|
||||
} // rage over
|
||||
} // fnRage()
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC=GetItemActivator();
|
||||
object oItem=GetItemActivated();
|
||||
object oSlot=GetItemInSlot(INVENTORY_SLOT_BELT,oPC);
|
||||
effect ePoly=EffectPolymorph(POLYMORPH_TYPE_UMBER_HULK,TRUE);
|
||||
if (oSlot!=oItem)
|
||||
{ // not equipped
|
||||
SendMessageToPC(oPC,"The item must be equipped to use its ability.");
|
||||
return;
|
||||
} // not equipped
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
ePoly=EffectTemporaryHitpoints(50);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
ePoly=EffectMovementSpeedIncrease(99);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
ePoly=EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING,10,50);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
ePoly=EffectDamageResistance(DAMAGE_TYPE_SLASHING,10,50);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
ePoly=EffectDamageResistance(DAMAGE_TYPE_PIERCING,10,50);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
ePoly=EffectDamageIncrease(DAMAGE_BONUS_1d6,DAMAGE_TYPE_SLASHING);
|
||||
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,ePoly,oPC,HoursToSeconds(1));
|
||||
SetLocalInt(oPC,"bRagePossessed",TRUE);
|
||||
DelayCommand(HoursToSeconds(1),DeleteLocalInt(oPC,"bRagePossessed"));
|
||||
AssignCommand(oPC,ClearAllActions(TRUE));
|
||||
SetCutsceneMode(oPC,TRUE,FALSE);
|
||||
AssignCommand(oPC,fnRage(oPC));
|
||||
}
|
||||
Reference in New Issue
Block a user