AOC_PRC8/_module/nss/monster_bye.nss

233 lines
9.8 KiB
Plaintext
Raw Permalink Normal View History

2025-04-03 11:24:16 -04:00
#include "spawner"
#include "x0_i0_petrify"
#include "eradicate"
void main()
{
object oPC = GetLastUsedBy();
object oTarget;
object oMod = GetModule();
object oSpawner;
object oDeath = GetObjectByTag("reaper");
effect eEffect= EffectDeath();
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");
object oMonster;
effect eEffect2 = EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY);
int oMode = GetLocalInt(oMod, "duel_on");
int iHwar = GetLocalInt(oMod, "hwar_on");
int iTurnFlag = GetLocalInt(oMod, "turn_flag");
int iJoinSwitch = GetLocalInt(oPC, "join_switch");
int iConfirm = GetLocalInt(oPC, "bet_confirmed");
int iWarWon = GetLocalInt(oMod, "war_won");
int iTLwager = GetLocalInt(oPC, "TLwager");
int iWager = GetLocalInt(oPC, "wager");
int mCount=0;
int iHappy = GetLocalInt(oPC, "iHappy");
if ((iConfirm==1)&&(iWarWon!=1))
{
iTLwager+=iWager;
SetLocalInt(oPC, "TLwager", iTLwager);
Message(5.0, "** You have forfeited the bet **", oPC);
SetLocalInt(oPC, "bet_confirmed", 0);
}
//FloatingTextStringOnCreature(IntToString(GetLocalInt(oMod, "hwar_on")), oPC);
//FloatingTextStringOnCreature(IntToString(GetLocalInt(oPC, "join_switch")), oPC);
//FloatingTextStringOnCreature(IntToString(GetLocalInt(oMod, "turn_flag")), oPC);
if ((iHwar==1)&&(iTurnFlag!=1)&&(iJoinSwitch==1))
{
PlaySound("gui_select");
SetLocalInt(oMod, "xcheck", 1);
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(oPC, "champ_won", 0);
SetLocalInt(oMod, "war_won", 1);
Eradicate(oPC);
oSpawner = GetObjectByTag("spawner");
AssignCommand(oSpawner, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
}
else
{
object oLast = GetFirstObjectInArea(GetArea(oPC));
while (GetIsObjectValid(oLast))
{
if ((GetObjectType(oLast)==OBJECT_TYPE_CREATURE)&&(!GetIsPC(oLast))&&
(!GetIsDead(oLast))&&(GetTag(oLast)!="reaper")&&(GetTag(oLast)!="starfall"))
{
++mCount;
//FloatingTextStringOnCreature(GetName(oLast), oPC);
}
if ((GetTag(oLast)=="starfall")&&(GetIsEnemy(oLast, oPC)))
{
++mCount;
}
oLast = GetNextObjectInArea(GetArea(oPC));
}
if (mCount!=0)
{
//FloatingTextStringOnCreature(IntToString(mCount), oPC);
if (iHappy==1)
{PlaySound("gui_select");}
else
{PlaySound("sce_negative");}
SetLocalInt(oMod, "xcheck", 1);
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);
if (oMode==1)
{
PlaySound("sps_darkness");
SetIsTemporaryFriend(oPC, GetObjectByTag("starfall"));
object oTarget2 = GetObjectByTag("starfall");
location oLoc = GetLocation(oTarget2);
int iDied = GetLocalInt (oPC,"iDied");
++iDied;
SetLocalInt(oPC,"iDied",iDied);
FloatingTextStringOnCreature("You have surrendered and lost the duel", oPC);
SetLocked(GetObjectByTag("arena_gate"), FALSE);
AssignCommand(oLever1, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oLever2, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
RemoveEffectOfType(oP1, GetEffectType(eEffect2));
RemoveEffectOfType(oP2, GetEffectType(eEffect2));
RemoveEffectOfType(oP3, GetEffectType(eEffect2));
RemoveEffectOfType(oP4, GetEffectType(eEffect2));
SetLocalInt(oMod, "fountain_state", 0);
SetLocalInt(oMod, "pool_state", 0);
SetIsTemporaryFriend(oPC, GetObjectByTag("starfall"));
DelayCommand(0.1, AssignCommand(oTarget2, ClearAllActions()));
DelayCommand(1.9, AssignCommand
(GetObjectByTag("starfall"), ActionSpeakString("You are wise to surrender, mortal",TALKVOLUME_SHOUT)));
DelayCommand(2.0, AssignCommand
(GetObjectByTag("starfall"), ActionPlayAnimation(ANIMATION_FIREFORGET_BOW)));
DelayCommand(4.0, AssignCommand
(GetObjectByTag("starfall"), ActionSpeakString("You know where to find me if you wish to try again.",TALKVOLUME_SHOUT)));
DelayCommand(7.0, AssignCommand
(oTarget2, ActionPlayAnimation(ANIMATION_FIREFORGET_VICTORY2)));
DelayCommand(8.5, ApplyEffectAtLocation(DURATION_TYPE_INSTANT,
EffectVisualEffect(VFX_IMP_REMOVE_CONDITION), oLoc));
DelayCommand(9.0, AssignCommand
(oTarget2, JumpToLocation(GetLocation(GetObjectByTag ("starfall_wp")))));
SetLocalInt(oMod, "duel_on",0);
DelayCommand(9.2, Cast(SPELL_GREATER_RESTORATION, oTarget2));
DelayCommand(9.5, RemoveEffectOfType(oTarget2, EFFECT_TYPE_CONCEALMENT));
}
else
{
SetLocalInt(oMod, "xcheck", 1);
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);
AssignCommand(oLever1, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
AssignCommand(oLever2, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
RemoveEffectOfType(oP1, GetEffectType(eEffect2));
RemoveEffectOfType(oP2, GetEffectType(eEffect2));
RemoveEffectOfType(oP3, GetEffectType(eEffect2));
RemoveEffectOfType(oP4, GetEffectType(eEffect2));
SetLocalInt(oMod, "fountain_state", 0);
SetLocalInt(oMod, "pool_state", 0);
SetLocked(GetObjectByTag("arena_gate"), FALSE);
SetLocalInt(oMod, "hwar_on", 0);
SetLocalInt(oMod, "scre2_state", 0);
SetLocalInt(oMod, "scre_state", 0);
SetLocalInt(oMod, "scre_state3", 0);
SetLocalInt(oMod, "scre_state4", 0);
Eradicate(oPC);
}
oSpawner = GetObjectByTag("spawner");
AssignCommand(oSpawner, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
}
else
{
PlaySound("sim_cntresist");
FloatingTextStringOnCreature("** No enemies present **", oPC);
}
}
}