//:://///////////////////////////////////////////// //:: Name x2_def_spawn //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Default On Spawn script 2003-07-28: Georg Zoeller: If you set a ninteger on the creature named "X2_USERDEFINED_ONSPAWN_EVENTS" The creature will fire a pre and a post-spawn event on itself, depending on the value of that variable 1 - Fire Userdefined Event 1510 (pre spawn) 2 - Fire Userdefined Event 1511 (post spawn) 3 - Fire both events 2007-12-31: Deva Winblood Modified to look for X3_HORSE_OWNER_TAG and if it is defined look for an NPC with that tag nearby or in the module (checks near first). It will make that NPC this horse's master. */ //::////////////////////////////////////////////// //:: Created By: Keith Warner, Georg Zoeller //:: Created On: June 11/03 //::////////////////////////////////////////////// #include "x3_inc_string" const int EVENT_USER_DEFINED_PRESPAWN = 1510; const int EVENT_USER_DEFINED_POSTSPAWN = 1511; int fnGetRandomFromString(string sIn) { // PURPOSE: To return a random value from input value of // # of values.value 1/value2/value3/../valuen string sMaster=sIn; string sMax=StringParse(sMaster,"."); string sParse; int nMax=StringToInt(sMax); int nR; int nN; if (nMax>0) { // continue sMaster=StringRemoveParsed(sMaster,sMax,"."); nR=Random(nMax)+1; nN=0; sParse=StringParse(sMaster,"/"); while(GetStringLength(sMaster)>0) { // parse nN++; if (nN==nR) return StringToInt(sParse); sMaster=StringRemoveParsed(sMaster,sParse,"/"); sParse=StringParse(sMaster,"/"); } // parse } // continue return -1; } // fnGetRandomFromString() #include "x2_inc_switches" void main() { string sTag; object oNPC; string sS; object oMe=OBJECT_SELF; // User defined OnSpawn event requested? int nSpecEvent = GetLocalInt(OBJECT_SELF,"X2_USERDEFINED_ONSPAWN_EVENTS"); // Pre Spawn Event requested if (nSpecEvent == 1 || nSpecEvent == 3 ) { SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_PRESPAWN )); } sTag=GetLocalString(OBJECT_SELF,"X3_HORSE_OWNER_TAG"); if (GetStringLength(sTag)>0) { // look for master oNPC=GetNearestObjectByTag(sTag); if (GetIsObjectValid(oNPC)&&GetObjectType(oNPC)==OBJECT_TYPE_CREATURE) { // master found AddHenchman(oNPC); } // master found else { // look in module oNPC=GetObjectByTag(sTag); if (GetIsObjectValid(oNPC)&&GetObjectType(oNPC)==OBJECT_TYPE_CREATURE) { // master found AddHenchman(oNPC); } // master found else { // master does not exist - remove X3_HORSE_OWNER_TAG DeleteLocalString(OBJECT_SELF,"X3_HORSE_OWNER_TAG"); } // master does not exist - remove X3_HORSE_OWNER_TAG } // look in module } // look for master /* Fix for the new golems to reduce their number of attacks */ int nNumber = GetLocalInt(OBJECT_SELF,CREATURE_VAR_NUMBER_OF_ATTACKS); if (nNumber >0 ) { SetBaseAttackBonus(nNumber); } // Execute default OnSpawn script. ExecuteScript("nw_c2_default9", OBJECT_SELF); //Post Spawn event requeste if (nSpecEvent == 2 || nSpecEvent == 3) { SignalEvent(OBJECT_SELF,EventUserDefined(EVENT_USER_DEFINED_POSTSPAWN)); } sS=GetLocalString(oMe,"sRandomAppearance"); if (GetStringLength(sS)>0) { // possible random appearance int nN=fnGetRandomFromString(sS); if (nN>-1) SetCreatureAppearanceType(oMe,nN); } // possible random appearance }