summaryrefslogtreecommitdiff
path: root/npc/009-7/eventHandler.txt
blob: 3f2df68a29c10bb6de7de47616a44ef467d247a7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
009-7,45,33,0	script	#trapdoor2FightClub	NPC327,0,0,{
    if(countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20)) goto L_Enter;
    end;

L_Enter:
    warp "009-7",34,22; // this warp is a special thanks for contributors
    end;
}
009-7,33,21,0	script	#trapdoor3FightClub	NPC327,0,0,{
    warp "009-7",44,32;
    end;
}

009-7,22,38,0	script	#FightClubUtils	NPC32767,{
    end;

OnIntrusion:
    if(getgmlevel() >= 60) end; // allow GMs to be in the ring
    if(getcharid(3) == $@Duel_RedPlayer) end; // do not kill the red fighter
    if(getcharid(3) == $@Duel_BluePlayer) end; // do not kill the blue fighter
    donpcevent "Rouge#Duels::OnAnnounceIntrusion";
    callfunc "fightclub_DestroyMe"; // only kill the intruder(s)
    end;

OnDelayedStart:
    callfunc "fightclub_StartBattle";
    end;

OnDelayedNextBattle:
    callfunc "fightclub_NextBattleProceed";
    end;

OnBecomeKiller:
    callfunc "fightclub_enter_killer";
    end;

OnCommandIntrusion:
    areatimer 0, "009-7", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2, 0, "#FightClubUtils::OnIntrusion"; // we can not do this directly on #handler because it already have a timer
    end;
}

009-7,20,45,0	script	#FightClubTimeLimit	NPC32767,0,0,{
    end;

OnStartTimer:
    $@Duel_TotalTime = 0;
    goto L_StartTimer;

OnStopTimer:
    stopnpctimer;
    end;

OnTimer1000:
    $@Duel_TotalTime = ($@Duel_TotalTime + 1);
    if($@Duel_TotalTime >= $@Duel_TimeLimit) goto L_TimeOut;
    goto L_StartTimer;

L_TimeOut:
    stopnpctimer;
    callfunc "fightclub_TimeOut";
    end;

L_StartTimer:
    setnpctimer 0;
    initnpctimer;
    end;

OnInit:
    $@Duel_TotalTime = 0;
    end;
}

009-7,20,44,0	script	#FightClubHandler	NPC32767,0,0,{
    end;

OnInit:
    // this event is called when the map server boots up
    $@fightclub_x1 = 27;
    $@fightclub_y1 = 42;
    $@fightclub_x2 = 38;
    $@fightclub_y2 = 48;
    callfunc "fightclub_StartUp";
    callfunc "fightclub_CleanStage";
    goto L_StartTimer;

L_StartTimer:
    if($SANGUINE & $@SV_FCDBit != 0) end;
    if(debug >= 2) end;
    setnpctimer 0;
    initnpctimer;
    end;

OnTimer2000:
    // this events checks who is on stage every 2 seconds
    set $@areausers, getareausers("009-7", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2); // get the number of players on stage
    if (($@areausers > 2) || (($@Duel_CurrentDuel < 1) && ($@areausers >= 1))) goto L_Intrusion; // too many players on the stage
    if (($@Duel_CurrentDuel < 1) && ($@Duel_Started != 1)) goto L_Request; // start the next duel
    if ($@Duel_Started != 1) goto L_StartTimer; // no intrusion and no duel ongoing so loop again
    if (attachrid($@Duel_BluePlayer) == 0) goto L_BlueMissing;
    if (isin("009-7", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2) == 0) goto L_BlueMissing;
    if (ispcdead() == 1) goto L_IAmACorpse;
    if (attachrid($@Duel_RedPlayer) == 0) goto L_RedMissing;
    if (isin("009-7", $@fightclub_x1, $@fightclub_y1, $@fightclub_x2, $@fightclub_y2) == 0) goto L_RedMissing;
    if (ispcdead() == 1) goto L_IAmACorpse;
    detachrid;
    goto L_StartTimer;

L_Request:
    callfunc "fightclub_NextBattle";
    goto L_StartTimer;

L_IAmACorpse:
    $@duel_loser = getcharid(3);
    callfunc "fightclub_death";
    goto L_StartTimer;

L_RedMissing:
    $@Duel_Missing = 1;
    callfunc "fightclub_Missing";
    goto L_StartTimer;

L_BlueMissing:
    $@Duel_Missing = 2;
    callfunc "fightclub_Missing";
    goto L_StartTimer;

L_Intrusion:
    donpcevent "#FightClubUtils::OnCommandIntrusion"; // we can not attach a second timer to this npc so we use another one
    callfunc "fightclub_Intrusion";
    goto L_StartTimer;
}