/////////////////////////////////////////////////////////////////////////////////// // REAL TIME STRATEGY ADVENTURE - Kit // FILE:rtsa_headerf // NAME: Faction header file // SCRIPTED BY: Deva Bryson Winblood // DATE: 8/3/2003 //////////////////////////////////////////////////////////////////////////////// void fnFactionAdjust(object oFaction1,object oFaction2,int nAmount=50) { // adjust reputations of both factions so they feel the same about each other string sID1=GetLocalString(oFaction1,"sTeamID"); string sID2=GetLocalString(oFaction2,"sTeamID"); object oC1=GetWaypointByTag(sID1+"_LIMBO"); object oC2=GetWaypointByTag(sID2+"_LIMBO"); object oMember1=CreateObject(OBJECT_TYPE_CREATURE,sID1+"1",GetLocation(oC1),FALSE); object oMember2=CreateObject(OBJECT_TYPE_CREATURE,sID2+"1",GetLocation(oC2),FALSE); object oRunner; if (nAmount==0) SetPCDislike(oFaction1,oFaction2); if (nAmount==100) SetPCLike(oFaction1,oFaction2); oRunner=GetFirstFactionMember(oMember1,FALSE); while(oRunner!=OBJECT_INVALID) { // first faction AdjustReputation(oRunner,oMember2,nAmount); oRunner=GetNextFactionMember(oMember1,FALSE); } // first faction oRunner=GetFirstFactionMember(oMember2,FALSE); while(oRunner!=OBJECT_INVALID) { // first faction AdjustReputation(oRunner,oMember1,nAmount); oRunner=GetNextFactionMember(oMember2,FALSE); } // first faction DestroyObject(oMember1); DestroyObject(oMember2); } // fnFactionAdjust() void fnMatchFaction(object oMe) { // this will cause an NPC to adjust its faction settings to match those // of its other faction members. object oMod=GetModule(); int nTeams=GetLocalInt(oMod,"nRTSTeams"); int nC=1; string sMID=GetLocalString(oMe,"sTeamID"); string sOID; object oMemberMine=GetFirstFactionMember(oMe,FALSE); object oOther; object oDummy; object oLimbo; int nAmt; if (oMemberMine==oMe) oMemberMine=GetNextFactionMember(oMe,FALSE); while(nC<=nTeams) { // adjust rep sOID=GetLocalString(oMod,"sRTSTeamID"+IntToString(nC)); oLimbo=GetWaypointByTag(sOID+"_LIMBO"); if (oLimbo==OBJECT_INVALID) oLimbo=GetWaypointByTag(sOID+"_START"); oDummy=CreateObject(OBJECT_TYPE_CREATURE,sOID+"1",GetLocation(oLimbo),FALSE); oOther=GetFirstFactionMember(oDummy,FALSE); if (oOther==oDummy) oOther=GetNextFactionMember(oDummy,FALSE); nAmt=GetReputation(oOther,oMemberMine); AdjustReputation(oMe,oOther,nAmt); nAmt=GetReputation(oMemberMine,oOther); AdjustReputation(oOther,oMe,nAmt); DestroyObject(oDummy); nC++; } // adjust rep } // fnMatchFaction()