generated from Jaysyn/ModuleTemplate
Initial Commit
Initial Commit.
This commit is contained in:
103
_module/nss/cu_functions.nss
Normal file
103
_module/nss/cu_functions.nss
Normal file
@@ -0,0 +1,103 @@
|
||||
|
||||
// Functions Script for Birthright of the North
|
||||
// Ben W-Husey (B G P Hughes)
|
||||
|
||||
//This function is used to reward a party with xp for an action, describe why the xp was given, and set a variable so it is only given once for the action.
|
||||
// Inputs are: sGotEntry = The name of the Local Variable,
|
||||
// oPCGotEntry = the PC that called this function (speaker, chest opener, etc)
|
||||
// nXPToGive = xp for each party member
|
||||
// sTextMessage = Message to display, telling why xp was given
|
||||
|
||||
void PartyGotEntry(string sGotEntry,object oPCGotEntry, int nXPToGive, string sTextMessage)
|
||||
{
|
||||
object oPartyMember = GetFirstFactionMember(oPCGotEntry, TRUE); // oPartyMember is the PC that called this function
|
||||
|
||||
while (GetIsObjectValid(oPartyMember) == TRUE) // While there are more members in the party
|
||||
{
|
||||
GiveXPToCreature(oPartyMember,nXPToGive); //Give xp to each member
|
||||
SetLocalInt(oPartyMember,sGotEntry,1); // Sets a local variable in case you want to check for it (i.e. give the bonus once only)
|
||||
FloatingTextStringOnCreature(sTextMessage, oPartyMember, TRUE); //Tell the player what the xp was for with a string above his PC's head
|
||||
oPartyMember = GetNextFactionMember(oPCGotEntry, TRUE); // Find next party member
|
||||
}
|
||||
}
|
||||
|
||||
//This function is used to to set a local variable on every member of a party - particularly useful to stop every party member having to have the same conversation.
|
||||
// Inputs are: sGotEntry = The name of the Local Variable,
|
||||
// oPCGotEntry = the PC that called this function (speaker, chest opener, etc)
|
||||
// nValue = value to set variable to
|
||||
|
||||
void AllParty(string sGotEntry,object oPCGotEntry, int nValue)
|
||||
{
|
||||
SetLocalInt(oPCGotEntry, sGotEntry, nValue);
|
||||
object oPartyMember = GetFirstFactionMember(oPCGotEntry, TRUE);
|
||||
while (GetIsObjectValid(oPartyMember) == TRUE)
|
||||
{
|
||||
SetLocalInt(oPartyMember,sGotEntry,nValue); // Sets a local variable on each party member
|
||||
oPartyMember = GetNextFactionMember(oPCGotEntry, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
//This function is used to reward alignment xp, and shift alignment
|
||||
// Inputs are: sVar = The name of a local variable
|
||||
// oPCGotXP = the PC to affect
|
||||
// sAlig = the alignment to shift and/or reward
|
||||
// nXP = The xp reward
|
||||
// nShift = the alignment amount to shift
|
||||
// Modify: if shift of 0 sent, no message wanted. If xp = 0 no message wanted.
|
||||
// Examples:
|
||||
// if you send AligXP(Variable, Player, "CHAOTIC",100,0) then if Player is a chaotic character will get 100xp and a message to tell them (the variable stops this happening more than once)
|
||||
// Or AligXP(Variable, Player, "CHAOTIC",0,5) then Player will shift alignment 5 points towards chaotic and a message to tell them about the shift
|
||||
// AligXP(Variable, Player, "CHAOTIC",100,5) will do both:
|
||||
// Any PC will shift 5 towards chaotic and
|
||||
// A chaotic character will gain 100xp.
|
||||
|
||||
|
||||
void AligXP(string sVar, object oPCGotXP, string sAlig, int nXP, int nShift)
|
||||
{
|
||||
if (GetLocalInt(oPCGotXP, sVar)==FALSE) {
|
||||
SetLocalInt(oPCGotXP, sVar, TRUE);
|
||||
int nAlig;
|
||||
// This section deals with what alignment gets the xp, or towards which alignment the shift takes place
|
||||
if (sAlig == "CHAOTIC") nAlig = ALIGNMENT_CHAOTIC;
|
||||
if (sAlig == "GOOD") nAlig = ALIGNMENT_GOOD;
|
||||
if (sAlig == "LAWFUL") nAlig = ALIGNMENT_LAWFUL;
|
||||
if (sAlig == "EVIL") nAlig = ALIGNMENT_EVIL;
|
||||
if (sAlig == "NEUTRAL") nAlig = ALIGNMENT_NEUTRAL;
|
||||
if (GetAlignmentGoodEvil(oPCGotXP)== nAlig)
|
||||
{
|
||||
if (nXP==0) PartyGotEntry(sVar,oPCGotXP,nXP, ""); // No xp = no message
|
||||
else PartyGotEntry(sVar,oPCGotXP,nXP, "XP gained - Playing alignment");
|
||||
}
|
||||
if (GetAlignmentLawChaos(oPCGotXP)== nAlig)
|
||||
{
|
||||
if (nXP==0) PartyGotEntry(sVar,oPCGotXP,nXP, ""); // No xp = no message
|
||||
else PartyGotEntry(sVar,oPCGotXP,nXP, "XP gained - Playing alignment");
|
||||
}
|
||||
if (!(nShift==0)) AdjustAlignment(oPCGotXP, nAlig, nShift); //only execute if shift is not 0 otherwise you get a message in the console.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int SkillCheck()
|
||||
{
|
||||
int nSkill = 0;
|
||||
int xcheck = Random(16)+1;
|
||||
if (xcheck==1) nSkill = SKILL_CONCENTRATION ;
|
||||
if (xcheck==2) nSkill = SKILL_DISCIPLINE ;
|
||||
if (xcheck==3) nSkill = SKILL_HEAL ;
|
||||
if (xcheck==4) nSkill = SKILL_LISTEN ;
|
||||
if (xcheck==5) nSkill = SKILL_LORE ;
|
||||
if (xcheck==6) nSkill = SKILL_OPEN_LOCK ;
|
||||
if (xcheck==7) nSkill = SKILL_PARRY ;
|
||||
if (xcheck==8) nSkill = SKILL_PERSUADE ;
|
||||
if (xcheck==9) nSkill = SKILL_PERFORM ;
|
||||
if (xcheck==10) nSkill = SKILL_SEARCH ;
|
||||
if (xcheck==11) nSkill = SKILL_SPELLCRAFT ;
|
||||
if (xcheck==12) nSkill = SKILL_SPOT ;
|
||||
if (xcheck==13) nSkill = SKILL_TUMBLE ;
|
||||
if (xcheck==14) nSkill = SKILL_USE_MAGIC_DEVICE ;
|
||||
if (xcheck==15) nSkill = SKILL_ALL_SKILLS ;
|
||||
if (xcheck==16) nSkill = SKILL_DISABLE_TRAP ;
|
||||
|
||||
return nSkill;
|
||||
}
|
||||
Reference in New Issue
Block a user