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
|
// TMW2 Scripts
// Author: Crazyfefe
// Jesusalva
// Desc: Mob Points for Aidan & Ishi. You will gain MONSTER-LEVEL mob points.
// fix_mobkill(mobID) → Manual fix for scripted mobs
function script fix_mobkill {
killedrid=getarg(0);
doevent "#mobptsys::OnNPCKillEvent";
return;
}
function script mobpoint {
if (!MPQUEST)
return;
//if (killedrid < 1002) goto L_Return;
// You get MobLv + 20% as MobPoints.
// So a level 100 monster gives you 120 MobPt. Slimes gives no bonus.
if (compare("slime", strtolower(strmobinfo(1, killedrid))))
.@addval=strmobinfo(3,killedrid);
else
.@addval=strmobinfo(3,killedrid)*12/10;
Mobpt = Mobpt + .@addval;
return;
}
- script #mobptsys NPC_HIDDEN,{
end;
OnUnlock:
if (checkpcblock() & PCBLOCK_ATTACK)
setpcblock(PCBLOCK_ATTACK|PCBLOCK_SKILL|PCBLOCK_USEITEM|PCBLOCK_MOVE|PCBLOCK_COMMANDS, false);
end;
OnNPCKillEvent:
$MONSTERS_KILLED+=1;
if (killedrid == MonsterKing) {
announce "An illusionary monster king was killed.", bc_all | bc_pc;
getexp min(641500, BaseLevel**3), 0;
}
// Remove undue Job exp
// The check is probably correct, but setparam is not working =/
/*
*/
if (strmobinfo(7, killedrid) == 0 && readparam(JobExp) > 0) {
//setparam(JobExp, readparam(JobExp)-1);
JobExp-=1;
}
// call functions
callfunc "mobpoint";
callfunc "mobhunter";
callfunc "SQuest_Hasan";
callfunc "SaggyMobCount";
callfunc "dausen_mobtutorial";
callfunc "Guardhouse_RandQuestCheck";
killedrid=0;
end;
// When you kill a player, some special care is needed
// Only a few maps will give you experience for PK: Tulimshar's Guards Arena,
// Frostia Imperial PVP Arena, Call Of Dusty, Arena Quirino Voraz.
OnPCKillEvent:
$PLAYERS_KILLED+=1;
// killedrid
.@m$=getmap();
// TODO: Start using readparam2() to read if the opponent was worthy
// That is, read total attack, defense, HP, evasion and hit chance
// And compare with your own readparam2(), then use a % and a table
// based on your (assassin's) level.
.@bxp=readparam(BaseLevel, killedrid);
.@jxp=readparam(JobLevel, killedrid);
if (compare(.@m$, "001-8")) {
// Quirino Voraz PVP Arena
// You get 5 times killed player level, and 1 time job level
getexp .@bxp*5, .@jxp;
} else if (compare(.@m$, "ARENA") || compare(.@m$, "003-13")) {
// Tulimshar Duel Arena
// You get 3 times killed player level, and 2 times job level
getexp .@bxp*3, .@jxp*2;
} else if (compare(.@m$, "001-10")) {
// Call Of Dusty
// You get 3 times killed player level, and 3 times job level
getexp .@bxp*3, .@jxp*3;
} else if (compare(.@m$, "001-10-1")) {
// Call Of Dusty Boss Room
// You _may_ get a Bottled Dusty at random, but dead player status affect
.@bagistr=(readparam(bAgi, killedrid)*2)+readparam(bDex, killedrid);
//.@b2=readparam(MaxHp, killedrid);
if (.@bagistr > 20)
if (rand(0,250) < readparam(bLuk)+readparam(bLuk, killedrid))
getitem BottledDust, 1;
} else {
// Anywhere else
// You get 0.5 times killed player level, and 0 times job level
getexp (.@bxp/2), 0;
}
end;
}
|