Initial Commit

Initial Commit.
This commit is contained in:
Jaysyn904
2025-09-14 15:40:46 -04:00
parent 7083b33d71
commit 1eefc84201
19230 changed files with 11539227 additions and 0 deletions

View 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;
}