Ancordia_PRC8/_module/nss/bj_npcaction.nss
Jaysyn904 102ba7dab6 Initial Commit
Initial Commit
2023-09-21 19:51:32 -04:00

124 lines
3.1 KiB
Plaintext

#include "_sh_inc_list"
//NPC takes action here
int GetCardValue(string sCard)
{
if (sCard == "2") return 2;
if (sCard == "3") return 3;
if (sCard == "4") return 4;
if (sCard == "5") return 5;
if (sCard == "6") return 6;
if (sCard == "7") return 7;
if (sCard == "8") return 8;
if (sCard == "9") return 9;
if (sCard == "10" || sCard == "J" || sCard == "Q" || sCard == "K") return 10;
if (sCard == "A") return 11;
return 0;
}
void DrawExtraCard()
{
int nValue = GetLocalInt(OBJECT_SELF, "VALUE");;
int nHandCards = GetLocalInt(OBJECT_SELF, "CARDS");
object oDeck = GetLocalObject(OBJECT_SELF, "oDeck");
object oHand = GetLocalObject(OBJECT_SELF, "oHand");
//Let's draw a card
int nCards = ListGetElementCount(oDeck);
int nElement = Random(nCards)+1;
string sCard = ListGetString(oDeck, nElement);
ListRemoveElement(oDeck, nElement);
ListAddString(oHand, "sCard");
//Let's check the hand's value and proceed accordingly
nCards = ListGetElementCount(oHand);
int i;
for (i = 1; i <= nCards; i++)
{
sCard = ListGetString(oHand, i);
nValue += GetCardValue(sCard);
}
if (nValue > 21)
{
//We need to check if there are any aces in hand
}
else if (nValue >= 18)
{
SetLocalInt(OBJECT_SELF, "CARDS", nHandCards);
SetLocalInt(OBJECT_SELF, "VALUE", nValue);
return;
}
else if (nValue >= 15 && Random(3) == 0)
{
DrawExtraCard();
return;
}
else if (nValue >= 12 && Random(3) != 0)
{
DrawExtraCard();
return;
}
else
{
DrawExtraCard();
return;
}
}
void main()
{
object oDeck = GetLocalObject(OBJECT_SELF, "oDeck");
//Make a hand for the NPC
string sHand = GetLocalString(OBJECT_SELF, "DeckName")+"_C";
object oHand = ListCreate(sHand);
SetLocalObject(OBJECT_SELF, "oHand", oHand);
//Draw the first card for the NPC
int nCards = ListGetElementCount(oDeck);
int nElement = Random(nCards)+1;
string sCard = ListGetString(oDeck, nElement);
ListRemoveElement(oDeck, nElement);
ListAddString(oHand, "sCard");
//Draw the second card for the NPC
nCards = ListGetElementCount(oDeck);
nElement = Random(nCards)+1;
sCard = ListGetString(oDeck, nElement);
ListRemoveElement(oDeck, nElement);
ListAddString(oHand, "sCard");
//Let's check the hand's value and proceed accordingly
int nValue;
int nHandCards = 2;
sCard = ListGetString(oHand, 1);
nValue = GetCardValue(sCard);
sCard = ListGetString(oHand, 2);
nValue += GetCardValue(sCard);
SetLocalInt(OBJECT_SELF, "CARDS", 2);
SetLocalInt(OBJECT_SELF, "VALUE", nValue);
if (nValue >= 18)
{
SetLocalInt(OBJECT_SELF, "CARDS", nHandCards);
SetLocalInt(OBJECT_SELF, "VALUE", nValue);
return;
}
else if (nValue >= 15 && Random(3) == 0)
{
DrawExtraCard();
return;
}
else if (nValue >= 12 && Random(3) != 0)
{
DrawExtraCard();
return;
}
else
{
DrawExtraCard();
return;
}
}