Battledale_PRC8/_module/nss/jw_dopple_usd.nss
Jaysyn904 e5b3f6ad61 Finished PRC8 integration
Finished PRC8 integration.  Moved creature abilities to top hak.  Setup tooling.  Created release archive
2024-03-12 21:27:23 -04:00

131 lines
3.0 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Custom User Defined Event
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
*/
//:://////////////////////////////////////////////
//:: Created By:
//:: Created On:
//:://////////////////////////////////////////////
#include "NW_I0_GENERIC"
#include "jw_privates_inc"
void main()
{
ExecuteScript("prc_npc_userdef", OBJECT_SELF);
int nUser = GetUserDefinedEventNumber();
if(nUser == 1001) //HEARTBEAT
{
}
else if(nUser == 1002) // PERCEIVE
{
}
else if(nUser == 1003) // END OF COMBAT
{
}
else if(nUser == 1004) // ON DIALOGUE
{
}
else if(nUser == 1005) // ATTACKED
{
}
else if(nUser == 1006) // DAMAGED
{
int nChange=GetMaxHitPoints();
nChange=nChange*3;
nChange=nChange/4;
int nCurrent=GetCurrentHitPoints();
if ((nCurrent<=nChange)&&(GetLocalInt(OBJECT_SELF,"nDone")!=1))
{
object oPC=GetVictim();
if (!GetIsObjectValid(oPC))
{
oPC=GetNearestSeenOrHeardEnemy();
}
if (!GetIsObjectValid(oPC))
{
return;
}
SetLocalInt(OBJECT_SELF,"nDone",1);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_UNDEAD),GetLocation(OBJECT_SELF));
DestroyObject(OBJECT_SELF);
object oMob=CopyObject(oPC,GetLocation(OBJECT_SELF));
SetLocalInt(oMob,"is_clone",TRUE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectTrueSeeing(),oMob);
ChangeToStandardFaction(oMob, STANDARD_FACTION_HOSTILE);
//Have the clone leave a corpse that's not lootable.
//We don't want all the player's gear coming into play either.
AssignCommand(oMob, SetIsDestroyable(FALSE, FALSE));
int nGold = GetGold(oMob);
int nHP = GetMaxHitPoints(oMob);
// give it some extra hp
int nBonus=nHP/20;
effect eBonus=EffectTemporaryHitpoints(nBonus);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,ExtraordinaryEffect(eBonus),oMob);
//This makes sure the clone doesn't drop a ton of gold,
//otherwise he'd have as much as the PC he copied
TakeGoldFromCreature(nGold, oMob, TRUE);
//Don't want an injured clone from an injured player, so heal him too.
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nHP+nBonus), oMob);
// Set a local int on all the items
int nSlot;
object oItem;
for(nSlot=0; nSlot<=17; nSlot++)
{
oItem=GetItemInSlot(nSlot, oMob);
if (GetIsObjectValid(oItem))
{
SetLocalInt(oItem,"cloned",TRUE);
}
}
oItem=GetFirstItemInInventory(oMob);
while (GetIsObjectValid(oItem))
{
SetLocalInt(oItem,"cloned",TRUE);
oItem = GetNextItemInInventory(oMob);
}
SetVictim(oPC,oMob);
AssignCommand(oMob,DetermineCombatRound());
//This is the all important combat hb script.
ExecuteScript("jw_clone_ai", oMob);
}
}
else if(nUser == 1007) // DEATH
{
}
else if(nUser == 1008) // DISTURBED
{
}
}