1273 lines
46 KiB
Plaintext
1273 lines
46 KiB
Plaintext
#include "nw_i0_generic"
|
|
#include "x0_i0_petrify"
|
|
#include "onpercept_dark"
|
|
#include "prc_inc_util"
|
|
|
|
void Normalize(object oPC)
|
|
{
|
|
effect eEffect1 = EffectEthereal();
|
|
RemoveEffectOfType(oPC, GetEffectType(eEffect1));
|
|
}
|
|
|
|
|
|
void JoinBackedTeam(object oPC)
|
|
{
|
|
int iDone = 0;
|
|
object oCreature;
|
|
object oCreature2;
|
|
object oTeam;
|
|
string sSide;
|
|
int iTeam = GetLocalInt(oPC, "team_bet");
|
|
|
|
oCreature = GetFirstObjectInArea(OBJECT_SELF);
|
|
while (GetIsObjectValid(oCreature))
|
|
{
|
|
if ((GetObjectType(oCreature)==OBJECT_TYPE_CREATURE)&&(!GetIsPC(oCreature))&&
|
|
(GetTag(oCreature)!="starfall")&&(GetTag(oCreature)!="reaper"))
|
|
{
|
|
SetIsTemporaryEnemy(oPC, oCreature);
|
|
}
|
|
oCreature =GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
|
|
oCreature = GetFirstObjectInArea(OBJECT_SELF);
|
|
while ((GetObjectType(oCreature)!=OBJECT_TYPE_CREATURE)||
|
|
(!GetIsEnemy(oCreature, oPC))||(GetIsPC(oCreature))||
|
|
(GetTag(oCreature)=="starfall")||(GetTag(oCreature)=="reaper"))
|
|
{
|
|
oCreature =GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
//FloatingTextStringOnCreature(GetName(OBJECT_SELF), oPC);
|
|
//FloatingTextStringOnCreature(GetName(oCreature), oPC);
|
|
|
|
if (((GetResRef(oCreature)=="dragon1")||(GetResRef(oCreature)=="zep_halfdrafn001")||
|
|
(GetResRef(oCreature)=="zep_marilithb001")||(GetResRef(oCreature)=="bard2")||
|
|
(GetResRef(oCreature)=="zep_pitfiend001")||(GetResRef(oCreature)=="zep_balrog001")||
|
|
(GetResRef(oCreature)=="dopple")||(GetResRef(oCreature)=="mistress2")||
|
|
(GetResRef(oCreature)=="notime3")||(GetResRef(oCreature)=="notime4")||
|
|
(GetResRef(oCreature)=="darcher")||(GetResRef(oCreature)=="death"))&&(iTeam==2))
|
|
{
|
|
AdjustReputation(oPC, oCreature, 100);
|
|
SetIsTemporaryFriend(oPC, oCreature);
|
|
oTeam = GetFirstFactionMember(oCreature, FALSE);
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
SetIsTemporaryFriend(oPC, oTeam, FALSE);
|
|
oTeam = GetNextFactionMember(oCreature, FALSE);
|
|
}
|
|
}
|
|
else if (((GetResRef(oCreature)=="dragon1")||(GetResRef(oCreature)=="zep_halfdrafn001")||
|
|
(GetResRef(oCreature)=="zep_marilithb001")||(GetResRef(oCreature)=="bard2")||
|
|
(GetResRef(oCreature)=="zep_pitfiend001")||(GetResRef(oCreature)=="zep_balrog001")||
|
|
(GetResRef(oCreature)=="dopple")||(GetResRef(oCreature)=="mistress2")||
|
|
(GetResRef(oCreature)=="notime3")||(GetResRef(oCreature)=="notime4")||
|
|
(GetResRef(oCreature)=="darcher")||(GetResRef(oCreature)=="death"))&&(iTeam==1))
|
|
{
|
|
oCreature2 = GetFirstObjectInArea(OBJECT_SELF);
|
|
while ((GetObjectType(oCreature2)!=OBJECT_TYPE_CREATURE)||
|
|
(!GetIsEnemy(oCreature, oCreature2))||(GetIsPC(oCreature2))||
|
|
(GetTag(oCreature2)=="starfall")||(GetTag(oCreature2)=="reaper"))
|
|
{
|
|
oCreature2 =GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
AdjustReputation(oPC, oCreature2, 100);
|
|
SetIsTemporaryFriend(oPC, oCreature2);
|
|
oTeam = GetFirstFactionMember(oCreature2, FALSE);
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
SetIsTemporaryFriend(oPC, oTeam, FALSE);
|
|
oTeam = GetNextFactionMember(oCreature2, FALSE);
|
|
}
|
|
}
|
|
else if (((GetResRef(oCreature)!="dragon1")&&(GetResRef(oCreature)!="zep_halfdrafn001")&&
|
|
(GetResRef(oCreature)!="zep_marilithb001")&&(GetResRef(oCreature)!="bard2")&&
|
|
(GetResRef(oCreature)!="zep_pitfiend001")&&(GetResRef(oCreature)!="zep_balrog001")&&
|
|
(GetResRef(oCreature)!="dopple")&&(GetResRef(oCreature)!="mistress2")&&
|
|
(GetResRef(oCreature)!="notime3")&&(GetResRef(oCreature)!="notime4")&&
|
|
(GetResRef(oCreature)!="darcher")&&(GetResRef(oCreature)!="death"))&&(iTeam==1))
|
|
{
|
|
AdjustReputation(oPC, oCreature, 100);
|
|
SetIsTemporaryFriend(oPC, oCreature);
|
|
oTeam = GetFirstFactionMember(oCreature, FALSE);
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
SetIsTemporaryFriend(oPC, oTeam, FALSE);
|
|
oTeam = GetNextFactionMember(oCreature, FALSE);
|
|
}
|
|
}
|
|
else if (((GetResRef(oCreature)!="dragon1")&&(GetResRef(oCreature)!="zep_halfdrafn001")&&
|
|
(GetResRef(oCreature)!="zep_marilithb001")&&(GetResRef(oCreature)!="bard2")&&
|
|
(GetResRef(oCreature)!="zep_pitfiend001")&&(GetResRef(oCreature)!="zep_balrog001")&&
|
|
(GetResRef(oCreature)!="dopple")&&(GetResRef(oCreature)!="mistress2")&&
|
|
(GetResRef(oCreature)!="notime3")&&(GetResRef(oCreature)!="notime4")&&
|
|
(GetResRef(oCreature)!="darcher")&&(GetResRef(oCreature)!="death"))&&(iTeam==2))
|
|
{
|
|
oCreature2 = GetFirstObjectInArea(OBJECT_SELF);
|
|
while ((GetObjectType(oCreature2)!=OBJECT_TYPE_CREATURE)||
|
|
(!GetIsEnemy(oCreature, oCreature2))||(GetIsPC(oCreature2))||
|
|
(GetTag(oCreature2)=="starfall")||(GetTag(oCreature2)=="reaper"))
|
|
{
|
|
oCreature2 =GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
AdjustReputation(oPC, oCreature2, 100);
|
|
SetIsTemporaryFriend(oPC, oCreature2);
|
|
oTeam = GetFirstFactionMember(oCreature2, FALSE);
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
SetIsTemporaryFriend(oPC, oTeam, FALSE);
|
|
oTeam = GetNextFactionMember(oCreature2, FALSE);
|
|
}
|
|
//FloatingTextStringOnCreature("fell through", oPC);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void JoinTeam2(object oSelf, object oPC)
|
|
{
|
|
int iDone = 0;
|
|
object oCreature;
|
|
object oTeam;
|
|
string sSide;
|
|
|
|
oCreature = GetFirstObjectInArea(OBJECT_SELF);
|
|
while ((GetObjectType(oCreature)!=OBJECT_TYPE_CREATURE)||
|
|
(!GetIsEnemy(oCreature, oSelf))||(GetIsPC(oCreature))||
|
|
(GetTag(oCreature)=="starfall")||(GetTag(oCreature)=="reaper"))
|
|
{
|
|
oCreature =GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
//FloatingTextStringOnCreature(GetName(OBJECT_SELF), oPC);
|
|
//FloatingTextStringOnCreature(GetName(oCreature), oPC);
|
|
|
|
if ((GetResRef(oCreature)=="dragon1")||(GetResRef(oCreature)=="zep_halfdrafn001")||
|
|
(GetResRef(oCreature)=="zep_marilithb001")||(GetResRef(oCreature)=="bard2")||
|
|
(GetResRef(oCreature)=="zep_pitfiend001")||(GetResRef(oCreature)=="zep_balrog001")||
|
|
(GetResRef(oCreature)=="dopple")||(GetResRef(oCreature)=="mistress2")||
|
|
(GetResRef(oCreature)=="notime3")||(GetResRef(oCreature)=="notime4")||
|
|
(GetResRef(oCreature)=="darcher")||(GetResRef(oCreature)=="death"))
|
|
{
|
|
sSide = "You have joined the Champions of Darkness";
|
|
SetLocalInt(oPC, "pc_side", 2);
|
|
}
|
|
else
|
|
{
|
|
sSide = "You have joined the Champions of Light";
|
|
SetLocalInt(oPC, "pc_side", 1);
|
|
}
|
|
|
|
AdjustReputation(oPC, oCreature, 100);
|
|
SetIsTemporaryFriend(oPC, oCreature);
|
|
|
|
oTeam = GetFirstFactionMember(oCreature, FALSE);
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
//AdjustReputation(oPC, oTeam, 100);
|
|
SetIsTemporaryFriend(oPC, oTeam, FALSE);
|
|
oTeam = GetNextFactionMember(oCreature, FALSE);
|
|
}
|
|
FloatingTextStringOnCreature(sSide, oPC);
|
|
}
|
|
|
|
void LastHit2()
|
|
{
|
|
|
|
object oMod = GetModule();
|
|
object oPC = GetLastDamager(OBJECT_SELF);
|
|
int oDam = GetTotalDamageDealt();
|
|
string oAtt;
|
|
string oSelf;
|
|
string oMon;
|
|
object oDest;
|
|
object oLast;
|
|
int oHit;
|
|
int oSwing;
|
|
int oMhit;
|
|
int oPCdam;
|
|
int oSDTaken;
|
|
int oUDTaken;
|
|
int oSDDealt;
|
|
int oUDDealt;
|
|
int iSFhit;
|
|
int iSFdam;
|
|
int iFBhit;
|
|
int iFBdam;
|
|
int oHWdam;
|
|
int oHWhit;
|
|
int iCHdam;
|
|
int iCHhit;
|
|
int mCount;
|
|
int iCHswing;
|
|
int iHWswing;
|
|
int iPCswing;
|
|
int iPChit;
|
|
int iSFswing;
|
|
int iFBswing;
|
|
int iArenaChall =GetLocalInt(oMod, "challenge");
|
|
int iSFDuel =GetLocalInt(oMod, "duel_on");
|
|
int iFinalBattle = GetLocalInt(oPC, "final_on");
|
|
int iWarWon = GetLocalInt(oMod, "war_won");
|
|
int iJoinSwitch = GetLocalInt(oPC, "join_switch");
|
|
int iHwar = GetLocalInt(oMod, "hwar_on");
|
|
//FloatingTextStringOnCreature("duel on: "+IntToString(GetLocalInt(oMod, "duel_on")), oPC);
|
|
|
|
oSwing = GetLocalInt(oPC, "pc_swing");
|
|
iPChit = GetLocalInt(oPC, "pc_hit");
|
|
iCHswing = GetLocalInt(oPC, "pc_CHswing");
|
|
iSFswing = GetLocalInt(oPC, "pc_SFswing");
|
|
iFBswing = GetLocalInt(oPC, "pc_FBswing");
|
|
iHWswing = GetLocalInt(oPC, "pc_HWswing");
|
|
|
|
|
|
|
|
|
|
|
|
if (GetIsPC(oPC))
|
|
{
|
|
oHit = GetLocalInt(oPC, "pc_hit");
|
|
oPCdam = GetLocalInt(oPC, "player_dd");
|
|
++oHit;
|
|
oPCdam+=oDam;
|
|
if (oHit>oSwing){oHit=oSwing;}
|
|
SetLocalInt(oPC, "pc_hit", oHit);
|
|
SetLocalInt(oPC, "player_dd", oPCdam);
|
|
if (GetName(GetLastWeaponUsed(oPC))=="")
|
|
{
|
|
iPCswing = GetLocalInt(oPC, "pc_swing");
|
|
++iPCswing;
|
|
if (oHit>iPCswing){oHit=iPCswing;}
|
|
SetLocalInt(oPC, "pc_hit", oHit);
|
|
SetLocalInt(oPC, "pc_swing", iPCswing);
|
|
}
|
|
//FloatingTextStringOnCreature("hwar on:"+IntToString(iHwar), oPC);
|
|
//FloatingTextStringOnCreature("war won:"+IntToString(iWarWon), oPC);
|
|
if (iArenaChall==1)
|
|
{
|
|
iCHdam = GetLocalInt(oPC, "pc_CHdam");
|
|
iCHhit = GetLocalInt(oPC, "pc_CHhit");
|
|
iCHdam+=oDam;
|
|
++iCHhit;
|
|
if (iCHhit>iCHswing){iCHhit=iCHswing;}
|
|
SetLocalInt(oPC, "pc_CHhit", iCHhit);
|
|
SetLocalInt(oPC, "pc_CHdam", iCHdam);
|
|
if (GetName(GetLastWeaponUsed(oPC))=="")
|
|
{
|
|
iCHswing = GetLocalInt(oPC, "pc_CHswing");
|
|
iCHhit = GetLocalInt(oPC, "pc_CHhit");
|
|
++iCHswing;
|
|
if (iCHhit>iCHswing){iCHhit=iCHswing;}
|
|
SetLocalInt(oPC, "pc_CHhit", iCHhit);
|
|
SetLocalInt(oPC, "pc_CHswing", iCHswing);
|
|
}
|
|
}
|
|
if (iSFDuel==1)
|
|
{
|
|
iSFdam = GetLocalInt(oPC, "pc_SFdam");
|
|
iSFhit = GetLocalInt(oPC, "pc_SFhit");
|
|
iSFdam+=oDam;
|
|
++iSFhit;
|
|
if (iSFhit>iSFswing){iSFhit=iSFswing;}
|
|
SetLocalInt(oPC, "pc_SFhit", iSFhit);
|
|
SetLocalInt(oPC, "pc_SFdam", iSFdam);
|
|
if (GetName(GetLastWeaponUsed(oPC))=="")
|
|
{
|
|
iSFswing = GetLocalInt(oPC, "pc_SFswing");
|
|
iSFhit = GetLocalInt(oPC, "pc_SFhit");
|
|
++iSFswing;
|
|
if (iSFhit>iSFswing){iSFhit=iSFswing;}
|
|
SetLocalInt(oPC, "pc_SFhit", iSFhit);
|
|
SetLocalInt(oPC, "pc_SFswing", iSFswing);
|
|
}
|
|
}
|
|
if (iFinalBattle==1)
|
|
{
|
|
iFBdam = GetLocalInt(oPC, "pc_FBdam");
|
|
iFBhit = GetLocalInt(oPC, "pc_FBhit");
|
|
iFBdam+=oDam;
|
|
++iFBhit;
|
|
if (iFBhit>iFBswing){iFBhit=iFBswing;}
|
|
SetLocalInt(oPC, "pc_FBhit", iFBhit);
|
|
SetLocalInt(oPC, "pc_FBdam", iFBdam);
|
|
if (GetName(GetLastWeaponUsed(oPC))=="")
|
|
{
|
|
iFBswing = GetLocalInt(oPC, "pc_FBswing");
|
|
iFBhit = GetLocalInt(oPC, "pc_FBhit");
|
|
++iFBswing;
|
|
if (iFBhit>iFBswing){iFBhit=iFBswing;}
|
|
SetLocalInt(oPC, "pc_FBhit", iFBhit);
|
|
SetLocalInt(oPC, "pc_FBswing", iFBswing);
|
|
}
|
|
}
|
|
if (iHwar==1)
|
|
{
|
|
mCount = 0;
|
|
oHWdam = GetLocalInt(oPC, "pc_HWdam");
|
|
oHWhit = GetLocalInt(oPC, "pc_HWhit");
|
|
++oHWhit;
|
|
oHWdam+=oDam;
|
|
if (oHWhit>iHWswing){oHWhit=iHWswing;}
|
|
SetLocalInt(oPC, "pc_HWhit", oHWhit);
|
|
SetLocalInt(oPC, "pc_HWdam", oHWdam);
|
|
if (GetName(GetLastWeaponUsed(oPC))=="")
|
|
{
|
|
iHWswing = GetLocalInt(oPC, "pc_HWswing");
|
|
++iHWswing;
|
|
if (oHWhit>iHWswing){oHWhit=iHWswing;}
|
|
SetLocalInt(oPC, "pc_HWhit", oHWhit);
|
|
SetLocalInt(oPC, "pc_HWswing", iHWswing);
|
|
}
|
|
if (iWarWon==1)
|
|
{
|
|
oLast = GetFirstObjectInArea(GetArea(oPC));
|
|
while (GetIsObjectValid(oLast))
|
|
{
|
|
if ((GetObjectType(oLast)==OBJECT_TYPE_CREATURE)&&(!GetIsPC(oLast))&&(!GetIsDead(oLast))
|
|
&&(GetTag(oLast)!="starfall")&&(GetTag(oLast)!="reaper"))
|
|
{
|
|
++mCount;
|
|
}
|
|
oLast = GetNextObjectInArea(GetArea(oPC));
|
|
}
|
|
//FloatingTextStringOnCreature("m count:"+IntToString(mCount), oPC);
|
|
if (mCount==0)
|
|
{
|
|
SetLocalInt(oMod, "challenge", 0);
|
|
SetLocalInt(oMod, "d1", 0);
|
|
SetLocalInt(oMod, "d2", 0);
|
|
SetLocalInt(oMod, "d2a", 0);
|
|
SetLocalInt(oMod, "d3", 0);
|
|
SetLocalInt(oMod, "d4", 0);
|
|
SetLocalInt(oMod, "d5", 0);
|
|
SetLocalInt(oMod, "ch_hw", 0);
|
|
SetLocalInt(oMod, "ch_dr", 0);
|
|
SetLocalInt(oMod, "ch_bl", 0);
|
|
SetLocalInt(oMod, "ch_pf", 0);
|
|
SetLocalInt(oMod, "ch_df", 0);
|
|
SetLocalInt(oMod, "ch_pm", 0);
|
|
SetLocalInt(oMod, "ch_bm", 0);
|
|
SetLocalInt(oMod, "ch_lm", 0);
|
|
SetLocalInt(oMod, "ch_ll", 0);
|
|
SetLocalInt(oMod, "ch_xx", 0);
|
|
SetLocalInt(oMod, "gr_xx", 0);
|
|
SetLocalInt(oMod, "sw_hw", 0);
|
|
SetLocalInt(oMod, "sw_dr", 0);
|
|
SetLocalInt(oMod, "sw_bl", 0);
|
|
SetLocalInt(oMod, "sw_pf", 0);
|
|
SetLocalInt(oMod, "sw_df", 0);
|
|
SetLocalInt(oMod, "sw_pm", 0);
|
|
SetLocalInt(oMod, "sw_bm", 0);
|
|
SetLocalInt(oMod, "sw_lm", 0);
|
|
SetLocalInt(oMod, "sw_ll", 0);
|
|
SetLocalInt(oMod, "sw_xx", 0);
|
|
SetLocalInt(oMod, "hwar_on", 0);
|
|
DelayCommand(3.0, FloatingTextStringOnCreature
|
|
("** You are the last one standing **", oPC));
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
void LastHit()
|
|
{
|
|
object oKiller = GetLastKiller();
|
|
object oSelf = OBJECT_SELF;
|
|
string sKiller = GetName(oKiller);
|
|
string sVictim = GetName(oSelf);
|
|
string sAnnounce;
|
|
|
|
if (sKiller ==""){sKiller = "An unseen force";}
|
|
|
|
// generate a random death message
|
|
|
|
int iDice = d10();
|
|
switch(iDice)
|
|
{
|
|
case 1: {sAnnounce = sKiller+" sends "+sVictim+" into early retirement!";}break;
|
|
case 2: {sAnnounce = sKiller+" paints the pavement red with "+sVictim+"!";}break;
|
|
case 3: {sAnnounce = sKiller+" dices "+sVictim+" into small pieces!";}break;
|
|
case 4: {sAnnounce = sKiller+"'s face is the last thing that "+sVictim+" sees!";}break;
|
|
case 5: {sAnnounce = sVictim+" doesn't survive "+sKiller+"'s brutal attack!";}break;
|
|
case 6: {sAnnounce = sKiller+" decapitates "+sVictim+"!";}break;
|
|
case 7: {sAnnounce = sKiller+" cuts "+sVictim+" clean in half!";}break;
|
|
case 8: {sAnnounce = sKiller+" helps "+sVictim+" to the pavement!";}break;
|
|
case 9: {sAnnounce = sKiller+" tears "+sVictim+" a new asshole!";}break;
|
|
case 10: {sAnnounce = sKiller+" slices "+sVictim+" like an onion!";}break;
|
|
}
|
|
if (oKiller==OBJECT_INVALID){sAnnounce = sVictim+" dies from a fatal wound!";}
|
|
// send message to all players
|
|
|
|
object oPlayer = GetFirstPC();
|
|
while (GetIsObjectValid(oPlayer))
|
|
{
|
|
SendMessageToPC(oPlayer, sAnnounce);
|
|
oPlayer = GetNextPC();
|
|
}
|
|
DelayCommand(3.2, LastHit2());
|
|
}
|
|
|
|
|
|
void QuickRestore(object oPC)
|
|
{
|
|
object oCaster;
|
|
oCaster = oPC;
|
|
|
|
object oTarget;
|
|
oTarget = oPC;
|
|
|
|
AssignCommand(oCaster, ActionCastSpellAtObject(SPELL_GREATER_RESTORATION, oTarget, METAMAGIC_ANY, TRUE, 20, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
|
|
}
|
|
|
|
|
|
|
|
|
|
void DeathStats(object oPC)
|
|
{
|
|
object oMod = GetModule();
|
|
int oDam = GetTotalDamageDealt();
|
|
|
|
int oHWhit = GetLocalInt(oPC, "pc_HWhit");
|
|
int oHit = GetLocalInt(oPC, "pc_hit");
|
|
int oPCdam = GetLocalInt(oPC, "player_dd");
|
|
int oHWdam = GetLocalInt(oPC, "pc_HWdam");
|
|
int iCHhit = GetLocalInt(oPC, "pc_CHhit");
|
|
int iCHdam = GetLocalInt(oPC, "pc_CHdam");
|
|
int iSFhit = GetLocalInt(oPC, "pc_SFhit");
|
|
int iSFdam = GetLocalInt(oPC, "pc_SFdam");
|
|
int iFBhit = GetLocalInt(oPC, "pc_FBhit");
|
|
int iFBdam = GetLocalInt(oPC, "pc_FBdam");
|
|
int iArenaChall = GetLocalInt(oMod, "challenge");
|
|
int iSFDuel = GetLocalInt(oMod, "duel_on");
|
|
int iFinalBattle = GetLocalInt(oPC, "final_on");
|
|
|
|
SetLocalInt(oPC, "pc_HWhit", ++oHWhit);
|
|
SetLocalInt(oPC, "pc_hit", ++oHit);
|
|
SetLocalInt(oPC, "player_dd", oPCdam+oDam);
|
|
SetLocalInt(oPC, "pc_HWdam", oHWdam+oDam);
|
|
|
|
if (iArenaChall==1)
|
|
{
|
|
SetLocalInt(oPC, "pc_CHhit", ++iCHhit);
|
|
SetLocalInt(oPC, "pc_CHdam", iCHdam+oDam);
|
|
}
|
|
if (iSFDuel==1)
|
|
{
|
|
SetLocalInt(oPC, "pc_SFhit", ++iSFhit);
|
|
SetLocalInt(oPC, "pc_SFdam", iSFdam+oDam);
|
|
|
|
}
|
|
if (iFinalBattle==1)
|
|
{
|
|
SetLocalInt(oPC, "pc_FBhit", ++iFBhit);
|
|
SetLocalInt(oPC, "pc_FBdam", iFBdam+oDam);
|
|
}
|
|
}
|
|
|
|
|
|
void spawner(object oPC, string oCreature, int oDrag)
|
|
{
|
|
|
|
object oTarget;
|
|
if (oDrag==1){oTarget=GetWaypointByTag("big_wp");}
|
|
if (oDrag==0){oTarget = GetWaypointByTag("monster_wp");}
|
|
if (oDrag==2){oTarget = GetWaypointByTag("starfall_wp");}
|
|
location lTarget = GetLocation(oTarget);
|
|
object oSpawn = CreateObject(OBJECT_TYPE_CREATURE, oCreature, lTarget);
|
|
oTarget = oSpawn;
|
|
if (oDrag!=2)
|
|
{
|
|
SetIsTemporaryEnemy(oPC, oTarget);
|
|
AssignCommand(oTarget, ActionAttack(oPC));
|
|
AssignCommand(oTarget, DetermineCombatRound(oPC));
|
|
|
|
oTarget = oSpawn;
|
|
int nInt = GetObjectType(oTarget);
|
|
if (nInt != OBJECT_TYPE_WAYPOINT) DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_PWKILL), oTarget));
|
|
else DelayCommand(0.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_PWKILL), GetLocation(oTarget)));
|
|
}
|
|
}
|
|
|
|
|
|
void DoEffect(float oDelay, int oEffect, string oWaypoint)
|
|
{
|
|
object oTarget;
|
|
oTarget = GetObjectByTag(oWaypoint);
|
|
int nInt;
|
|
nInt = GetObjectType(oTarget);
|
|
effect eEffect;
|
|
eEffect = EffectVisualEffect(oEffect);
|
|
if (nInt != OBJECT_TYPE_WAYPOINT)
|
|
DelayCommand(oDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT,
|
|
eEffect, oTarget));
|
|
else
|
|
DelayCommand(oDelay, ApplyEffectAtLocation(DURATION_TYPE_INSTANT,
|
|
eEffect, GetLocation(oTarget)));
|
|
}
|
|
|
|
void ResetPools(object oPC)
|
|
{
|
|
|
|
object oMod = GetModule();
|
|
object oP1 = GetObjectByTag("pool1");
|
|
object oP2 = GetObjectByTag("pool2");
|
|
object oP3 = GetObjectByTag("fountain1");
|
|
object oP4 = GetObjectByTag("fountain2");
|
|
object oLever1 = GetObjectByTag("pool_lever");
|
|
object oLever2 = GetObjectByTag("fount_lever");
|
|
effect eEffect = EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY);
|
|
AssignCommand(oPC, PlaySound("sce_negative"));
|
|
AssignCommand(oLever1, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
|
|
AssignCommand(oLever2, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
|
|
RemoveEffectOfType(oP1, GetEffectType(eEffect));
|
|
RemoveEffectOfType(oP2, GetEffectType(eEffect));
|
|
RemoveEffectOfType(oP3, GetEffectType(eEffect));
|
|
RemoveEffectOfType(oP4, GetEffectType(eEffect));
|
|
SetLocalInt(oMod, "fountain_state", 0);
|
|
SetLocalInt(oMod, "pool_state", 0);
|
|
}
|
|
void PCEffect(float oDelay, int oEffect, object oPC)
|
|
{
|
|
effect eEffect;
|
|
eEffect = EffectVisualEffect(oEffect);
|
|
DelayCommand(oDelay, ApplyEffectAtLocation(DURATION_TYPE_INSTANT,
|
|
eEffect, GetLocation(oPC)));
|
|
}
|
|
|
|
void SoundPlay(float oDelay, string oSound, object oPC)
|
|
{
|
|
DelayCommand(oDelay, AssignCommand(oPC, PlaySound(oSound)));
|
|
}
|
|
|
|
|
|
void Message (float oDelay, string oMSG, object oPC)
|
|
{
|
|
DelayCommand(oDelay, FloatingTextStringOnCreature(oMSG, oPC));
|
|
}
|
|
|
|
void CastPC(float oDelay, int eEffect, object oPC)
|
|
{
|
|
DelayCommand(oDelay, AssignCommand(oPC, ActionCastSpellAtObject
|
|
(eEffect, oPC, METAMAGIC_ANY, TRUE, 20,
|
|
PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));
|
|
}
|
|
|
|
void BattleRest (object oPC)
|
|
{
|
|
DelayCommand(5.0, PRCForceRest(oPC));
|
|
PCEffect(5.0,VFX_FNF_NATURES_BALANCE, oPC);
|
|
Message(7.0, "Rest Granted", oPC);
|
|
//CastPC(9.0, SPELL_ETHEREALNESS, oPC);
|
|
//Message(9.0, "Buff phase initiated: Buff or attack now", oPC);
|
|
}
|
|
|
|
void Place(string oPlaceable, string oWaypoint)
|
|
{
|
|
location lTarget;
|
|
object oTarget = GetWaypointByTag(oWaypoint);
|
|
lTarget = GetLocation(oTarget);
|
|
object oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, oPlaceable, lTarget);
|
|
}
|
|
|
|
void PlaceCreature(string oPlaceable, string oWaypoint)
|
|
{
|
|
location lTarget;
|
|
object oTarget = GetWaypointByTag(oWaypoint);
|
|
lTarget = GetLocation(oTarget);
|
|
object oSpawn = CreateObject(OBJECT_TYPE_CREATURE, oPlaceable, lTarget);
|
|
}
|
|
|
|
|
|
void Cast(int nSpell, object oPlayer)
|
|
{
|
|
AssignCommand(oPlayer,
|
|
ActionCastSpellAtObject(
|
|
nSpell,
|
|
oPlayer,
|
|
METAMAGIC_ANY,
|
|
TRUE,
|
|
20,
|
|
PROJECTILE_PATH_TYPE_DEFAULT,
|
|
TRUE));
|
|
}
|
|
|
|
void Sound (float oDelay, string oSound, object oPC)
|
|
{
|
|
DelayCommand(oDelay, AssignCommand(oPC, PlaySound(oSound)));
|
|
}
|
|
|
|
|
|
void NPCvoice(object oSelf, object oPC, int iSet)
|
|
{
|
|
|
|
int iVoice;
|
|
float oDice;
|
|
|
|
switch (iSet)
|
|
{
|
|
case 1: iVoice = VOICE_CHAT_ATTACK;break;
|
|
case 2: iVoice = VOICE_CHAT_BATTLECRY1;break;
|
|
case 3: iVoice = VOICE_CHAT_BATTLECRY2;break;
|
|
case 4: iVoice = VOICE_CHAT_BATTLECRY3;break;
|
|
case 5: iVoice = VOICE_CHAT_THREATEN;break;
|
|
case 6: iVoice = VOICE_CHAT_CHEER;break;
|
|
case 7: iVoice = VOICE_CHAT_CUSS;break;
|
|
case 8: iVoice = VOICE_CHAT_FLEE;break;
|
|
case 9: iVoice = VOICE_CHAT_GOODBYE;break;
|
|
case 10: iVoice = VOICE_CHAT_THANKS;break;
|
|
case 11: iVoice = VOICE_CHAT_WEAPONSUCKS;break;
|
|
case 12: iVoice = VOICE_CHAT_LAUGH;break;
|
|
}
|
|
oDice = IntToFloat(d2());
|
|
oDice +=0.2;
|
|
AssignCommand(oSelf, SetFacingObject(oPC));
|
|
DelayCommand(oDice+0.5, AssignCommand(oSelf, PlayVoiceChat(iVoice)));
|
|
}
|
|
|
|
|
|
|
|
void LeaveTeam(object oPC)
|
|
{
|
|
object oCreature;
|
|
object oPlayer;
|
|
|
|
oCreature = GetFirstObjectInArea(OBJECT_SELF);
|
|
|
|
while ((GetObjectType(oCreature)!=OBJECT_TYPE_CREATURE)||
|
|
(GetIsPC(oCreature))||(GetTag(oCreature)=="starfall")||
|
|
(GetTag(oCreature)=="reaper"))
|
|
{
|
|
oCreature = GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
oPlayer = GetFirstPC();
|
|
while (GetIsObjectValid(oPlayer))
|
|
{
|
|
//AdjustReputation(oPC, oCreature, -100);
|
|
SetIsTemporaryEnemy(oPC, oCreature, FALSE);
|
|
SetLocalInt(oPC, "join_switch", 0);
|
|
oPlayer = GetNextPC();
|
|
}
|
|
}
|
|
|
|
|
|
void TeamCheer()
|
|
{
|
|
object oCreature;
|
|
object oTeam;
|
|
float oDelay;
|
|
float oDelay2;
|
|
|
|
oCreature = GetFirstObjectInArea(OBJECT_SELF);
|
|
|
|
while ((GetObjectType(oCreature)!=OBJECT_TYPE_CREATURE)||
|
|
(GetIsPC(oCreature))||(GetTag(oCreature)=="starfall")||
|
|
(GetTag(oCreature)=="reaper"))
|
|
{
|
|
oCreature =GetNextObjectInArea(OBJECT_SELF);
|
|
}
|
|
|
|
oTeam = GetFirstFactionMember(oCreature, FALSE);
|
|
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
if (!GetIsDead(oTeam))
|
|
{
|
|
if ((GetResRef(OBJECT_SELF)=="death")|| (GetResRef(OBJECT_SELF)=="bard2")||
|
|
(GetResRef(OBJECT_SELF)=="darcher")||(GetResRef(OBJECT_SELF)=="notime2")
|
|
||(GetResRef(OBJECT_SELF)=="div2")||(GetResRef(OBJECT_SELF)=="pfiend2")
|
|
||(GetResRef(OBJECT_SELF)=="horod2")||(GetResRef(OBJECT_SELF)=="pwar3")
|
|
||(GetResRef(OBJECT_SELF)=="notime1"))
|
|
{
|
|
oDelay = IntToFloat(d3()+3);
|
|
oDelay2 = oDelay - 0.2;
|
|
DelayCommand(oDelay, AssignCommand(oTeam, ClearAllActions()));
|
|
DelayCommand(oDelay, AssignCommand(oTeam, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3)));
|
|
DelayCommand(oDelay2, PlayVoiceChat(VOICE_CHAT_CHEER, oTeam));
|
|
}
|
|
else
|
|
{
|
|
oDelay = IntToFloat(d3()+3);
|
|
oDelay2 = oDelay - 0.2;
|
|
DelayCommand(oDelay, AssignCommand(oTeam, ClearAllActions()));
|
|
DelayCommand(oDelay, AssignCommand(oTeam, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_TAUNT)));
|
|
DelayCommand(oDelay2, PlayVoiceChat(VOICE_CHAT_CHEER, oTeam));
|
|
}
|
|
}
|
|
oTeam = GetNextFactionMember(oCreature, FALSE);
|
|
}
|
|
}
|
|
|
|
|
|
void HolyScore(object oSelf)
|
|
{
|
|
|
|
// initialiise objects
|
|
|
|
object oMod = GetModule();
|
|
object oPC = GetFirstPC();
|
|
object oCreature = oSelf;
|
|
object oKiller = GetLastKiller();
|
|
object oHost = GetObjectByTag("starfall");
|
|
int oDam = GetTotalDamageDealt();
|
|
object oPlayer;
|
|
object oTeam;
|
|
object oPC2;
|
|
// initialise integers
|
|
|
|
int iDice;
|
|
int iKills;
|
|
int iSCount = 0;
|
|
int iPCSide;
|
|
int oBonus;
|
|
int iModCount;
|
|
int iHWkills;
|
|
int oHWhit;
|
|
int oHWdam;
|
|
int oHeaven = GetLocalInt(oMod, "heav_score");
|
|
int oHell = GetLocalInt(oMod, "hell_score");
|
|
int oHeavloss = GetLocalInt(oMod, "heav_loss");
|
|
int oHellloss = GetLocalInt(oMod, "hell_loss");
|
|
int iHvcas = GetLocalInt(oMod, "heav_cas");
|
|
int iHlcas = GetLocalInt(oMod, "hell_cas");
|
|
int iHvTotCas = GetLocalInt(oMod, "iHvTotCas");
|
|
int iHlTotCas = GetLocalInt(oMod, "iHlTotCas");
|
|
int iMostKills = GetLocalInt(oMod, "MostKills");
|
|
int iHWPCkillTot = GetLocalInt(oPC, "iHWPCkillTot");
|
|
int iDfire = GetLocalInt(oMod, "iDfire");
|
|
int iTeamBet = GetLocalInt(oPC, "team_bet");
|
|
int iWager = GetLocalInt(oPC, "wager");
|
|
int iTWwager = GetLocalInt(oPC, "TWwager");
|
|
int iTLwager = GetLocalInt(oPC, "TLwager");
|
|
int iOdds = GetLocalInt(oPC, "iOdds");
|
|
int iOdds2 = GetLocalInt(oPC, "iOdds2");
|
|
int iNPCduel = GetLocalInt(oPC, "npc_duel");
|
|
int iWager2;
|
|
|
|
// initialise strings
|
|
|
|
string sCHbet = GetLocalString(oPC, "CHbet");
|
|
string sKiller;
|
|
string sVictim;
|
|
string sChamp;
|
|
string sTop;
|
|
string sAnnounce;
|
|
string sRes;
|
|
string sRes2;
|
|
string sRes3;
|
|
string mRes;
|
|
|
|
int iXploit = GetLocalInt(oMod, "xcheck");
|
|
|
|
// get module variables for stat tracking
|
|
if (iXploit==1){return;}
|
|
|
|
|
|
sChamp = GetLocalString(oMod, "sChamp");
|
|
sKiller = GetName(oKiller);
|
|
sVictim = GetName(oSelf);
|
|
|
|
if (sKiller ==""){sKiller = "An unseen God";}
|
|
if (sKiller =="The Arena of Champions"){sKiller = "The Phoenix-Dragon";}
|
|
// generate a random death message
|
|
|
|
iDice = d8();
|
|
switch(iDice)
|
|
{
|
|
case 1: {sAnnounce = sKiller+" sends "+sVictim+" into early retirement!";}break;
|
|
case 2: {sAnnounce = sKiller+" paints the pavement red with "+sVictim+"!";}break;
|
|
case 3: {sAnnounce = sKiller+" dices "+sVictim+" into small pieces!";}break;
|
|
case 4: {sAnnounce = sKiller+"'s face is the last thing that "+sVictim+" sees!";}break;
|
|
case 5: {sAnnounce = sVictim+" doesn't survive "+sKiller+"'s brutal attack!";}break;
|
|
case 6: {sAnnounce = sKiller+" decapitates "+sVictim+"!";}break;
|
|
case 7: {sAnnounce = sKiller+" cuts "+sVictim+" clean in half!";}break;
|
|
case 8: {sAnnounce = sKiller+" helps "+sVictim+" to the pavement!";}break;
|
|
}
|
|
if (oKiller==OBJECT_INVALID){sAnnounce = sVictim+" dies from a fatal wound.";}
|
|
// send message to all players
|
|
|
|
oPlayer = GetFirstPC();
|
|
while (GetIsObjectValid(oPlayer))
|
|
{
|
|
SendMessageToPC(oPlayer, sAnnounce);
|
|
oPlayer = GetNextPC();
|
|
}
|
|
|
|
// add to holy war kill totals for PC scoreboard
|
|
|
|
if (GetIsPC(oKiller))
|
|
{
|
|
++iHWPCkillTot;
|
|
SetLocalInt(oKiller, "iHWPCkillTot", iHWPCkillTot);
|
|
}
|
|
|
|
// assign integers to each monsters resref for stat tracking
|
|
|
|
sRes = GetResRef(OBJECT_SELF);
|
|
sRes2 = GetResRef(oKiller);
|
|
sRes+="_x";
|
|
sRes2+="_k";
|
|
sRes3 = GetResRef(oKiller)+"_HWk";
|
|
iKills = GetLocalInt(oMod, sRes2);
|
|
iHWkills = GetLocalInt(oMod, sRes3);
|
|
++iKills;
|
|
++iHWkills;
|
|
SetLocalInt(oMod, sRes3, iHWkills);
|
|
SetLocalInt(oMod, sRes2, iKills);
|
|
SetLocalString(oMod, sRes, " [Dead]");
|
|
|
|
// check to see if the highest kill score has been beaten
|
|
|
|
if (iHWkills>iMostKills)
|
|
{
|
|
SetLocalInt(oMod, "MostKills", iKills);
|
|
sTop = GetName(oKiller);
|
|
iModCount = GetLocalInt(oMod, "champ_count");
|
|
++iModCount;
|
|
SetLocalInt(oMod, "champ_count", iModCount);
|
|
if (!GetIsPC(oKiller))
|
|
{
|
|
oHWdam = GetLocalInt(oPC, "pc_HWdam");
|
|
oHWhit = GetLocalInt(oPC, "pc_HWhit");
|
|
++oHWhit;
|
|
oHWdam+=oDam;
|
|
SetLocalInt(oPC, "pc_HWhit", oHWhit);
|
|
SetLocalInt(oPC, "pc_HWdam", oHWdam);
|
|
mRes = GetResRef(oKiller);
|
|
mRes +="_ch";
|
|
SetLocalInt(oMod, mRes,iModCount);
|
|
}
|
|
|
|
oPC2 = GetFirstPC();
|
|
while (GetIsObjectValid(oPC2))
|
|
{
|
|
if (sTop==GetName(oPC2))
|
|
{
|
|
SetLocalInt(oPC2, "champ_won", 1);
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oPC2, "champ_won", 0);
|
|
}
|
|
oPC2 = GetNextPC();
|
|
}
|
|
sChamp = sTop+" is the match champion with ";
|
|
sChamp += IntToString(iHWkills);
|
|
sChamp += " kills!";
|
|
SetLocalString(oMod, "sChamp", sChamp);
|
|
if (iHWkills==1){sChamp = "The top kill-count was only "+IntToString(iHWkills)+
|
|
" kill. "+sTop+" scored the first kill and is therefore awarded the championship.";}
|
|
|
|
|
|
}
|
|
|
|
// count the remaining members of the creature just killed's faction
|
|
|
|
oTeam = GetFirstFactionMember(oSelf, FALSE);
|
|
while (GetIsObjectValid(oTeam))
|
|
{
|
|
if (!GetIsDead(oTeam))
|
|
{
|
|
++iSCount;
|
|
}
|
|
oTeam = GetNextFactionMember(oSelf, FALSE);
|
|
}
|
|
|
|
// if there are no survivors on the team of the victim - finish the match
|
|
//Message(3.0, IntToString(iSCount), oPC);
|
|
//Message(3.0, IntToString(iDfire), oPC);
|
|
|
|
if ((iSCount==0)&&(iDfire!=1))
|
|
{
|
|
|
|
if ((GetResRef(oCreature)=="dragon1")||(GetResRef(oCreature)=="zep_halfdrafn001")||
|
|
(GetResRef(oCreature)=="zep_marilithb001")||(GetResRef(oCreature)=="bard2")||
|
|
(GetResRef(oCreature)=="zep_pitfiend001")||(GetResRef(oCreature)=="zep_balrog001")||
|
|
(GetResRef(oCreature)=="dopple")||(GetResRef(oCreature)=="mistress2")||
|
|
(GetResRef(oCreature)=="notime3")||(GetResRef(oCreature)=="notime4")||
|
|
(GetResRef(oCreature)=="darcher")||(GetResRef(oCreature)=="death"))
|
|
{
|
|
SetLocalInt(oMod, "iDfire", 1);
|
|
oPC = GetFirstPC();
|
|
while (GetIsObjectValid(oPC))
|
|
{
|
|
iPCSide = GetLocalInt(oPC, "pc_side");
|
|
switch (iPCSide)
|
|
{
|
|
case 0: {
|
|
if (iTeamBet==1)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
iWager2=iWager*2;
|
|
iTWwager+=iWager2-iWager;
|
|
SetLocalInt(oPC, "TWwager", iTWwager);
|
|
SetLocalInt(oPC, "winnings", iWager);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
Message(6.0, "** You won "+IntToString(iWager2)+" gold: Collect at the tote **", oPC);
|
|
}
|
|
else if (iTeamBet==2)
|
|
{
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
SetLocalInt(oPC, "winnings", 0);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
Message(6.0, "** You lost the bet **", oPC);
|
|
}
|
|
else if (iTeamBet==3)
|
|
{
|
|
if (sTop==sCHbet)
|
|
{
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
Normalize(oPC);
|
|
iWager2 =(iWager*iOdds);
|
|
iTWwager+=iWager2-iWager;
|
|
SetLocalInt(oPC, "TWwager", iTWwager);
|
|
SetLocalInt(oPC, "winnings", iWager2);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
Message(6.0, "** You won "+IntToString(iWager2)+" gold: Collect at the tote **", oPC);
|
|
}
|
|
else
|
|
{
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
SetLocalInt(oPC, "winnings", 0);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
Message(6.0, "** You lost the bet **", oPC);
|
|
}
|
|
}
|
|
else if (iTeamBet==4)
|
|
{
|
|
if (sTop==sCHbet)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
iWager2 =(iWager*iOdds2);
|
|
iTWwager+=iWager2-iWager;
|
|
SetLocalInt(oPC, "TWwager", iTWwager);
|
|
SetLocalInt(oPC, "winnings", iWager2);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
Message(6.0, "** You won "+IntToString(iWager2)+" gold: Collect at the tote **", oPC);
|
|
}
|
|
else
|
|
{
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
SetLocalInt(oPC, "winnings", 0);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
Message(6.0, "** You lost the bet **", oPC);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_LAUGHING, 1.0f, 4.0f));
|
|
}
|
|
}break;
|
|
|
|
case 1: {
|
|
if (iTeamBet!=0)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
Message(6.0, "** You forfeited the bet by joining a team**", oPC);
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
SetLocalInt(oPC, "winnings",0);
|
|
}
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY2));
|
|
}break;
|
|
case 2: {
|
|
if (iTeamBet!=0)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
Message(6.0, "** You forfeited the bet by joining a team**", oPC);
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
SetLocalInt(oPC, "winnings",0);
|
|
}
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
}break;
|
|
}
|
|
if ((iTeamBet==4)||(iNPCduel==1))
|
|
{
|
|
//SetLocalInt(oPC, "npc_duel", 0);
|
|
Message(3.0, "** "+sTop+" has prevailed **", oPC);
|
|
}
|
|
else
|
|
{
|
|
Message(2.0, "*** The army of light has prevailed ***", oPC);
|
|
Message(4.0, sChamp, oPC);
|
|
}
|
|
if ((GetLocalInt(oPC, "champ_won")==1)&&(iTeamBet==0)&&(iNPCduel!=1))
|
|
{
|
|
oBonus = 50000;
|
|
SendMessageToPC(oPC, "Match championship prize money: "+IntToString(oBonus)+" gold");
|
|
GiveGoldToCreature(oPC, oBonus);
|
|
PlaySound("it_coins");
|
|
}
|
|
else {SetLocalInt(oPC, "champ_won", 0);}
|
|
oPC = GetNextPC();
|
|
}
|
|
++oHeaven;
|
|
++oHellloss;
|
|
++iHlcas;
|
|
++iHlTotCas;
|
|
SetLocalInt(oMod, "hell_cas", iHlcas);
|
|
SetLocalInt(oMod, "iHlTotCas", iHlTotCas);
|
|
SetLocalInt(oMod, "heav_score", oHeaven);
|
|
SetLocalInt(oMod, "hell_loss", oHellloss);
|
|
SetLocalInt(oMod, "war_won", 1);
|
|
//AssignCommand(oHost, SpeakString("The divine Tyriel and his holy warriors have been victorious!", TALKVOLUME_SHOUT));
|
|
DelayCommand(1.0, TeamCheer());
|
|
DelayCommand(2.5, AddJournalQuestEntry("war_heav", 1, oPC, FALSE, FALSE));
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
SetLocalInt(oMod, "iDfire", 1);
|
|
oPC = GetFirstPC();
|
|
while (GetIsObjectValid(oPC))
|
|
{
|
|
iPCSide = GetLocalInt(oPC, "pc_side");
|
|
switch (iPCSide)
|
|
{
|
|
case 0: {
|
|
if (iTeamBet==2)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
iWager2=iWager*2;
|
|
iTWwager+=iWager2-iWager;
|
|
SetLocalInt(oPC, "TWwager", iTWwager);
|
|
SetLocalInt(oPC, "winnings", iWager);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
Message(6.0, "** You won "+IntToString(iWager2)+" gold: Collect at the tote **", oPC);
|
|
}
|
|
else if (iTeamBet==1)
|
|
{
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
SetLocalInt(oPC, "winnings", 0);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
Message(6.0, "** You lost the bet **", oPC);
|
|
}
|
|
else if (iTeamBet==3)
|
|
{
|
|
if (sTop==sCHbet)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
iWager2 = (iWager*iOdds);
|
|
iTWwager+=iWager2-iWager;
|
|
SetLocalInt(oPC, "TWwager", iTWwager);
|
|
SetLocalInt(oPC, "winnings", iWager2);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
Message(6.0, "** You won "+IntToString(iWager2)+" gold: Collect at the tote **", oPC);
|
|
}
|
|
else
|
|
{
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
SetLocalInt(oPC, "winnings", 0);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
Message(6.0, "** You lost the bet **", oPC);
|
|
}
|
|
}
|
|
else if (iTeamBet==4)
|
|
{
|
|
if (sTop==sCHbet)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
iWager2 =(iWager*iOdds2);
|
|
iTWwager+=iWager2-iWager;
|
|
SetLocalInt(oPC, "TWwager", iTWwager);
|
|
SetLocalInt(oPC, "winnings", iWager2);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY3));
|
|
Message(6.0, "** You won "+IntToString(iWager2)+" gold: Collect at the tote **", oPC);
|
|
}
|
|
else
|
|
{
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
SetLocalInt(oPC, "winnings", 0);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
Message(6.0, "** You lost the bet **", oPC);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_LAUGHING, 1.0f, 4.0f));
|
|
}
|
|
}break;
|
|
case 1: {
|
|
if (iTeamBet!=0)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
Message(6.0, "** You forfeited the bet by joining a team**", oPC);
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
SetLocalInt(oPC, "winnings",0);
|
|
}
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_LOOPING_TALK_FORCEFUL, 1.0f, 8.0f));
|
|
}break;
|
|
case 2: {
|
|
if (iTeamBet!=0)
|
|
{
|
|
Normalize(oPC);
|
|
SetLocalInt(oPC, "bet_confirmed", 0);
|
|
Message(6.0, "** You forfeited the bet by joining a team**", oPC);
|
|
iTLwager+=iWager;
|
|
SetLocalInt(oPC, "TLwager", iTLwager);
|
|
SetLocalInt(oPC, "wager", 0);
|
|
SetLocalInt(oPC, "team_bet", 0);
|
|
SetLocalInt(oPC, "winnings",0);
|
|
}
|
|
AssignCommand(oPC, ClearAllActions());
|
|
AssignCommand(oPC, ActionPlayAnimation
|
|
(ANIMATION_FIREFORGET_VICTORY2));
|
|
}break;
|
|
|
|
}
|
|
if ((iTeamBet==4)||(iNPCduel==1))
|
|
{
|
|
//SetLocalInt(oPC, "npc_duel", 0);
|
|
Message(3.0, "** "+sTop+" has prevailed **", oPC);
|
|
}
|
|
else
|
|
{
|
|
Message(2.0, "*** The army of darkness has prevailed ***", oPC);
|
|
Message(4.0, sChamp, oPC);
|
|
}
|
|
if ((GetLocalInt(oPC, "champ_won")==1)&&(iTeamBet==0)&&(iNPCduel!=1))
|
|
{
|
|
oBonus = 50000;
|
|
SendMessageToPC(oPC, "Match championship prize money: "+IntToString(oBonus)+" gold");
|
|
GiveGoldToCreature(oPC, oBonus);
|
|
PlaySound("it_coins");
|
|
}
|
|
else {SetLocalInt(oPC, "champ_won", 0);}
|
|
oPC = GetNextPC();
|
|
}
|
|
++oHell;
|
|
++oHeavloss;
|
|
++iHvcas;
|
|
++iHvTotCas;
|
|
SetLocalInt(oMod, "heav_cas", iHvcas);
|
|
SetLocalInt(oMod, "iHvTotCas", iHvTotCas);
|
|
SetLocalInt(oMod, "hell_score", oHell);
|
|
SetLocalInt(oMod, "heav_loss", oHeavloss);
|
|
SetLocalInt(oMod, "war_won", 1);
|
|
//AssignCommand(oHost, SpeakString("The Dark Lord and his minions have been victorious!", TALKVOLUME_SHOUT));
|
|
DelayCommand(1.0, TeamCheer());
|
|
DelayCommand(2.5, AddJournalQuestEntry("war_hell", 1, oPC, FALSE, FALSE));
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ((GetResRef(oCreature)=="dragon1")||(GetResRef(oCreature)=="zep_halfdrafn001")||
|
|
(GetResRef(oCreature)=="zep_marilithb001")||(GetResRef(oCreature)=="bard2")||
|
|
(GetResRef(oCreature)=="zep_pitfiend001")||(GetResRef(oCreature)=="zep_balrog001")||
|
|
(GetResRef(oCreature)=="dopple")||(GetResRef(oCreature)=="mistress2")||
|
|
(GetResRef(oCreature)=="notime3")||(GetResRef(oCreature)=="notime4")||
|
|
(GetResRef(oCreature)=="darcher")||(GetResRef(oCreature)=="death"))
|
|
{
|
|
++iHlTotCas;
|
|
++iHlcas;
|
|
SetLocalInt(oMod, "hell_cas", iHlcas);
|
|
SetLocalInt(oMod, "iHlTotCas", iHlTotCas);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
++iHvcas;
|
|
++iHvTotCas;
|
|
SetLocalInt(oMod, "iHvTotCas", iHvTotCas);
|
|
SetLocalInt(oMod, "heav_cas", iHvcas);
|
|
return;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//void main () {}
|
|
|