// Gambling Slots // Part of the Gambling System designed by: // Archaegeo July 26 2002 #include "gm_include" int BASECOST=5; void GivePayout(int nMult); void DetermineResults(); void GetToken(); string GetSymbol(int nR); object oPC; int nA, nB, nC; int nT; void main() { oPC=GetLastUsedBy(); if(GetLocalInt(OBJECT_SELF,"IN-USE")) { SendMessageToPC(oPC, "This is being used, please wait."); return; } if(GetGold(oPC) < BASECOST) { SendMessageToPC(oPC, "You cannot afford this game."); return; } nT=1; SetLocalInt(OBJECT_SELF,"IN-USE",nT); AssignCommand(OBJECT_SELF,ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)); GetToken(); } string GetSymbol(int nR) { string sToken; switch(nR) { case 1: sToken="Mug";break; case 2: sToken="Bell";break; case 3: sToken="Dagger";break; case 4: sToken="Arrow";break; case 5: sToken="Gold";break; case 6: sToken="Diamond";break; } return "*"+sToken+"*"; } void GetToken() { if(nT==1) nA=d6(); else if(nT==2) nB=d6(); else nC=d6(); nT++; if(nT==2) { FloatingTextStringOnCreature(GetSymbol(nA),oPC); DelayCommand(1.5,GetToken()); } else if(nT==3) { FloatingTextStringOnCreature(GetSymbol(nA)+" "+GetSymbol(nB),oPC); DelayCommand(1.5,GetToken()); } else { FloatingTextStringOnCreature(GetSymbol(nA)+" "+GetSymbol(nB)+" "+ GetSymbol(nC),oPC); DetermineResults(); } } void GivePayout(int nMult) { int nPayout=nMult*BASECOST; int nChk; nChk=CheckPayout(nPayout); if(nChk < nPayout) { SendMessageToPC(oPC,"You have broke the bank!"); nPayout=nChk; } else SubHouse(nPayout); SendMessageToPC(oPC,"You win "+IntToString(nPayout)+" gold!"); effect eVis = EffectVisualEffect(VFX_IMP_GOOD_HELP); ApplyEffectToObject(DURATION_TYPE_INSTANT,eVis,OBJECT_SELF); DeleteLocalInt(OBJECT_SELF,"IN-USE"); AssignCommand(OBJECT_SELF,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)); GiveGoldToCreature(oPC, nPayout); } void DetermineResults() { int nPayoff; if(nA==nB && nB==nC) { switch(nC) { case 1: nPayoff=4;break; case 2: nPayoff=8;break; case 3: nPayoff=10;break; case 4: nPayoff=12;break; case 5: nPayoff=24;break; case 6: nPayoff=36;break; } GivePayout(nPayoff); return; } else if(nA==nB && nB==6) { switch(nC) { case 1: nPayoff=2;break; case 2: nPayoff=3;break; case 3: nPayoff=4;break; case 4: nPayoff=5;break; case 5: nPayoff=6;break; } GivePayout(nPayoff); return; } SendMessageToPC(oPC, "You win nothing this time, try again."); AddHouse(BASECOST); AssignCommand(OBJECT_SELF, TakeGoldFromCreature(BASECOST, oPC, TRUE)); AssignCommand(OBJECT_SELF,ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE)); DeleteLocalInt(OBJECT_SELF,"IN-USE"); }