Moved some remaining constants into src (#2501)
* Moved all npc view constants into src Source side the constants will use Gravity's naming standard(JT_*) NPC side still supports the old names without JT_ * Moved all effect constants into src Added check for effect validation to atcommand effect and all script commands using them Removed the unused and broken function unit_changeviewsize from unit.c Replaced a lot of hardcoded effect ids with their respective constants Cleaned up the effect documentations * Moved all hat effect constants into src Added check for effect validation to script command hateffect
This commit is contained in:
parent
951ff55573
commit
f42c2ff211
@ -1621,7 +1621,8 @@
|
||||
1475: ---- My Channels ----
|
||||
1476: You have not joined any channels.
|
||||
|
||||
//1477 free
|
||||
// @effect
|
||||
1477: Please enter a valid effect id in the range from %d to %d.
|
||||
|
||||
// @partysharelvl
|
||||
1478: Party share level range has been changed successfully.
|
||||
|
2112
db/const.txt
2112
db/const.txt
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,7 @@
|
||||
//===== By: ==================================================
|
||||
//= rAthena Dev Team
|
||||
//===== Last Updated: ========================================
|
||||
//= 20160313
|
||||
//= 20171011
|
||||
//===== Description: =========================================
|
||||
//= List of available atcommands and their functions.
|
||||
//============================================================
|
||||
@ -226,14 +226,24 @@ New warp NPC 'my_warp_sample' created.
|
||||
@effect <effect ID>
|
||||
|
||||
Creates a visual effect on or around the character.
|
||||
A list of IDs can be found in '/db/const.txt'.
|
||||
Descriptions of the effects can be found in '/doc/effect_list.txt'.
|
||||
A list of IDs and descriptions of the effects can be found in '/doc/effect_list.txt'.
|
||||
|
||||
---------------------------------------
|
||||
|
||||
@misceffect
|
||||
@misceffect <effect ID>
|
||||
|
||||
Does some visual effect on the character (more info needed).
|
||||
Does some visual effect on the character.
|
||||
Possible effect IDs:
|
||||
0 = base level up
|
||||
1 = job level up
|
||||
2 = refine failure
|
||||
3 = refine success
|
||||
4 = game over
|
||||
5 = pharmacy success
|
||||
6 = pharmacy failure
|
||||
7 = base level up (super novice)
|
||||
8 = job level up (super novice)
|
||||
9 = base level up (taekwon)
|
||||
|
||||
---------------------------------------
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
//===== By: ==================================================
|
||||
//= rAthena Dev Team
|
||||
//===== Last Updated: ========================================
|
||||
//= 20120822
|
||||
//= 20171011
|
||||
//===== Description: =========================================
|
||||
//= A list of client-side effects sorted by ID.
|
||||
//============================================================
|
||||
@ -11,7 +11,7 @@
|
||||
The following is a compiled list of visual and sound effects which the client
|
||||
can produce when receiving a packet with id 0x1f3 (01f3 <ID>.l <type>.l).
|
||||
Each list entry contains a number and a short description of the effect.
|
||||
You can produce these effects ingame by doing "@effect <number> 22" (22=self).
|
||||
You can produce these effects ingame by doing "@effect <number>".
|
||||
It's also possible to attach effects to item/npc scripts by using 'misceffect'.
|
||||
|
||||
Number Description
|
||||
|
@ -3,7 +3,7 @@
|
||||
//===== By:==================================================
|
||||
//= rAthena Dev Team
|
||||
//===== Last Updated:========================================
|
||||
//= 20161206
|
||||
//= 20171011
|
||||
//===== Description:=========================================
|
||||
//= A reference manual for the rAthena scripting language.
|
||||
//= Commands are sorted depending on their functionality.
|
||||
@ -7343,7 +7343,7 @@ Example:
|
||||
bindatcmd "test",strnpcinfo(3) + "::OnAtcommand";
|
||||
end;
|
||||
OnAtcommand:
|
||||
specialeffect2 338;
|
||||
specialeffect2 EF_ANGEL2;
|
||||
end;
|
||||
}
|
||||
|
||||
@ -9577,7 +9577,8 @@ solution rather than sending the map and the monster_id.
|
||||
|
||||
This will set a Hat Effect onto the player. The state field allows you to
|
||||
enable (true) or disable (false) the effect on the player.
|
||||
The Hat Effect constants can be found in db/const.txt starting with HAT_EF_*.
|
||||
The Hat Effect constants can be found in 'src/map/script_constants.h' starting
|
||||
with HAT_EF_*.
|
||||
|
||||
Requires client 2015-05-13aRagEXE or newer.
|
||||
|
||||
|
@ -62,9 +62,9 @@ M_INFO:
|
||||
|
||||
OnInit:
|
||||
//559,Hand-made_Chocolate
|
||||
setitemscript 559,"{ itemheal 50,50; if(Sex==SEX_FEMALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect 113; }";
|
||||
setitemscript 559,"{ itemheal 50,50; if(Sex==SEX_FEMALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect EF_MAGNUS; }";
|
||||
//560,Hand-made_White_Chocolate
|
||||
setitemscript 560,"{ itemheal 50,50; if(Sex==SEX_MALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect 113; }";
|
||||
setitemscript 560,"{ itemheal 50,50; if(Sex==SEX_MALE || @dsv == gettime(DT_HOUR)+1 || ispartneron()==0)end; set @dsv,gettime(DT_HOUR)+1; misceffect EF_MAGNUS; }";
|
||||
|
||||
//2634,Wedding_Ring_M,Wedding Ring,5,,10,0,,0,,0,127918079,7,1,136,,0,0,0,{ skill 334,1; skill 335,1; skill 336,1; }
|
||||
setitemscript 2634,"{ skill 334,1; skill 335,1; skill 336,1; if(@dsv == gettime(DT_HOUR)+1 && ispartneron()){ bonus2 bExpAddRace,5,50; bonus2 bExpAddRace,6,50; bonus2 bExpAddRace,7,50; bonus2 bExpAddRace,8,50; bonus2 bExpAddRace,1,50; } }";
|
||||
|
@ -91,7 +91,7 @@ M_QUEST:
|
||||
|
||||
OnInit:
|
||||
//Santa's Hat
|
||||
setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 410; end;} if(isequipped(2636)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 72;} if(isequipped(2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect 338;}}";
|
||||
setitemscript 2236,"{ bonus bMdef,1; bonus bLuk,1; if(isequipped(2636,2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_RAINBOW; end;} if(isequipped(2636)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_SPHERE;} if(isequipped(2637)){if(@xmr == gettime(DT_MINUTE))end; set @xmr,gettime(DT_MINUTE); misceffect EF_ANGEL2;}}";
|
||||
//Gold Xmas Ring
|
||||
setitemscript 2636,"{ bonus bLoseSPWhenUnequip,30; if(isequipped(2236)==0)end; if(getskilllv(\"AL_HEAL\")){skill \"TF_HIDING\",4+isequipped(2637);}else{skill \"AL_HEAL\",1+4*isequipped(2637);} }";
|
||||
//Silver Xmas Ring
|
||||
|
@ -183,12 +183,13 @@ OnTimer2500:
|
||||
.@r = rand(0,1);
|
||||
if (.@r != 0 ) { stopnpctimer; initnpctimer; end; }
|
||||
stopnpctimer;
|
||||
specialeffect .effects[rand(0,18)],AREA,instance_npcname(strnpcinfo(0));
|
||||
specialeffect .effects[rand(getarraysize(.effects))],AREA,instance_npcname(strnpcinfo(0));
|
||||
initnpctimer;
|
||||
end;
|
||||
|
||||
OnInit:
|
||||
setarray .effects,97,255,28,256,29,257,244,92,32,195,258,22,62,234,89,30,225,116,94;
|
||||
setarray .effects[0],EF_FIREPILLARBOMB,EF_FLAMELAUNCHER,EF_FROSTDIVER2,EF_FROSTWEAPON,EF_LIGHTBOLT,EF_LIGHTNINGLOADER,EF_MAGICROD,EF_METEORSTORM,EF_NAPALMBEAT;
|
||||
setarray .effects[9],EF_PETRIFYATTACK,EF_SEISMICWEAPON,EF_SIGHT,EF_SIGHTRASHER,EF_SPELLBREAKER,EF_STORMGUST,EF_THUNDERSTORM,EF_VOLCANO,EF_WATERBALL,EF_YUFITELHIT;
|
||||
hideonnpc strnpcinfo(0);
|
||||
end;
|
||||
|
||||
@ -2289,7 +2290,7 @@ OnEnd:
|
||||
mes "Enjoy.";
|
||||
mes "Good luck on the next round!";
|
||||
percentheal 100,100;
|
||||
specialeffect2 312;
|
||||
specialeffect2 EF_HEAL;
|
||||
close2;
|
||||
hideonnpc instance_npcname("Tournament Healer#1"); // 83649
|
||||
end;
|
||||
@ -2303,13 +2304,13 @@ end;
|
||||
OnStart:
|
||||
initnpctimer;
|
||||
for ( .@i = 11; .@i <= 20; .@i++ ) {
|
||||
specialeffect .effect[rand(3)], AREA, instance_npcname("#fireworks_" +.@i);
|
||||
specialeffect .effect[getarraysize(.effect)], AREA, instance_npcname("#fireworks_" +.@i);
|
||||
}
|
||||
end;
|
||||
OnTimer6000:
|
||||
initnpctimer;
|
||||
for ( .@i = 0; .@i < 5; .@i++) {
|
||||
specialeffect .effect[rand(3)], AREA, instance_npcname("#fireworks_" + rand(11,20));
|
||||
specialeffect .effect[getarraysize(.effect)], AREA, instance_npcname("#fireworks_" + rand(11,20));
|
||||
}
|
||||
end;
|
||||
|
||||
@ -2319,23 +2320,23 @@ OnTurn:
|
||||
|
||||
OnWin:
|
||||
for ( .@i = 1; .@i <= 5; .@i++ ) {
|
||||
specialeffect 90, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
specialeffect EF_LORD, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
}
|
||||
sleep 3000;
|
||||
for ( .@i = 1; .@i <= 5; .@i++ ) {
|
||||
specialeffect 62, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
specialeffect EF_SIGHTRASHER, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
}
|
||||
sleep 500;
|
||||
for ( .@i = 1; .@i <= 5; .@i++ ){
|
||||
specialeffect 89, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
specialeffect EF_STORMGUST, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
}
|
||||
sleep 3000;
|
||||
for ( .@i = 1; .@i <= 5; .@i++ ) {
|
||||
specialeffect 237, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
specialeffect EF_VIOLENTGALE, AREA, instance_npcname("#fireworks_f" + .@i);
|
||||
}
|
||||
end;
|
||||
OnInstanceInit:
|
||||
setarray .effect, 30, 89, 92;
|
||||
setarray .effect, EF_THUNDERSTORM, EF_STORMGUST, EF_METEORSTORM;
|
||||
end;
|
||||
}
|
||||
|
||||
@ -4098,9 +4099,9 @@ OnTimer1000:
|
||||
|
||||
switch('gmt_timer_evt1) {
|
||||
case 1:
|
||||
specialeffect 220, AREA, instance_npcname("Geffen Gangster#1");
|
||||
specialeffect 220, AREA, instance_npcname("Geffen Gangster#2");
|
||||
specialeffect 220, AREA, instance_npcname("Geffen Gangster#3");
|
||||
specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#1");
|
||||
specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#2");
|
||||
specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Gangster#3");
|
||||
npctalk "Geffen Gangster : You're pretty good...!", instance_npcname("Geffen Gangster#1");
|
||||
npctalk "Geffen Gangster : We should stop playing around...", instance_npcname("Geffen Gangster#2");
|
||||
npctalk "Geffen Gangster : You're gonna pay the price!", instance_npcname("Geffen Gangster#3");
|
||||
@ -4112,7 +4113,7 @@ OnTimer1000:
|
||||
break;
|
||||
case 8: npctalk "Iris : That's enough.", instance_npcname("Iris#Gef1"); break;
|
||||
case 11: npctalk "Iris : I won't forgive you~!", instance_npcname("Iris#Gef1"); break;
|
||||
case 13: specialeffect 204, AREA, instance_npcname("Iris#Gef1"); break;
|
||||
case 13: specialeffect EF_POTION1, AREA, instance_npcname("Iris#Gef1"); break;
|
||||
case 14:
|
||||
npctalk "Geffen Gangster : Why hello there, are you scared?", instance_npcname("Geffen Gangster#1");
|
||||
npctalk "Geffen Gangster : You're pretty cute. Do you want to play with us too?", instance_npcname("Geffen Gangster#2");
|
||||
@ -4128,23 +4129,23 @@ OnTimer1000:
|
||||
break;
|
||||
case 22: mapannounce instance_mapname("1@gef"), "Stop right there! Jerks!", 0x00ebff; break;
|
||||
case 23: hideoffnpc instance_npcname("Chaos#Gef1"); break;
|
||||
case 25: specialeffect 218, AREA, instance_npcname("Chaos#Gef1"); break;
|
||||
case 25: specialeffect EF_POTION_CON, AREA, instance_npcname("Chaos#Gef1"); break;
|
||||
case 26: npctalk "Chaos : Are you clowns harassing Iris?", instance_npcname("Chaos#Gef1"); break;
|
||||
case 30: npctalk "Chaos : I think I need to teach someone a lesson!", instance_npcname("Chaos#Gef1"); break;
|
||||
case 31:
|
||||
specialeffect 60, AREA, instance_npcname("Geffen Gangster#11");
|
||||
specialeffect 60, AREA, instance_npcname("Geffen Gangster#22");
|
||||
specialeffect 60, AREA, instance_npcname("Geffen Gangster#33");
|
||||
specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#11");
|
||||
specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#22");
|
||||
specialeffect EF_LOCKON, AREA, instance_npcname("Geffen Gangster#33");
|
||||
npctalk "Chaos : Come and fight me!", instance_npcname("Chaos#Gef2");
|
||||
hideonnpc instance_npcname("Chaos#Gef1");
|
||||
hideoffnpc instance_npcname("Chaos#Gef2");
|
||||
break;
|
||||
case 34:
|
||||
npctalk "Chaos : Bash~!!!", instance_npcname("Chaos#Gef2");
|
||||
specialeffect 1, AREA, instance_npcname("Chaos#Gef2");
|
||||
specialeffect 16, AREA, instance_npcname("Geffen Gangster#11");
|
||||
specialeffect 16, AREA, instance_npcname("Geffen Gangster#22");
|
||||
specialeffect 16, AREA, instance_npcname("Geffen Gangster#33");
|
||||
specialeffect EF_HIT2, AREA, instance_npcname("Chaos#Gef2");
|
||||
specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#11");
|
||||
specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#22");
|
||||
specialeffect EF_BASH, AREA, instance_npcname("Geffen Gangster#33");
|
||||
hideonnpc instance_npcname("Geffen Gangster#11");
|
||||
hideonnpc instance_npcname("Geffen Gangster#22");
|
||||
hideonnpc instance_npcname("Geffen Gangster#33");
|
||||
@ -4165,14 +4166,14 @@ OnTimer1000:
|
||||
break;
|
||||
case 42:
|
||||
npctalk "Chaos : I'm not done yet!! Magnum Break~!", instance_npcname("Chaos#3");
|
||||
specialeffect 17, AREA, instance_npcname("Geffen Gangster#1");
|
||||
specialeffect 17, AREA, instance_npcname("Geffen Gangster#2");
|
||||
specialeffect 17, AREA, instance_npcname("Geffen Gangster#3");
|
||||
specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#1");
|
||||
specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#2");
|
||||
specialeffect EF_MAGNUMBREAK, AREA, instance_npcname("Geffen Gangster#3");
|
||||
break;
|
||||
case 43:
|
||||
specialeffect 183, AREA, instance_npcname("Geffen Gangster#1");
|
||||
specialeffect 183, AREA, instance_npcname("Geffen Gangster#2");
|
||||
specialeffect 183, AREA, instance_npcname("Geffen Gangster#3");
|
||||
specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#1");
|
||||
specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#2");
|
||||
specialeffect EF_SUI_EXPLOSION, AREA, instance_npcname("Geffen Gangster#3");
|
||||
hideonnpc instance_npcname("Geffen Gangster#1");
|
||||
hideonnpc instance_npcname("Geffen Gangster#2");
|
||||
hideonnpc instance_npcname("Geffen Gangster#3");
|
||||
@ -4314,7 +4315,7 @@ OnTimer1000:
|
||||
case 9:
|
||||
unittalk 'gmt_account_id, "I have to help!";
|
||||
attachrid 'gmt_account_id;
|
||||
specialeffect2 60;
|
||||
specialeffect2 EF_LOCKON;
|
||||
detachrid;
|
||||
monster instance_mapname("1@gef"), 75, 172, "Geffen Bully", 2567, 1, instance_npcname("#Event 2 start 2") + "::OnMobKilled";
|
||||
monster instance_mapname("1@gef"), 76, 170, "Geffen Bully", 2567, 1, instance_npcname("#Event 2 start 2") + "::OnMobKilled";
|
||||
@ -4338,9 +4339,9 @@ OnMobKilled:
|
||||
//completequest 9286;
|
||||
//setquest 9287;
|
||||
sleep2 500;
|
||||
specialeffect 220, AREA, instance_npcname("Geffen Bully#1");
|
||||
specialeffect 220, AREA, instance_npcname("Geffen Bully#2");
|
||||
specialeffect 220, AREA, instance_npcname("Geffen Bully#3");
|
||||
specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#1");
|
||||
specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#2");
|
||||
specialeffect EF_POTION_BERSERK, AREA, instance_npcname("Geffen Bully#3");
|
||||
|
||||
$gmt_timer_evt2 = -1;
|
||||
|
||||
@ -4364,7 +4365,7 @@ OnMobKilled:
|
||||
case 10: npctalk "Fenrir : This is really uncomfortable. I can't just sit back and watch.", instance_npcname("Fenrir#1"); break;
|
||||
case 13:
|
||||
npctalk "Fenrir : Stop harassing her. I won't forgive you.", instance_npcname("Fenrir#1");
|
||||
specialeffect 204, AREA, instance_npcname("Fenrir#1");
|
||||
specialeffect EF_POTION1, AREA, instance_npcname("Fenrir#1");
|
||||
break;
|
||||
case 15: npctalk "Geffen Bully : Hey~ You look rich, you must have a lot of zeny right?", instance_npcname("Geffen Bully#1"); break;
|
||||
case 17: npctalk "Geffen Bully : What's a rich girl like you doing around here?~", instance_npcname("Geffen Bully#2"); break;
|
||||
@ -4384,16 +4385,16 @@ OnMobKilled:
|
||||
case 25:
|
||||
hideoffnpc instance_npcname("Loki#1");
|
||||
sleep2 500;
|
||||
specialeffect 126, AREA, instance_npcname("Loki#1");
|
||||
specialeffect EF_POISONREACT, AREA, instance_npcname("Loki#1");
|
||||
sleep2 1500;
|
||||
specialeffect 121, AREA, instance_npcname("Loki#1");
|
||||
specialeffect EF_SONICBLOW, AREA, instance_npcname("Loki#1");
|
||||
npctalk "Loki : Hmph!", instance_npcname("Loki#1");
|
||||
sleep2 500;
|
||||
specialeffect 124, AREA, instance_npcname("Loki#1");
|
||||
specialeffect 122, AREA, instance_npcname("Geffen Bully#33");
|
||||
specialeffect 143, AREA, instance_npcname("Geffen Bully#33");
|
||||
specialeffect EF_VENOMDUST, AREA, instance_npcname("Loki#1");
|
||||
specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#33");
|
||||
specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#33");
|
||||
sleep2 330;
|
||||
specialeffect 32, AREA, instance_npcname("Geffen Bully#33");
|
||||
specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#33");
|
||||
hideonnpc instance_npcname("Geffen Bully#33");
|
||||
hideoffnpc instance_npcname("Geffen Bully#3");
|
||||
break;
|
||||
@ -4404,11 +4405,11 @@ OnMobKilled:
|
||||
sleep2 750;
|
||||
npctalk "Loki : Take this.", instance_npcname("Loki#2");
|
||||
sleep2 500;
|
||||
specialeffect 271, AREA, instance_npcname("Geffen Bully#22");
|
||||
specialeffect 122, AREA, instance_npcname("Geffen Bully#22");
|
||||
specialeffect 143, AREA, instance_npcname("Geffen Bully#22");
|
||||
specialeffect EF_STRIPARMOR, AREA, instance_npcname("Geffen Bully#22");
|
||||
specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#22");
|
||||
specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#22");
|
||||
sleep2 330;
|
||||
specialeffect 32, AREA, instance_npcname("Geffen Bully#22");
|
||||
specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#22");
|
||||
hideonnpc instance_npcname("Geffen Bully#22");
|
||||
hideoffnpc instance_npcname("Geffen Bully#2");
|
||||
break;
|
||||
@ -4419,11 +4420,11 @@ OnMobKilled:
|
||||
sleep2 750;
|
||||
npctalk "Loki : Change your mind yet?", instance_npcname("Loki#3");
|
||||
sleep2 500;
|
||||
specialeffect 270, AREA, instance_npcname("Geffen Bully#11");
|
||||
specialeffect 122, AREA, instance_npcname("Geffen Bully#11");
|
||||
specialeffect 143, AREA, instance_npcname("Geffen Bully#11");
|
||||
specialeffect EF_STRIPSHIELD, AREA, instance_npcname("Geffen Bully#11");
|
||||
specialeffect EF_SONICBLOWHIT, AREA, instance_npcname("Geffen Bully#11");
|
||||
specialeffect EF_SONICBLOW2, AREA, instance_npcname("Geffen Bully#11");
|
||||
sleep2 330;
|
||||
specialeffect 32, AREA, instance_npcname("Geffen Bully#11");
|
||||
specialeffect EF_NAPALMBEAT, AREA, instance_npcname("Geffen Bully#11");
|
||||
hideonnpc instance_npcname("Geffen Bully#11");
|
||||
hideoffnpc instance_npcname("Geffen Bully#1");
|
||||
break;
|
||||
@ -4435,18 +4436,18 @@ OnMobKilled:
|
||||
case 40: npctalk "Geffen Bully : Let's get away!~!!!!!", instance_npcname("Geffen Bully#3"); break;
|
||||
case 41:
|
||||
npctalk "Loki : You have 10 seconds.", instance_npcname("Loki#3");
|
||||
specialeffect 121, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_SONICBLOW, AREA, instance_npcname("Loki#3");
|
||||
break;
|
||||
case 43:
|
||||
specialeffect 136, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_SLOWPOISON, AREA, instance_npcname("Loki#3");
|
||||
npctalk "Loki : 10... 9...", instance_npcname("Loki#3");
|
||||
sleep2 500;
|
||||
specialeffect 269, AREA, instance_npcname("Loki#3");
|
||||
specialeffect 126, AREA, instance_npcname("Loki#3");
|
||||
specialeffect 127, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_STRIPWEAPON, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_POISONREACT, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_POISONREACT2, AREA, instance_npcname("Loki#3");
|
||||
break;
|
||||
case 45:
|
||||
specialeffect 125, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_ENCHANTPOISON, AREA, instance_npcname("Loki#3");
|
||||
sleep2 500;
|
||||
emotion e_gg, 0, instance_npcname("Loki#3");
|
||||
npctalk "Loki : 3... 2...", instance_npcname("Loki#3");
|
||||
@ -4456,8 +4457,8 @@ OnMobKilled:
|
||||
npctalk "Geffen Bully : I will have my revenge~!!", instance_npcname("Geffen Bully#3");
|
||||
break;
|
||||
case 46:
|
||||
specialeffect 361, AREA, instance_npcname("Loki#3");
|
||||
specialeffect 124, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_SOULBREAKER, AREA, instance_npcname("Loki#3");
|
||||
specialeffect EF_VENOMDUST, AREA, instance_npcname("Loki#3");
|
||||
npctalk "Loki : 1...", instance_npcname("Loki#3");
|
||||
sleep2 330;
|
||||
hideonnpc instance_npcname("Geffen Bully#1");
|
||||
@ -4644,7 +4645,7 @@ OnTimer1000:
|
||||
'gmt_timer_evt3++;
|
||||
|
||||
switch('gmt_timer_evt3) {
|
||||
case 1: specialeffect 20, AREA, instance_npcname("Geffen Shoplifter#1"); break;
|
||||
case 1: specialeffect EF_PATTACK, AREA, instance_npcname("Geffen Shoplifter#1"); break;
|
||||
case 4: npctalk "Geffen Shoplifter : Ugh, I shouldn't fight toe to toe with anyone...", instance_npcname("Geffen Shoplifter#1"); break;
|
||||
case 7: unittalk 'gmt_account_id, "Don't want to be in a fair fight, huh thief?"; break;
|
||||
case 10: npctalk "Geffen Shoplifter : Umm... stealing zeny is my job~ I did nothing wrong~!", instance_npcname("Geffen Shoplifter#1"); break;
|
||||
|
@ -1003,11 +1003,11 @@ OnInit:
|
||||
mes "their Magic properties by";
|
||||
mes "their casting effect.^000000";
|
||||
next;
|
||||
setarray .@effect[0],56,54,225;
|
||||
setarray .@effect[0],EF_BEGINSPELL4,EF_BEGINSPELL2,EF_VOLCANO;
|
||||
setarray .@color$[0],"Red","Yellow","Blue";
|
||||
while(1) {
|
||||
if (.@roof0 > 7) break;
|
||||
set .@i, rand(3);
|
||||
set .@i, rand(getarraysize(.@effect));
|
||||
specialeffect .@effect[.@i];
|
||||
mes "^3355FFThe Gemstones must";
|
||||
mes "be arranged in the correct";
|
||||
|
@ -2099,19 +2099,19 @@ OnTouch_:
|
||||
// .@j$: FragmentName
|
||||
switch(.@seal) {
|
||||
case 1:
|
||||
setarray .@i[0],7437,1711,217,167,238;
|
||||
setarray .@i[0],7437,1711,217,167,EF_LANDPROTECTOR;
|
||||
set .@j$,"Misery";
|
||||
break;
|
||||
case 2:
|
||||
setarray .@i[0],7436,1712,202,75,102;
|
||||
setarray .@i[0],7436,1712,202,75,EF_CRASHEARTH;
|
||||
set .@j$,"Agony";
|
||||
break;
|
||||
case 3:
|
||||
setarray .@i[0],7438,1709,80,76,101;
|
||||
setarray .@i[0],7438,1709,80,76,EF_REPAIRWEAPON;
|
||||
set .@j$,"Hatred";
|
||||
break;
|
||||
case 4:
|
||||
setarray .@i[0],7439,1710,62,171,100;
|
||||
setarray .@i[0],7439,1710,62,171,EF_REMOVETRAP;
|
||||
set .@j$,"Despair";
|
||||
break;
|
||||
}
|
||||
|
@ -3934,7 +3934,7 @@ lasagna,85,93,5 script Shaman meow#dorcon 4_DR_KID_01,{
|
||||
mes "[Shaman meow]";
|
||||
mes "I'll tell you today's talisman. It is...";
|
||||
next;
|
||||
specialeffect 330;
|
||||
specialeffect EF_HITLINE;
|
||||
mes "[Shaman meow]";
|
||||
.@quest_id = rand(14560,14562);
|
||||
switch( .@quest_id ) {
|
||||
@ -6910,7 +6910,7 @@ conch_in,181,61,5 script Boatswain#dorcon 4_M_BOSSCAT,{
|
||||
next;
|
||||
mes "[Boatswain]";
|
||||
mes "This... This is...";
|
||||
specialeffect 66;
|
||||
specialeffect EF_CURE;
|
||||
next;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "What do you think?";
|
||||
@ -6991,7 +6991,7 @@ conch_in,181,61,5 script Boatswain#dorcon 4_M_BOSSCAT,{
|
||||
mes "This is the amulet for today! Give me all the Basilrocks you have.";
|
||||
next;
|
||||
mes "[Boatswain]";
|
||||
specialeffect 66;
|
||||
specialeffect EF_CURE;
|
||||
if (isbegin_quest(14560) == 1) {
|
||||
mes "It feels like watching the blue horizon on a clear and windless day. It is refreshing.";
|
||||
next;
|
||||
@ -8228,7 +8228,7 @@ lasa_dun03,161,292,5 script Lord Imuk#dorcon 4_NFWISP,{
|
||||
next;
|
||||
mes "[???]";
|
||||
mes "How dare you treat me like a ghost! I have lived for ^0000cd2,500 years^000000!";
|
||||
specialeffect2 29;
|
||||
specialeffect2 EF_LIGHTBOLT;
|
||||
next;
|
||||
mes "[" + strcharinfo(0) + "]";
|
||||
mes "Oww...that hurts. I'm sorry if I've offended you, but are you Imoogi, the chief of the Basilisk?";
|
||||
|
@ -14,6 +14,6 @@
|
||||
//ACMD_FUNC(newcommand)
|
||||
//{
|
||||
// clif_displaymessage(fd, "It works!");
|
||||
// clif_specialeffect(&sd->bl, 343, AREA);
|
||||
// clif_specialeffect(&sd->bl, EF_HEARTCASTING, AREA);
|
||||
// return 0;
|
||||
//}
|
||||
|
@ -997,7 +997,7 @@ ACMD_FUNC(hide)
|
||||
map_foreachinmovearea(clif_insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
|
||||
} else {
|
||||
sd->sc.option |= OPTION_INVISIBLE;
|
||||
sd->vd.class_ = INVISIBLE_CLASS;
|
||||
sd->vd.class_ = JT_INVISIBLE;
|
||||
clif_displaymessage(fd, msg_txt(sd,11)); // Invisible: On
|
||||
|
||||
// decrement the number of pvp players on the map
|
||||
@ -3134,7 +3134,7 @@ ACMD_FUNC(doom)
|
||||
if (pl_sd->fd != fd && pc_get_group_level(sd) >= pc_get_group_level(pl_sd))
|
||||
{
|
||||
status_kill(&pl_sd->bl);
|
||||
clif_specialeffect(&pl_sd->bl,450,AREA);
|
||||
clif_specialeffect(&pl_sd->bl,EF_GRANDCROSS2,AREA);
|
||||
clif_displaymessage(pl_sd->fd, msg_txt(sd,61)); // The holy messenger has given judgement.
|
||||
}
|
||||
}
|
||||
@ -3161,7 +3161,7 @@ ACMD_FUNC(doommap)
|
||||
if (pl_sd->fd != fd && sd->bl.m == pl_sd->bl.m && pc_get_group_level(sd) >= pc_get_group_level(pl_sd))
|
||||
{
|
||||
status_kill(&pl_sd->bl);
|
||||
clif_specialeffect(&pl_sd->bl,450,AREA);
|
||||
clif_specialeffect(&pl_sd->bl,EF_GRANDCROSS2,AREA);
|
||||
clif_displaymessage(pl_sd->fd, msg_txt(sd,61)); // The holy messenger has given judgement.
|
||||
}
|
||||
}
|
||||
@ -5300,7 +5300,7 @@ ACMD_FUNC(email)
|
||||
*------------------------------------------*/
|
||||
ACMD_FUNC(effect)
|
||||
{
|
||||
int type = 0, flag = 0;
|
||||
int type = EF_NONE;
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
if (!message || !*message || sscanf(message, "%11d", &type) < 1) {
|
||||
@ -5308,7 +5308,13 @@ ACMD_FUNC(effect)
|
||||
return -1;
|
||||
}
|
||||
|
||||
clif_specialeffect(&sd->bl, type, (send_target)flag);
|
||||
if( type <= EF_NONE || type >= EF_MAX ){
|
||||
sprintf(atcmd_output, msg_txt(sd,1152),EF_NONE+1,EF_MAX-1); // Please enter a valid effect id in the range from %d to %d.
|
||||
clif_displaymessage(fd, atcmd_output);
|
||||
return -1;
|
||||
}
|
||||
|
||||
clif_specialeffect(&sd->bl, type, ALL_CLIENT);
|
||||
clif_displaymessage(fd, msg_txt(sd,229)); // Your effect has changed.
|
||||
return 0;
|
||||
}
|
||||
@ -6816,7 +6822,7 @@ ACMD_FUNC(summon)
|
||||
md->master_id=sd->bl.id;
|
||||
md->special_state.ai=AI_ATTACK;
|
||||
md->deletetimer=add_timer(tick+(duration*60000),mob_timer_delete,md->bl.id,0);
|
||||
clif_specialeffect(&md->bl,344,AREA);
|
||||
clif_specialeffect(&md->bl,EF_ENTRY2,AREA);
|
||||
mob_spawn(md);
|
||||
sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000);
|
||||
clif_skill_poseffect(&sd->bl,AM_CALLHOMUN,1,md->bl.x,md->bl.y,tick);
|
||||
@ -7414,7 +7420,7 @@ ACMD_FUNC(homlevel)
|
||||
|
||||
status_calc_homunculus(hd, SCO_NONE);
|
||||
status_percent_heal(&hd->bl, 100, 100);
|
||||
clif_specialeffect(&hd->bl,568,AREA);
|
||||
clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -7996,9 +8002,9 @@ ACMD_FUNC(size)
|
||||
|
||||
sd->state.size = size;
|
||||
if( size == SZ_MEDIUM )
|
||||
clif_specialeffect(&sd->bl,420,AREA);
|
||||
clif_specialeffect(&sd->bl,EF_BABYBODY,AREA);
|
||||
else if( size == SZ_BIG )
|
||||
clif_specialeffect(&sd->bl,422,AREA);
|
||||
clif_specialeffect(&sd->bl,EF_GIANTBODY,AREA);
|
||||
|
||||
clif_displaymessage(fd, msg_txt(sd,1303)); // Size change applied.
|
||||
return 0;
|
||||
@ -8023,9 +8029,9 @@ ACMD_FUNC(sizeall)
|
||||
|
||||
pl_sd->state.size = size;
|
||||
if( size == SZ_MEDIUM )
|
||||
clif_specialeffect(&pl_sd->bl,420,AREA);
|
||||
clif_specialeffect(&pl_sd->bl,EF_BABYBODY,AREA);
|
||||
else if( size == SZ_BIG )
|
||||
clif_specialeffect(&pl_sd->bl,422,AREA);
|
||||
clif_specialeffect(&pl_sd->bl,EF_GIANTBODY,AREA);
|
||||
}
|
||||
}
|
||||
mapit_free(iter);
|
||||
@ -8065,9 +8071,9 @@ ACMD_FUNC(sizeguild)
|
||||
|
||||
pl_sd->state.size = size;
|
||||
if( size == SZ_MEDIUM )
|
||||
clif_specialeffect(&pl_sd->bl,420,AREA);
|
||||
clif_specialeffect(&pl_sd->bl,EF_BABYBODY,AREA);
|
||||
else if( size == SZ_BIG )
|
||||
clif_specialeffect(&pl_sd->bl,422,AREA);
|
||||
clif_specialeffect(&pl_sd->bl,EF_GIANTBODY,AREA);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1160,7 +1160,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
|
||||
//Kaupe blocks damage (skill or otherwise) from players, mobs, homuns, mercenaries.
|
||||
if ((sce = sc->data[SC_KAUPE]) && rnd()%100 < sce->val2) {
|
||||
clif_specialeffect(bl, 462, AREA);
|
||||
clif_specialeffect(bl, EF_STORMKICK4, AREA);
|
||||
//Shouldn't end until Breaker's non-weapon part connects.
|
||||
#ifndef RENEWAL
|
||||
if (skill_id != ASC_BREAKER || !(flag&BF_WEAPON))
|
||||
@ -1176,7 +1176,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
#endif
|
||||
|
||||
if( flag&BF_MAGIC && (sce=sc->data[SC_PRESTIGE]) && rnd()%100 < sce->val2) {
|
||||
clif_specialeffect(bl, 462, AREA); // Still need confirm it.
|
||||
clif_specialeffect(bl, EF_STORMKICK4, AREA); // Still need confirm it.
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1185,7 +1185,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
if (!status_isdead(src))
|
||||
skill_counter_additional_effect( src, bl, skill_id, skill_lv, flag, gettick() );
|
||||
if (sce) {
|
||||
clif_specialeffect(bl, 462, AREA);
|
||||
clif_specialeffect(bl, EF_STORMKICK4, AREA);
|
||||
skill_blown(src,bl,sce->val3,-1,BLOWN_NONE);
|
||||
}
|
||||
//Both need to be consumed if they are active.
|
||||
@ -1408,7 +1408,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
}
|
||||
|
||||
if ((sce = sc->data[SC_P_ALTER]) && damage > 0) {
|
||||
clif_specialeffect(bl, 336, AREA);
|
||||
clif_specialeffect(bl, EF_GUARD, AREA);
|
||||
sce->val3 -= (int)cap_value(damage, INT_MIN, INT_MAX);
|
||||
if (sce->val3 >= 0)
|
||||
damage = 0;
|
||||
@ -2369,7 +2369,7 @@ static bool is_attack_critical(struct Damage wd, struct block_list *src, struct
|
||||
case 0:
|
||||
if(sc && !sc->data[SC_AUTOCOUNTER])
|
||||
break;
|
||||
clif_specialeffect(src, 131, AREA);
|
||||
clif_specialeffect(src, EF_AUTOCOUNTER, AREA);
|
||||
status_change_end(src, SC_AUTOCOUNTER, INVALID_TIMER);
|
||||
case KN_AUTOCOUNTER:
|
||||
if(battle_config.auto_counter_type &&
|
||||
|
@ -1060,7 +1060,7 @@ static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool
|
||||
WBUFW(buf,24) = vd->head_top;
|
||||
WBUFW(buf,26) = vd->head_mid;
|
||||
|
||||
if( bl->type == BL_NPC && vd->class_ == FLAG_CLASS )
|
||||
if( bl->type == BL_NPC && vd->class_ == JT_GUILD_FLAG )
|
||||
{ //The hell, why flags work like this?
|
||||
WBUFW(buf,22) = status_get_emblem_id(bl);
|
||||
WBUFW(buf,24) = GetWord(status_get_guild_id(bl), 1);
|
||||
@ -1371,22 +1371,22 @@ static void clif_weather_check(struct map_session_data *sd)
|
||||
|| map[m].flag.clouds2)
|
||||
{
|
||||
if (map[m].flag.snow)
|
||||
clif_specialeffect_single(&sd->bl, 162, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_SNOW, fd);
|
||||
if (map[m].flag.clouds)
|
||||
clif_specialeffect_single(&sd->bl, 233, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_CLOUD3, fd);
|
||||
if (map[m].flag.clouds2)
|
||||
clif_specialeffect_single(&sd->bl, 516, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_CLOUD5, fd);
|
||||
if (map[m].flag.fog)
|
||||
clif_specialeffect_single(&sd->bl, 515, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_CLOUD4, fd);
|
||||
if (map[m].flag.fireworks) {
|
||||
clif_specialeffect_single(&sd->bl, 297, fd);
|
||||
clif_specialeffect_single(&sd->bl, 299, fd);
|
||||
clif_specialeffect_single(&sd->bl, 301, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_POKJUK, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_THROWITEM2, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_POKJUK_SOUND, fd);
|
||||
}
|
||||
if (map[m].flag.sakura)
|
||||
clif_specialeffect_single(&sd->bl, 163, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_SAKURA, fd);
|
||||
if (map[m].flag.leaves)
|
||||
clif_specialeffect_single(&sd->bl, 333, fd);
|
||||
clif_specialeffect_single(&sd->bl, EF_MAPLE, fd);
|
||||
}
|
||||
}
|
||||
/**
|
||||
@ -1415,7 +1415,7 @@ int clif_spawn(struct block_list *bl)
|
||||
int len;
|
||||
|
||||
vd = status_get_viewdata(bl);
|
||||
if( !vd || vd->class_ == INVISIBLE_CLASS )
|
||||
if( !vd || vd->class_ == JT_INVISIBLE )
|
||||
return 0;
|
||||
|
||||
/**
|
||||
@ -1443,9 +1443,9 @@ int clif_spawn(struct block_list *bl)
|
||||
if (sd->spiritball > 0)
|
||||
clif_spiritball(&sd->bl);
|
||||
if(sd->state.size==SZ_BIG) // tiny/big players [Valaris]
|
||||
clif_specialeffect(bl,423,AREA);
|
||||
clif_specialeffect(bl,EF_GIANTBODY2,AREA);
|
||||
else if(sd->state.size==SZ_MEDIUM)
|
||||
clif_specialeffect(bl,421,AREA);
|
||||
clif_specialeffect(bl,EF_BABYBODY2,AREA);
|
||||
if( sd->bg_id && map[sd->bl.m].flag.battleground )
|
||||
clif_sendbgemblem_area(sd);
|
||||
if (sd->spiritcharm_type != CHARM_TYPE_NONE && sd->spiritcharm > 0)
|
||||
@ -1460,18 +1460,18 @@ int clif_spawn(struct block_list *bl)
|
||||
{
|
||||
TBL_MOB *md = ((TBL_MOB*)bl);
|
||||
if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
|
||||
clif_specialeffect(&md->bl,423,AREA);
|
||||
clif_specialeffect(&md->bl,EF_GIANTBODY2,AREA);
|
||||
else if(md->special_state.size==SZ_MEDIUM)
|
||||
clif_specialeffect(&md->bl,421,AREA);
|
||||
clif_specialeffect(&md->bl,EF_BABYBODY2,AREA);
|
||||
}
|
||||
break;
|
||||
case BL_NPC:
|
||||
{
|
||||
TBL_NPC *nd = ((TBL_NPC*)bl);
|
||||
if( nd->size == SZ_BIG )
|
||||
clif_specialeffect(&nd->bl,423,AREA);
|
||||
clif_specialeffect(&nd->bl,EF_GIANTBODY2,AREA);
|
||||
else if( nd->size == SZ_MEDIUM )
|
||||
clif_specialeffect(&nd->bl,421,AREA);
|
||||
clif_specialeffect(&nd->bl,EF_BABYBODY2,AREA);
|
||||
clif_efst_status_change_sub(bl, bl, AREA);
|
||||
clif_progressbar_npc_area(nd);
|
||||
}
|
||||
@ -1723,9 +1723,9 @@ static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_
|
||||
TBL_PC *sd = ((TBL_PC*)bl);
|
||||
// clif_movepc(sd);
|
||||
if(sd->state.size==SZ_BIG) // tiny/big players [Valaris]
|
||||
clif_specialeffect(&sd->bl,423,AREA);
|
||||
clif_specialeffect(&sd->bl,EF_GIANTBODY2,AREA);
|
||||
else if(sd->state.size==SZ_MEDIUM)
|
||||
clif_specialeffect(&sd->bl,421,AREA);
|
||||
clif_specialeffect(&sd->bl,EF_BABYBODY2,AREA);
|
||||
if (sd->status.robe)
|
||||
clif_refreshlook(bl,bl->id,LOOK_ROBE,sd->status.robe,AREA);
|
||||
}
|
||||
@ -1734,9 +1734,9 @@ static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_
|
||||
{
|
||||
TBL_MOB *md = ((TBL_MOB*)bl);
|
||||
if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
|
||||
clif_specialeffect(&md->bl,423,AREA);
|
||||
clif_specialeffect(&md->bl,EF_GIANTBODY2,AREA);
|
||||
else if(md->special_state.size==SZ_MEDIUM)
|
||||
clif_specialeffect(&md->bl,421,AREA);
|
||||
clif_specialeffect(&md->bl,EF_BABYBODY2,AREA);
|
||||
}
|
||||
break;
|
||||
case BL_PET:
|
||||
@ -1762,7 +1762,7 @@ void clif_move(struct unit_data *ud)
|
||||
if (!vd )
|
||||
return;
|
||||
//This performance check is needed to keep GM-hidden objects from being notified to bots.
|
||||
else if( vd->class_ == INVISIBLE_CLASS ){
|
||||
else if( vd->class_ == JT_INVISIBLE ){
|
||||
// If the player was disguised we still need to update the disguised unit, since the main unit will be updated through clif_walkok
|
||||
if(disguised(bl)) {
|
||||
WBUFW(buf,0)=0x86;
|
||||
@ -3492,7 +3492,7 @@ void clif_changelook(struct block_list *bl, int type, int val) {
|
||||
if (!sd)
|
||||
break;
|
||||
|
||||
if ( val == INVISIBLE_CLASS )
|
||||
if ( val == JT_INVISIBLE )
|
||||
return;
|
||||
|
||||
if (sd->sc.option&OPTION_COSTUME)
|
||||
@ -4612,7 +4612,7 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
||||
int len;
|
||||
|
||||
vd = status_get_viewdata(bl);
|
||||
if (!vd || vd->class_ == INVISIBLE_CLASS)
|
||||
if (!vd || vd->class_ == JT_INVISIBLE)
|
||||
return;
|
||||
|
||||
/**
|
||||
@ -4638,9 +4638,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
||||
|
||||
clif_getareachar_pc(sd, tsd);
|
||||
if(tsd->state.size==SZ_BIG) // tiny/big players [Valaris]
|
||||
clif_specialeffect_single(bl,423,sd->fd);
|
||||
clif_specialeffect_single(bl,EF_GIANTBODY2,sd->fd);
|
||||
else if(tsd->state.size==SZ_MEDIUM)
|
||||
clif_specialeffect_single(bl,421,sd->fd);
|
||||
clif_specialeffect_single(bl,EF_BABYBODY2,sd->fd);
|
||||
if( tsd->bg_id && map[tsd->bl.m].flag.battleground )
|
||||
clif_sendbgemblem_single(sd->fd,tsd);
|
||||
if ( tsd->status.robe )
|
||||
@ -4659,9 +4659,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
||||
if( nd->chat_id )
|
||||
clif_dispchat((struct chat_data*)map_id2bl(nd->chat_id),sd->fd);
|
||||
if( nd->size == SZ_BIG )
|
||||
clif_specialeffect_single(bl,423,sd->fd);
|
||||
clif_specialeffect_single(bl,EF_GIANTBODY2,sd->fd);
|
||||
else if( nd->size == SZ_MEDIUM )
|
||||
clif_specialeffect_single(bl,421,sd->fd);
|
||||
clif_specialeffect_single(bl,EF_BABYBODY2,sd->fd);
|
||||
clif_efst_status_change_sub(&sd->bl, bl, SELF);
|
||||
clif_progressbar_npc(nd, sd);
|
||||
}
|
||||
@ -4670,9 +4670,9 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
|
||||
{
|
||||
TBL_MOB* md = (TBL_MOB*)bl;
|
||||
if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
|
||||
clif_specialeffect_single(bl,423,sd->fd);
|
||||
clif_specialeffect_single(bl,EF_GIANTBODY2,sd->fd);
|
||||
else if(md->special_state.size==SZ_MEDIUM)
|
||||
clif_specialeffect_single(bl,421,sd->fd);
|
||||
clif_specialeffect_single(bl,EF_BABYBODY2,sd->fd);
|
||||
#if PACKETVER >= 20120404
|
||||
if (battle_config.monster_hp_bars_info && !map[bl->m].flag.hidemobhpbar) {
|
||||
int i;
|
||||
@ -5152,7 +5152,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
|
||||
nullpo_ret(bl);
|
||||
switch(bl->type){
|
||||
case BL_PC:
|
||||
if(sd->vd.class_ != INVISIBLE_CLASS)
|
||||
if(sd->vd.class_ != JT_INVISIBLE)
|
||||
clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
|
||||
if(sd->chatID){
|
||||
struct chat_data *cd;
|
||||
@ -5176,7 +5176,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
|
||||
clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
|
||||
break;
|
||||
default:
|
||||
if((vd=status_get_viewdata(bl)) && vd->class_ != INVISIBLE_CLASS)
|
||||
if((vd=status_get_viewdata(bl)) && vd->class_ != JT_INVISIBLE)
|
||||
clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
|
||||
break;
|
||||
}
|
||||
@ -5185,7 +5185,7 @@ int clif_outsight(struct block_list *bl,va_list ap)
|
||||
nullpo_ret(tbl);
|
||||
if(tbl->type == BL_SKILL) //Trap knocked out of sight
|
||||
clif_clearchar_skillunit((struct skill_unit *)tbl,sd->fd);
|
||||
else if(((vd=status_get_viewdata(tbl)) && vd->class_ != INVISIBLE_CLASS) &&
|
||||
else if(((vd=status_get_viewdata(tbl)) && vd->class_ != JT_INVISIBLE) &&
|
||||
!(tbl->type == BL_NPC && (((TBL_NPC*)tbl)->sc.option&OPTION_INVISIBLE)))
|
||||
clif_clearunit_single(tbl->id,CLR_OUTSIGHT,sd->fd);
|
||||
}
|
||||
|
@ -594,7 +594,7 @@ int hom_evolution(struct homun_data *hd)
|
||||
|
||||
clif_spawn(&hd->bl);
|
||||
clif_emotion(&sd->bl, E_NO1);
|
||||
clif_specialeffect(&hd->bl,568,AREA);
|
||||
clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
|
||||
|
||||
//status_Calc flag&1 will make current HP/SP be reloaded from hom structure
|
||||
hom->hp = hd->battle_status.hp;
|
||||
@ -645,7 +645,7 @@ int hom_mutate(struct homun_data *hd, int homun_id)
|
||||
|
||||
clif_spawn(&hd->bl);
|
||||
clif_emotion(&sd->bl, E_NO1);
|
||||
clif_specialeffect(&hd->bl,568,AREA);
|
||||
clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
|
||||
|
||||
//status_Calc flag&1 will make current HP/SP be reloaded from hom structure
|
||||
hom = &hd->homunculus;
|
||||
@ -705,7 +705,7 @@ void hom_gainexp(struct homun_data *hd,int exp)
|
||||
if( hd->exp_next == 0 )
|
||||
hd->homunculus.exp = 0 ;
|
||||
|
||||
clif_specialeffect(&hd->bl,568,AREA);
|
||||
clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
|
||||
status_calc_homunculus(hd, SCO_NONE);
|
||||
status_percent_heal(&hd->bl, 100, 100);
|
||||
}
|
||||
@ -1335,7 +1335,7 @@ int hom_shuffle(struct homun_data *hd)
|
||||
clif_homskillinfoblock(sd);
|
||||
status_calc_homunculus(hd, SCO_NONE);
|
||||
status_percent_heal(&hd->bl, 100, 100);
|
||||
clif_specialeffect(&hd->bl,568,AREA);
|
||||
clif_specialeffect(&hd->bl,EF_HO_UP,AREA);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -111,9 +111,9 @@ static struct script_event_s
|
||||
|
||||
struct view_data* npc_get_viewdata(int class_)
|
||||
{ //Returns the viewdata for normal npc classes.
|
||||
if( class_ == INVISIBLE_CLASS )
|
||||
if( class_ == JT_INVISIBLE )
|
||||
return &npc_viewdb[0];
|
||||
if (npcdb_checkid(class_) || class_ == WARP_CLASS){
|
||||
if (npcdb_checkid(class_)){
|
||||
if( class_ > MAX_NPC_CLASS2_START ){
|
||||
return &npc_viewdb2[class_-MAX_NPC_CLASS2_START];
|
||||
}else{
|
||||
@ -234,7 +234,7 @@ int npc_enable(const char* name, int flag)
|
||||
clif_clearunit_area(&nd->bl,CLR_OUTSIGHT); // Hack to trick maya purple card [Xazax]
|
||||
}
|
||||
|
||||
if (nd->class_ == WARP_CLASS || nd->class_ == FLAG_CLASS)
|
||||
if (nd->class_ == JT_WARPNPC || nd->class_ == JT_GUILD_FLAG)
|
||||
{ //Client won't display option changes for these classes [Toms]
|
||||
if (nd->sc.option&(OPTION_HIDE|OPTION_INVISIBLE))
|
||||
clif_clearunit_area(&nd->bl, CLR_OUTSIGHT);
|
||||
@ -2396,7 +2396,7 @@ static void npc_parsename(struct npc_data* nd, const char* name, const char* sta
|
||||
* Support for using Constants in place of NPC View IDs.
|
||||
*/
|
||||
int npc_parseview(const char* w4, const char* start, const char* buffer, const char* filepath) {
|
||||
int val = -1, i = 0;
|
||||
int val = JT_FAKENPC, i = 0;
|
||||
char viewid[1024]; // Max size of name from const.txt, see read_constdb.
|
||||
|
||||
// Extract view ID / constant
|
||||
@ -2413,8 +2413,8 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c
|
||||
if(!npc_viewisid(viewid)) {
|
||||
// Check if constant exists and get its value.
|
||||
if(!script_get_constant(viewid, &val)) {
|
||||
ShowWarning("npc_parseview: Invalid NPC constant '%s' specified in file '%s', line'%d'. Defaulting to INVISIBLE_CLASS. \n", viewid, filepath, strline(buffer,start-buffer));
|
||||
val = INVISIBLE_CLASS;
|
||||
ShowWarning("npc_parseview: Invalid NPC constant '%s' specified in file '%s', line'%d'. Defaulting to INVISIBLE. \n", viewid, filepath, strline(buffer,start-buffer));
|
||||
val = JT_INVISIBLE;
|
||||
}
|
||||
} else {
|
||||
// NPC has an ID specified for view id.
|
||||
@ -2429,7 +2429,7 @@ int npc_parseview(const char* w4, const char* start, const char* buffer, const c
|
||||
*/
|
||||
bool npc_viewisid(const char * viewid)
|
||||
{
|
||||
if(atoi(viewid) != -1) {
|
||||
if(atoi(viewid) != JT_FAKENPC) {
|
||||
// Loop through view, looking for non-numeric character.
|
||||
while (*viewid) {
|
||||
if (ISDIGIT(*viewid++) == 0) return false;
|
||||
@ -2495,9 +2495,9 @@ struct npc_data* npc_add_warp(char* name, short from_mapid, short from_x, short
|
||||
safestrncpy(nd->name, nd->exname, ARRAYLENGTH(nd->name));
|
||||
|
||||
if( battle_config.warp_point_debug )
|
||||
nd->class_ = WARP_DEBUG_CLASS;
|
||||
nd->class_ = JT_GUILD_FLAG;
|
||||
else
|
||||
nd->class_ = WARP_CLASS;
|
||||
nd->class_ = JT_WARPNPC;
|
||||
nd->speed = 200;
|
||||
|
||||
nd->u.warp.mapindex = to_mapindex;
|
||||
@ -2567,9 +2567,9 @@ static const char* npc_parse_warp(char* w1, char* w2, char* w3, char* w4, const
|
||||
npc_parsename(nd, w3, start, buffer, filepath);
|
||||
|
||||
if (!battle_config.warp_point_debug)
|
||||
nd->class_ = WARP_CLASS;
|
||||
nd->class_ = JT_WARPNPC;
|
||||
else
|
||||
nd->class_ = WARP_DEBUG_CLASS;
|
||||
nd->class_ = JT_GUILD_FLAG;
|
||||
nd->speed = 200;
|
||||
|
||||
nd->u.warp.mapindex = i;
|
||||
@ -2801,7 +2801,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const
|
||||
}
|
||||
|
||||
npc_parsename(nd, w3, start, buffer, filepath);
|
||||
nd->class_ = m == -1 ? -1 : npc_parseview(w4, start, buffer, filepath);
|
||||
nd->class_ = m == -1 ? JT_FAKENPC : npc_parseview(w4, start, buffer, filepath);
|
||||
nd->speed = 200;
|
||||
|
||||
++npc_shop;
|
||||
@ -3036,7 +3036,7 @@ static const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, cons
|
||||
}
|
||||
|
||||
npc_parsename(nd, w3, start, buffer, filepath);
|
||||
nd->class_ = m == -1 ? -1 : npc_parseview(w4, start, buffer, filepath);
|
||||
nd->class_ = m == -1 ? JT_FAKENPC : npc_parseview(w4, start, buffer, filepath);
|
||||
nd->speed = 200;
|
||||
nd->u.scr.script = script;
|
||||
nd->u.scr.label_list = label_list;
|
||||
@ -3164,7 +3164,7 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch
|
||||
|
||||
nd = npc_create_npc(m, x, y);
|
||||
npc_parsename(nd, w3, start, buffer, filepath);
|
||||
nd->class_ = m == -1 ? -1 : npc_parseview(w4, start, buffer, filepath);
|
||||
nd->class_ = m == -1 ? JT_FAKENPC : npc_parseview(w4, start, buffer, filepath);
|
||||
nd->speed = 200;
|
||||
nd->src_id = src_id;
|
||||
nd->bl.type = BL_NPC;
|
||||
@ -3192,9 +3192,9 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch
|
||||
case NPCTYPE_WARP:
|
||||
++npc_warp;
|
||||
if( !battle_config.warp_point_debug )
|
||||
nd->class_ = WARP_CLASS;
|
||||
nd->class_ = JT_WARPNPC;
|
||||
else
|
||||
nd->class_ = WARP_DEBUG_CLASS;
|
||||
nd->class_ = JT_GUILD_FLAG;
|
||||
nd->u.warp.xs = xs;
|
||||
nd->u.warp.ys = ys;
|
||||
nd->u.warp.mapindex = dnd->u.warp.mapindex;
|
||||
@ -3281,7 +3281,7 @@ int npc_duplicate4instance(struct npc_data *snd, int16 m) {
|
||||
map_addnpc(m, wnd);
|
||||
safestrncpy(wnd->name, "", ARRAYLENGTH(wnd->name));
|
||||
safestrncpy(wnd->exname, newname, ARRAYLENGTH(wnd->exname));
|
||||
wnd->class_ = WARP_CLASS;
|
||||
wnd->class_ = JT_WARPNPC;
|
||||
wnd->speed = 200;
|
||||
wnd->u.warp.mapindex = map_id2index(imap);
|
||||
wnd->u.warp.x = snd->u.warp.x;
|
||||
@ -4756,7 +4756,7 @@ void do_init_npc(void){
|
||||
|
||||
//Stock view data for normal npcs.
|
||||
memset(&npc_viewdb, 0, sizeof(npc_viewdb));
|
||||
npc_viewdb[0].class_ = INVISIBLE_CLASS; //Invisible class is stored here.
|
||||
npc_viewdb[0].class_ = JT_INVISIBLE; //Invisible class is stored here.
|
||||
for( i = 1; i < MAX_NPC_CLASS; i++ )
|
||||
npc_viewdb[i].class_ = i;
|
||||
for( i = MAX_NPC_CLASS2_START; i < MAX_NPC_CLASS2_END; i++ )
|
||||
@ -4807,7 +4807,7 @@ void do_init_npc(void){
|
||||
fake_nd = (struct npc_data *)aCalloc(1,sizeof(struct npc_data));
|
||||
fake_nd->bl.m = -1;
|
||||
fake_nd->bl.id = npc_get_new_npc_id();
|
||||
fake_nd->class_ = -1;
|
||||
fake_nd->class_ = JT_FAKENPC;
|
||||
fake_nd->speed = 200;
|
||||
strcpy(fake_nd->name,"FAKE_NPC");
|
||||
memcpy(fake_nd->exname, fake_nd->name, 9);
|
||||
|
984
src/map/npc.h
984
src/map/npc.h
@ -110,24 +110,988 @@ extern struct eri *npc_sc_display_ers;
|
||||
|
||||
#define START_NPC_NUM 110000000
|
||||
|
||||
enum actor_classes
|
||||
enum e_job_types
|
||||
{
|
||||
WARP_CLASS = 45,
|
||||
HIDDEN_WARP_CLASS = 139,
|
||||
WARP_DEBUG_CLASS = 722,
|
||||
FLAG_CLASS = 722,
|
||||
INVISIBLE_CLASS = 32767,
|
||||
NPC_RANGE1_START = 44,
|
||||
JT_WARPNPC,
|
||||
JT_1_ETC_01,
|
||||
JT_1_M_01,
|
||||
JT_1_M_02,
|
||||
JT_1_M_03,
|
||||
JT_1_M_04,
|
||||
JT_1_M_BARD,
|
||||
JT_1_M_HOF,
|
||||
JT_1_M_INNKEEPER,
|
||||
JT_1_M_JOBGUIDER,
|
||||
JT_1_M_JOBTESTER,
|
||||
JT_1_M_KNIGHTMASTER,
|
||||
JT_1_M_LIBRARYMASTER,
|
||||
JT_1_M_MERCHANT,
|
||||
JT_1_M_ORIENT01,
|
||||
JT_1_M_PASTOR,
|
||||
JT_1_M_PUBMASTER,
|
||||
JT_1_M_SIZ,
|
||||
JT_1_M_SMITH,
|
||||
JT_1_M_WIZARD,
|
||||
JT_1_M_YOUNGKNIGHT,
|
||||
JT_1_F_01,
|
||||
JT_1_F_02,
|
||||
JT_1_F_03,
|
||||
JT_1_F_04,
|
||||
JT_1_F_GYPSY,
|
||||
JT_1_F_LIBRARYGIRL,
|
||||
JT_1_F_MARIA,
|
||||
JT_1_F_MERCHANT_01,
|
||||
JT_1_F_MERCHANT_02,
|
||||
JT_1_F_ORIENT_01,
|
||||
JT_1_F_ORIENT_02,
|
||||
JT_1_F_ORIENT_03,
|
||||
JT_1_F_ORIENT_04,
|
||||
JT_1_F_PRIEST,
|
||||
JT_1_F_PUBGIRL,
|
||||
JT_4_DOG01,
|
||||
JT_4_KID01,
|
||||
JT_4_M_01,
|
||||
JT_4_M_02,
|
||||
JT_4_M_03,
|
||||
JT_4_M_04,
|
||||
JT_4_M_BARBER,
|
||||
JT_4_M_ORIENT01,
|
||||
JT_4_M_ORIENT02,
|
||||
JT_4_F_01,
|
||||
JT_4_F_02,
|
||||
JT_4_F_03,
|
||||
JT_4_F_04,
|
||||
JT_4_F_MAID,
|
||||
JT_4_F_SISTER,
|
||||
JT_4W_KID,
|
||||
JT_4W_M_01,
|
||||
JT_4W_M_02,
|
||||
JT_4W_M_03,
|
||||
JT_4W_SAILOR,
|
||||
JT_4W_F_01,
|
||||
JT_8_F,
|
||||
JT_8_F_GRANDMOTHER,
|
||||
JT_EFFECTLAUNCHER,
|
||||
JT_8W_SOLDIER,
|
||||
JT_1_M_MOC_LORD,
|
||||
JT_1_M_PAY_ELDER,
|
||||
JT_1_M_PRON_KING,
|
||||
JT_4_M_MANAGER,
|
||||
JT_4_M_MINISTER,
|
||||
JT_HIDDEN_NPC,
|
||||
JT_4_F_KAFRA6,
|
||||
JT_4_F_KAFRA5,
|
||||
JT_4_F_KAFRA4,
|
||||
JT_4_F_KAFRA3,
|
||||
JT_4_F_KAFRA2,
|
||||
JT_4_F_KAFRA1,
|
||||
JT_2_M_THIEFMASTER,
|
||||
JT_2_M_SWORDMASTER,
|
||||
JT_2_M_PHARMACIST,
|
||||
JT_2_M_MOLGENSTEIN,
|
||||
JT_2_M_DYEINGER,
|
||||
JT_2_F_MAGICMASTER,
|
||||
JT_4_F_TELEPORTER,
|
||||
JT_4_M_TELEPORTER,
|
||||
NPC_RANGE1_END,
|
||||
|
||||
JT_HIDDEN_WARP_NPC = 139,
|
||||
|
||||
NPC_RANGE2_START = 400,
|
||||
JT_4_M_MUT2,
|
||||
JT_4_M_SCIENCE,
|
||||
JT_4_F_VALKYRIE2,
|
||||
JT_4_M_UNCLEKNIGHT,
|
||||
JT_4_M_YOUNGKNIGHT,
|
||||
JT_2_MONEMUS,
|
||||
JT_4_M_ATEIL,
|
||||
JT_4_F_ANNIVERSARY,
|
||||
JT_4_M_GREATPO,
|
||||
JT_4_M_NOVELIST,
|
||||
JT_4_M_CHAMPSOUL,
|
||||
JT_4_M_OLDFRIAR,
|
||||
JT_4_M_CRU_SOLD,
|
||||
JT_4_M_CRU_KNT,
|
||||
JT_4_M_CRU_HEAD,
|
||||
JT_4_M_CRU_CRUA,
|
||||
JT_4_M_KY_SOLD,
|
||||
JT_4_M_KY_KNT,
|
||||
JT_4_M_KY_HEAD,
|
||||
JT_4_M_KY_KIYOM,
|
||||
JT_4_M_BOSSCAT,
|
||||
JT_4_M_BABYCAT,
|
||||
JT_4W_F_KAFRA2,
|
||||
JT_4_F_MUNAK,
|
||||
JT_4_M_BONGUN,
|
||||
JT_4_BEAR,
|
||||
JT_4_BLUEWOLF,
|
||||
JT_4_PECOPECO,
|
||||
JT_4_M_JP_MID,
|
||||
JT_4_M_JP_RUN,
|
||||
JT_4_ORCLADY,
|
||||
JT_4_ORCLADY2,
|
||||
JT_4_ORCWARRIOR,
|
||||
JT_4_ORCWARRIOR2,
|
||||
JT_4_F_FAIRY,
|
||||
JT_4_F_FAIRYKID,
|
||||
JT_4_F_FAIRYKID2,
|
||||
JT_4_F_FAIRYKID3,
|
||||
JT_4_F_FAIRYKID4,
|
||||
JT_4_F_FAIRYKID5,
|
||||
JT_4_F_FAIRYKID6,
|
||||
JT_4_M_FAIRYKID,
|
||||
JT_4_M_FAIRYKID2,
|
||||
JT_4_M_FAIRYKID3,
|
||||
JT_4_M_FAIRYKID4,
|
||||
JT_4_M_FAIRYKID5,
|
||||
JT_4_M_FAIRYSOLDIER,
|
||||
JT_4_M_TUFFOLD,
|
||||
JT_4_MAN_BENKUNI,
|
||||
JT_4_MAN_GALTUN,
|
||||
JT_4_MAN_JERUTOO,
|
||||
JT_4_MAN_LAVAIL,
|
||||
JT_4_MAN_NITT,
|
||||
JT_4_MAN_PIOM,
|
||||
JT_4_MAN_PIOM2,
|
||||
JT_4_M_DSTMAN,
|
||||
JT_4_M_DSTMANDEAD,
|
||||
JT_4_BABYLEOPARD,
|
||||
JT_4_M_REDSWORD,
|
||||
JT_4_MAN_PIOM3,
|
||||
JT_4_M_FAIRYSOLDIER2,
|
||||
JT_4_F_FAIRYSOLDIER,
|
||||
JT_4_DRAGON_EGG,
|
||||
JT_4_MIMIC,
|
||||
JT_4_F_FAIRY1,
|
||||
JT_4_F_GUILLOTINE,
|
||||
JT_4_M_GUILLOTINE,
|
||||
JT_4_M_KNIGHT_BLACK,
|
||||
JT_4_M_KNIGHT_GOLD,
|
||||
JT_4_M_KNIGHT_SILVER,
|
||||
JT_4_SKULL_MUD,
|
||||
JT_4_M_BRZ_INDIAN,
|
||||
JT_4_F_BRZ_INDIAN,
|
||||
JT_4_F_BRZ_INDOLD,
|
||||
JT_4_M_BRZ_JACI,
|
||||
JT_4_M_BRZ_MAN1,
|
||||
JT_4_M_BRZ_MAN2,
|
||||
JT_4_F_BRZ_WOMAN,
|
||||
JT_4_M_MINSTREL,
|
||||
JT_4_M_MINSTREL1,
|
||||
JT_4_M_SHADOWCHASER,
|
||||
JT_4_F_SHADOWCHASER,
|
||||
JT_4_M_SURA,
|
||||
JT_4_F_SURA,
|
||||
JT_4_F_WANDERER,
|
||||
JT_4_M_BARD,
|
||||
JT_1_FLAG_NOFEAR,
|
||||
JT_4_M_NOFEARGUY,
|
||||
JT_4_MAN_PIOM6,
|
||||
JT_4_MAN_PIOM4,
|
||||
JT_4_MAN_PIOM5,
|
||||
JT_4_MAN_GALTUN1,
|
||||
JT_4_HUMAN_GERUTOO,
|
||||
JT_4_M_ROKI,
|
||||
JT_4_M_MERCAT1,
|
||||
JT_4_M_MERCAT2,
|
||||
JT_4_M_CATMAN1,
|
||||
JT_4_M_CATMAN2,
|
||||
JT_4_F_BRZ_WOMAN2,
|
||||
JT_4_M_JP_DISH,
|
||||
JT_4_F_JP_NOAH,
|
||||
JT_4_F_JP_OZ,
|
||||
JT_4_F_JP_CHROME,
|
||||
JT_4_F_JP_RINNE,
|
||||
JT_4_WHITETIGER,
|
||||
JT_4_VENDING_MACHINE,
|
||||
JT_4_MISTY,
|
||||
JT_4_NECORING,
|
||||
JT_4_ELEPHANT,
|
||||
JT_4_F_NYDHOG,
|
||||
JT_4_F_NYDHOG2,
|
||||
JT_4_M_ROKI2,
|
||||
JT_4_M_DOGTRAVELER,
|
||||
JT_4_M_DOGTRAVELER2,
|
||||
JT_4_F_DOGTRAVELER,
|
||||
JT_4_M_RAFLE_GR,
|
||||
JT_4_M_RAFLE_OLD,
|
||||
JT_4_F_RAFLE_PK,
|
||||
JT_4_M_LYINGDOG,
|
||||
JT_4_F_MORAFINE1,
|
||||
JT_4_F_MORAFINE2,
|
||||
JT_4_M_RAFLE_OR,
|
||||
JT_4_F_RAFLE_YE,
|
||||
JT_4_M_RAFLE_VI,
|
||||
JT_4_F_RAFLE_VI,
|
||||
JT_4_M_ARDHA,
|
||||
JT_4_CREEPER,
|
||||
JT_JP_RUFAKU,
|
||||
JT_JP_SUPIKA,
|
||||
JT_JP_SABIKU,
|
||||
JT_JP_ARUGORU,
|
||||
JT_JP_ARUNA,
|
||||
JT_JP_AIRI,
|
||||
JT_4_M_DEWOLDMAN,
|
||||
JT_4_M_DEWOLDWOMAN,
|
||||
JT_4_M_DEWMAN,
|
||||
JT_4_M_DEWWOMAN,
|
||||
JT_4_M_DEWBOY,
|
||||
JT_4_M_DEWGIRL,
|
||||
JT_4_M_DEWZATICHIEF,
|
||||
JT_4_M_DEWZATIMAN,
|
||||
JT_4_M_ALCHE_E,
|
||||
JT_4_MASK_SMOKEY,
|
||||
JT_4_CAT_SAILOR1,
|
||||
JT_4_CAT_SAILOR2,
|
||||
JT_4_CAT_SAILOR3,
|
||||
JT_4_CAT_SAILOR4,
|
||||
JT_4_CAT_CHEF,
|
||||
JT_4_CAT_MERMASTER,
|
||||
JT_4_CRACK,
|
||||
JT_4_ASTER,
|
||||
JT_4_F_STARFISHGIRL,
|
||||
JT_4_CAT_DOWN,
|
||||
JT_4_CAT_REST,
|
||||
JT_4_CAT_3COLOR,
|
||||
JT_4_CAT_ADMIRAL,
|
||||
JT_4_SOIL,
|
||||
JT_4_F_ALCHE_A,
|
||||
JT_4_CAT_ADV1,
|
||||
JT_4_CAT_ADV2,
|
||||
JT_4_CAT_SAILOR5,
|
||||
JT_2_DROP_MACHINE,
|
||||
JT_2_SLOT_MACHINE,
|
||||
JT_2_VENDING_MACHINE1,
|
||||
JT_MOB_TOMB,
|
||||
JT_4_MYSTCASE,
|
||||
JT_4_M_SIT_NOVICE,
|
||||
JT_4_OCTOPUS_LEG,
|
||||
JT_4_F_NURSE,
|
||||
JT_4_MAL_SOLDIER,
|
||||
JT_4_MAL_CAPTAIN,
|
||||
JT_4_MAL_BUDIDAI,
|
||||
JT_4_M_MAYOR,
|
||||
JT_4_M_BARYO_OLD,
|
||||
JT_4_F_BARYO_OLD,
|
||||
JT_4_F_BARYO_GIRL,
|
||||
JT_4_M_BARYO_BOY,
|
||||
JT_4_M_BARYO_MAN,
|
||||
JT_4_F_BARYO_WOMAN,
|
||||
JT_4_BARYO_CHIEF,
|
||||
JT_4_MAL_KAFRA,
|
||||
JT_4_M_MALAYA,
|
||||
JT_4_F_MALAYA,
|
||||
JT_4_F_PATIENT,
|
||||
JT_4_M_PATIENT,
|
||||
JT_4_F_KR_TIGER,
|
||||
JT_4_M_KR_BOY,
|
||||
JT_4_M_KAGE_OLD,
|
||||
JT_4_WHIKEBAIN,
|
||||
JT_4_EREND,
|
||||
JT_4_RAWREL,
|
||||
JT_4_ARMAIA,
|
||||
JT_4_KAVAC,
|
||||
JT_4_YGNIZEM,
|
||||
JT_4_EREMES,
|
||||
JT_4_MAGALETA,
|
||||
JT_4_KATRINN,
|
||||
JT_4_SHECIL,
|
||||
JT_4_SEYREN,
|
||||
JT_4_HARWORD,
|
||||
JT_4_F_JP_CYNTHIA,
|
||||
JT_4_M_JP_GUSTON,
|
||||
JT_4_M_JP_BERKUT,
|
||||
JT_4_F_JP_DARK_ADELAIDE,
|
||||
JT_4_M_JP_DARK_DARIUS,
|
||||
JT_4_M_JP_JESTER,
|
||||
JT_XMAS_SMOKEY_B,
|
||||
JT_XMAS_SMOKEY_R,
|
||||
JT_XMAS_SMOKEY_Y,
|
||||
JT_4_F_CLOCKDOLL,
|
||||
JT_4_F_FAIRY2,
|
||||
JT_4_F_PINKWOMAN,
|
||||
JT_4_FAIRYDEADLEAF,
|
||||
JT_4_FROG,
|
||||
JT_4_M_BLACKMAN,
|
||||
JT_4_M_BLUEMAN,
|
||||
JT_4_M_FAIRYANG,
|
||||
JT_4_M_FAIRYAVANT,
|
||||
JT_4_M_FAIRYFREAK,
|
||||
JT_4_M_FAIRYKID6,
|
||||
JT_4_M_FAIRYSCHOLAR,
|
||||
JT_4_M_FAIRYSCHOLAR_DIRTY,
|
||||
JT_4_M_FARIY_HISIE,
|
||||
JT_4_M_FARIYKING,
|
||||
JT_4_M_NEWOZ,
|
||||
JT_4_M_OLIVER,
|
||||
JT_4_M_PROFESSORWORM,
|
||||
JT_4_M_REDMAN,
|
||||
JT_4_F_GELKA,
|
||||
JT_4_M_ROTERT,
|
||||
JT_4_BLACKDRAGON,
|
||||
JT_4_M_GUNSLINGER,
|
||||
JT_4_F_GUNSLINGER,
|
||||
JT_4_M_ARCHER,
|
||||
JT_4_M_SWORDMAN,
|
||||
JT_4_M_NINJA_RED,
|
||||
JT_4_M_NINJA_BLUE,
|
||||
JT_4_M_THIEF_RUMIN,
|
||||
JT_4_M_NOV_RUMIN,
|
||||
JT_4_F_MAYSEL,
|
||||
JT_4_F_ACOLYTE,
|
||||
JT_4_M_NOV_HUNT,
|
||||
JT_4_F_GENETIC,
|
||||
JT_4_F_TAEKWON,
|
||||
JT_4_F_SWORDMAN,
|
||||
JT_4_F_IU,
|
||||
JT_4_M_RAGI,
|
||||
JT_4_M_MELODY,
|
||||
JT_4_TRACE,
|
||||
JT_4_F_HIMEL,
|
||||
JT_4_LEVITATEMAN,
|
||||
JT_4_M_HEINRICH,
|
||||
JT_4_M_ROYALGUARD,
|
||||
JT_4_M_BARMUND,
|
||||
JT_4_F_KHALITZBURG,
|
||||
JT_4_F_HIMEL2,
|
||||
JT_4_WHITEKNIGHT,
|
||||
JT_4_COCO,
|
||||
JT_4_M_ALADDIN,
|
||||
JT_4_M_GENIE,
|
||||
JT_4_F_GENIE,
|
||||
JT_4_JP_MID_SWIM,
|
||||
JT_4_JP_RUNE_SWIM,
|
||||
JT_4_F_FENRIR,
|
||||
JT_4_F_GEFFEN_FAY,
|
||||
JT_4_F_IRIS,
|
||||
JT_4_F_LUCILE,
|
||||
JT_4_F_SARAH_BABY,
|
||||
JT_4_GEFFEN_01,
|
||||
JT_4_GEFFEN_02,
|
||||
JT_4_GEFFEN_03,
|
||||
JT_4_GEFFEN_04,
|
||||
JT_4_GEFFEN_05,
|
||||
JT_4_GEFFEN_06,
|
||||
JT_4_GEFFEN_07,
|
||||
JT_4_GEFFEN_08,
|
||||
JT_4_GEFFEN_09,
|
||||
JT_4_GEFFEN_10,
|
||||
JT_4_GEFFEN_11,
|
||||
JT_4_GEFFEN_12,
|
||||
JT_4_GEFFEN_13,
|
||||
JT_4_GEFFEN_14,
|
||||
JT_4_M_CHAOS,
|
||||
JT_4_M_CHIEF_IRIN,
|
||||
JT_4_M_SAKRAY,
|
||||
JT_4_M_SAKRAYROYAL,
|
||||
JT_4_TOWER_01,
|
||||
JT_4_TOWER_02,
|
||||
JT_4_TOWER_03,
|
||||
JT_4_TOWER_04,
|
||||
JT_4_TOWER_05,
|
||||
JT_4_TOWER_06,
|
||||
JT_4_TOWER_07,
|
||||
JT_4_TOWER_08,
|
||||
JT_4_TOWER_09,
|
||||
JT_4_TOWER_10,
|
||||
JT_4_TOWER_11,
|
||||
JT_4_TOWER_12,
|
||||
JT_4_TOWER_13,
|
||||
JT_8_F_GIRL,
|
||||
JT_4_F_GODEMOM,
|
||||
JT_4_F_GON,
|
||||
JT_4_F_KID2,
|
||||
JT_4_M_BIBI,
|
||||
JT_4_M_GEF_SOLDIER,
|
||||
JT_4_M_KID1,
|
||||
JT_4_M_MOC_SOLDIER,
|
||||
JT_4_M_PAY_SOLDIER,
|
||||
JT_4_M_SEAMAN,
|
||||
JT_4_M_SNOWMAN,
|
||||
JT_4_F_05,
|
||||
JT_4_M_05,
|
||||
JT_4_M_06,
|
||||
JT_4_F_06,
|
||||
JT_4_M_PIERROT,
|
||||
JT_4_M_KID2,
|
||||
JT_4_F_KID3,
|
||||
JT_4_M_SANTA,
|
||||
JT_4_F_NACORURI,
|
||||
JT_4_F_SHAMAN,
|
||||
JT_4_F_KAFRA7,
|
||||
JT_GUILD_FLAG,
|
||||
JT_1_SHADOW_NPC,
|
||||
JT_4_F_07,
|
||||
JT_4_F_JOB_ASSASSIN,
|
||||
JT_4_F_JOB_BLACKSMITH,
|
||||
JT_4_F_JOB_HUNTER,
|
||||
JT_4_F_JOB_KNIGHT,
|
||||
JT_4_F_NOVICE,
|
||||
JT_4_M_JOB_ASSASSIN,
|
||||
JT_4_M_JOB_BLACKSMITH,
|
||||
JT_4_M_JOB_HUNTER,
|
||||
JT_4_M_JOB_KNIGHT1,
|
||||
JT_4_M_JOB_KNIGHT2,
|
||||
JT_4_M_JOB_WIZARD,
|
||||
JT_4_BAPHOMET,
|
||||
JT_4_DARKLORD,
|
||||
JT_4_DEVIRUCHI,
|
||||
JT_8_DOPPEL,
|
||||
JT_2_M_ALCHE,
|
||||
JT_2_M_BARD_ORIENT,
|
||||
JT_2_M_SAGE_B,
|
||||
JT_2_M_SAGE_OLD,
|
||||
JT_4_F_ALCHE,
|
||||
JT_4_F_CRU,
|
||||
JT_4_F_MONK,
|
||||
JT_4_F_ROGUE,
|
||||
JT_4_M_ALCHE_A,
|
||||
JT_4_M_ALCHE_B,
|
||||
JT_4_M_ALCHE_C,
|
||||
JT_4_M_CRU,
|
||||
JT_4_M_CRU_OLD,
|
||||
JT_4_M_MONK,
|
||||
JT_4_M_SAGE_A,
|
||||
JT_4_M_SAGE_C,
|
||||
JT_4_F_SON,
|
||||
JT_4_F_JPN2,
|
||||
JT_4_F_JPN,
|
||||
JT_4_F_JPNCHIBI,
|
||||
JT_4_F_JPNOBA2,
|
||||
JT_4_F_JPNOBA,
|
||||
JT_4_M_JPN2,
|
||||
JT_4_M_JPN,
|
||||
JT_4_M_JPNCHIBI,
|
||||
JT_4_M_JPNOJI2,
|
||||
JT_4_M_JPNOJI,
|
||||
JT_8_M_JPNSOLDIER,
|
||||
JT_8_M_JPNMASTER,
|
||||
JT_4_F_JPNMU,
|
||||
JT_4_F_TWGIRL,
|
||||
JT_4_F_TWGRANDMOM,
|
||||
JT_4_F_TWMASKGIRL,
|
||||
JT_4_F_TWMIDWOMAN,
|
||||
JT_4_M_TWBOY,
|
||||
JT_4_M_TWMASKMAN,
|
||||
JT_4_M_TWMIDMAN,
|
||||
JT_4_M_TWOLDMAN,
|
||||
JT_4_M_TWTEAMAN,
|
||||
JT_4_M_YOYOROGUE,
|
||||
JT_8_M_TWSOLDIER,
|
||||
JT_4_F_UMGIRL,
|
||||
JT_4_F_UMOLDWOMAN,
|
||||
JT_4_F_UMWOMAN,
|
||||
JT_4_M_UMCHIEF,
|
||||
JT_4_M_UMDANCEKID2,
|
||||
JT_4_M_UMDANCEKID,
|
||||
JT_4_M_UMKID,
|
||||
JT_4_M_UMOLDMAN,
|
||||
JT_4_M_UMSOLDIER,
|
||||
JT_4_M_SALVATION,
|
||||
JT_4_F_NFDEADKAFRA,
|
||||
JT_4_F_NFDEADMGCIAN,
|
||||
JT_4_F_NFLOSTGIRL,
|
||||
JT_4_M_NFDEADMAN2,
|
||||
JT_4_M_NFDEADMAN,
|
||||
JT_4_M_NFDEADSWDMAN,
|
||||
JT_4_M_NFLOSTMAN,
|
||||
JT_4_M_NFMAN,
|
||||
JT_4_NFBAT,
|
||||
JT_4_NFCOCK,
|
||||
JT_4_NFCOFFIN,
|
||||
JT_4_NFWISP,
|
||||
JT_1_F_SIGNZISK,
|
||||
JT_1_M_SIGN1,
|
||||
JT_1_M_SIGNALCHE,
|
||||
JT_1_M_SIGNART,
|
||||
JT_1_M_SIGNMCNT,
|
||||
JT_1_M_SIGNMONK2,
|
||||
JT_1_M_SIGNMONK,
|
||||
JT_1_M_SIGNROGUE,
|
||||
JT_4_F_VALKYRIE,
|
||||
JT_TW_TOWER,
|
||||
JT_2_M_OLDBLSMITH,
|
||||
JT_4_F_CHNDOCTOR,
|
||||
JT_4_F_CHNDRESS1,
|
||||
JT_4_F_CHNDRESS2,
|
||||
JT_4_F_CHNDRESS3,
|
||||
JT_4_F_CHNWOMAN,
|
||||
JT_4_M_CHN8GUEK,
|
||||
JT_4_M_CHNCOOK,
|
||||
JT_4_M_CHNGENERL,
|
||||
JT_4_M_CHNMAN,
|
||||
JT_4_M_CHNMONK,
|
||||
JT_4_M_CHNOLD,
|
||||
JT_4_M_CHNSOLDIER,
|
||||
JT_4_M_DWARF,
|
||||
JT_4_M_GRANDMONK,
|
||||
JT_4_M_ROGUE,
|
||||
JT_4_M_DOMINO,
|
||||
JT_4_F_DOMINO,
|
||||
JT_4_F_ZONDAGIRL,
|
||||
JT_4_M_REIDIN_KURS,
|
||||
JT_4_M_ZONDAOYAJI,
|
||||
JT_4_M_BUDDHIST,
|
||||
JT_2_BOARD1,
|
||||
JT_2_BOARD2,
|
||||
JT_2_BULLETIN_BOARD,
|
||||
JT_4_F_THAIAYO,
|
||||
JT_4_F_THAIGIRL,
|
||||
JT_4_F_THAISHAMAN,
|
||||
JT_4_M_THAIAYO,
|
||||
JT_4_M_THAIOLD,
|
||||
JT_4_M_THAIONGBAK,
|
||||
JT_CLEAR_NPC,
|
||||
JT_4_F_RACING,
|
||||
JT_4_F_EINOLD,
|
||||
JT_4_M_EINOLD,
|
||||
JT_4_M_EINMINER,
|
||||
JT_4_M_DIEMAN,
|
||||
JT_4_F_EINWOMAN,
|
||||
JT_4_M_REPAIR,
|
||||
JT_4_M_EIN_SOLDIER,
|
||||
JT_4_M_YURI,
|
||||
JT_4_M_EINMAN2,
|
||||
JT_4_M_EINMAN,
|
||||
JT_2_F_SIGN1,
|
||||
JT_4_BOARD3,
|
||||
JT_4_BULLETIN_BOARD2,
|
||||
JT_4_F_AGENTKAFRA,
|
||||
JT_4_F_KAFRA8,
|
||||
JT_4_F_KAFRA9,
|
||||
JT_4_F_LGTGIRL,
|
||||
JT_4_F_LGTGRAND,
|
||||
JT_4_F_OPERATION,
|
||||
JT_4_LGTSCIENCE,
|
||||
JT_4_M_LGTGRAND,
|
||||
JT_4_M_LGTGUARD2,
|
||||
JT_4_M_LGTGUARD,
|
||||
JT_4_M_LGTMAN,
|
||||
JT_4_M_LGTPOOR,
|
||||
JT_4_M_OPERATION,
|
||||
JT_4_M_PRESIDENT,
|
||||
JT_4_M_REINDEER,
|
||||
JT_4_M_ZONDAMAN,
|
||||
JT_4_M_PECOKNIGHT,
|
||||
JT_4_CAT,
|
||||
JT_4_F_YUNYANG,
|
||||
JT_4_M_OILMAN,
|
||||
JT_4_F_CAPEGIRL,
|
||||
JT_4_M_MASKMAN,
|
||||
JT_4_M_SITDOWN,
|
||||
JT_4_F_SITDOWN,
|
||||
JT_4_M_ALCHE_D,
|
||||
JT_4_M_ACROSS,
|
||||
JT_4_F_ACROSS,
|
||||
JT_4_COOK,
|
||||
JT_4_M_LIEMAN,
|
||||
JT_2_POSTBOX,
|
||||
JT_4_BULL,
|
||||
JT_4_LAM,
|
||||
JT_4_F_HUGIRL,
|
||||
JT_4_F_HUGRANMA,
|
||||
JT_4_F_HUWOMAN,
|
||||
JT_4_F_KHELLISIA,
|
||||
JT_4_F_KHELLY,
|
||||
JT_4_M_HUBOY,
|
||||
JT_4_M_HUGRANFA,
|
||||
JT_4_M_HUMAN_01,
|
||||
JT_4_M_HUMAN_02,
|
||||
JT_4_M_HUMERCHANT,
|
||||
JT_4_M_HUOLDARMY,
|
||||
JT_4_M_KHKIEL,
|
||||
JT_4_M_KHKYEL,
|
||||
JT_4_M_KHMAN,
|
||||
JT_4_F_KHWOMAN,
|
||||
JT_4_F_KHGIRL,
|
||||
JT_4_M_KHBOY,
|
||||
JT_4_M_PHILMAN,
|
||||
JT_4_PORING,
|
||||
JT_2_COLAVEND,
|
||||
JT_4_F_SOCCER,
|
||||
JT_4_M_SOCCER7,
|
||||
JT_4_M_SOCCER9,
|
||||
JT_4_F_CHILD,
|
||||
JT_4_F_MADAME,
|
||||
JT_4_F_MASK1,
|
||||
JT_4_F_MASK,
|
||||
JT_4_F_RACHOLD,
|
||||
JT_4_F_SHABBY,
|
||||
JT_4_F_TRAINEE,
|
||||
JT_4_M_CHILD1,
|
||||
JT_4_M_CHILD,
|
||||
JT_4_M_DOCTOR,
|
||||
JT_4_M_FROZEN1,
|
||||
JT_4_M_FROZEN,
|
||||
JT_4_M_MASK1,
|
||||
JT_4_M_MASK,
|
||||
JT_4_M_MIDDLE1,
|
||||
JT_4_M_MIDDLE,
|
||||
JT_4_M_RACHMAN2,
|
||||
JT_4_M_RACHMAN1,
|
||||
JT_4_M_RACHOLD1,
|
||||
JT_4_M_RACHOLD,
|
||||
JT_4_M_RASWORD,
|
||||
JT_4_M_TRAINEE,
|
||||
JT_4_F_ARUNA_POP,
|
||||
JT_4_M_ARUNA_NFM1,
|
||||
JT_4_DST_CAMEL,
|
||||
JT_4_DST_SOLDIER,
|
||||
JT_4_F_DESERT,
|
||||
JT_4_F_DST_CHILD,
|
||||
JT_4_F_DST_GRAND,
|
||||
JT_4_M_DESERT,
|
||||
JT_4_M_DST_CHILD,
|
||||
JT_4_M_DST_GRAND,
|
||||
JT_4_M_DST_MASTER,
|
||||
JT_4_M_DST_TOUGH,
|
||||
JT_4_ANGELING,
|
||||
JT_4_ARCHANGELING,
|
||||
JT_4_GHOSTRING,
|
||||
JT_4_F_EDEN_MASTER,
|
||||
JT_4_F_EDEN_OFFICER,
|
||||
JT_4_M_EDEN_GUARDER,
|
||||
JT_4_M_PATRICK,
|
||||
JT_4_DONKEY,
|
||||
JT_4_M_TRISTAN,
|
||||
JT_4_WHITE_COW,
|
||||
JT_4_F_RUSCHILD,
|
||||
JT_4_F_RUSWOMAN1,
|
||||
JT_4_F_RUSWOMAN2,
|
||||
JT_4_F_RUSWOMAN3,
|
||||
JT_4_M_RUSCHILD,
|
||||
JT_4_M_GUSLIMAN,
|
||||
JT_4_M_RUSBALD,
|
||||
JT_4_M_RUSKING,
|
||||
JT_4_M_RUSKNIGHT,
|
||||
JT_4_M_RUSMAN1,
|
||||
JT_4_M_RUSMAN2,
|
||||
JT_4_M_DRAKE,
|
||||
JT_4_F_BABAYAGA,
|
||||
JT_4_F_RUSGREEN,
|
||||
JT_4_RUS_DWOLF,
|
||||
JT_1_FLAG_LION,
|
||||
JT_1_FLAG_EAGLE,
|
||||
JT_4_M_MIKID,
|
||||
JT_4_BLUE_FLOWER,
|
||||
JT_4_RED_FLOWER,
|
||||
JT_4_YELL_FLOWER,
|
||||
JT_4_F_CAVE1,
|
||||
JT_4_F_MUT1,
|
||||
JT_4_F_MUT2,
|
||||
JT_4_F_SCIENCE,
|
||||
JT_4_M_1STPRIN1,
|
||||
JT_4_M_1STPRIN2,
|
||||
JT_4_M_2NDPRIN1,
|
||||
JT_4_M_2NDPRIN2,
|
||||
JT_4_M_3RDPRIN1,
|
||||
JT_4_M_3RDPRIN2,
|
||||
JT_4_M_4THPRIN1,
|
||||
JT_4_M_4THPRIN2,
|
||||
JT_4_M_5THPRIN1,
|
||||
JT_4_M_5THPRIN2,
|
||||
JT_4_M_6THPRIN1,
|
||||
JT_4_M_6THPRIN2,
|
||||
JT_4_M_CASMAN1,
|
||||
JT_4_M_CAVE1,
|
||||
JT_4_M_MOCASS1,
|
||||
JT_4_M_MOCASS2,
|
||||
JT_4_M_MUT1,
|
||||
NPC_RANGE2_END, // Official JT_MON_BEGIN
|
||||
|
||||
NPC_RANGE3_START = 10000, // Official JT_NEW_NPC_3RD_BEGIN
|
||||
JT_4_TOWER_14,
|
||||
JT_4_TOWER_15,
|
||||
JT_4_TOWER_16,
|
||||
JT_4_TOWER_17,
|
||||
JT_4_TREASURE_BOX,
|
||||
JT_ACADEMY_MASTER,
|
||||
JT_PORTAL,
|
||||
JT_THANATOS_BATTLE,
|
||||
JT_THANATOS_KEEP,
|
||||
JT_4_F_LYDIA,
|
||||
JT_4_LUDE,
|
||||
JT_4_ALIZA,
|
||||
JT_4_ALICE,
|
||||
JT_4_ARCHER_SKEL,
|
||||
JT_4_JACK,
|
||||
JT_4_SOLDIER_SKEL,
|
||||
JT_4_LOLI_RURI,
|
||||
JT_4_M_SAKRAY_TIED,
|
||||
JT_4_M_ANTONIO,
|
||||
JT_4_M_COOKIE,
|
||||
JT_4_M_BELIEVER01,
|
||||
JT_4_F_BELIEVER01,
|
||||
JT_4_M_BELIEVER02,
|
||||
JT_4_ROPEPILE,
|
||||
JT_4_BRICKPILE,
|
||||
JT_4_WOODPILE,
|
||||
JT_4_M_TAMARIN,
|
||||
JT_4_M_DEATH,
|
||||
JT_4_GHOST_STAND,
|
||||
JT_4_GHOST_COLLAPSE,
|
||||
JT_4_COOKIEHOUSE,
|
||||
JT_4_F_SKULL06GIRL,
|
||||
JT_4_NONMYSTCASE,
|
||||
JT_4_F_KIMI,
|
||||
JT_4_M_FROZEN_GC,
|
||||
JT_4_M_FROZEN_KN,
|
||||
JT_4_SNAKE_LORD,
|
||||
JT_4_F_MOCBOY,
|
||||
JT_4_F_RUNAIN,
|
||||
JT_4_M_ROEL,
|
||||
JT_4_F_SHALOSH,
|
||||
JT_4_ENERGY_RED,
|
||||
JT_4_ENERGY_BLUE,
|
||||
JT_4_ENERGY_YELLOW,
|
||||
JT_4_ENERGY_BLACK,
|
||||
JT_4_ENERGY_WHITE,
|
||||
JT_4_F_PERE01,
|
||||
JT_4_JITTERBUG,
|
||||
JT_4_SEA_OTTER,
|
||||
JT_4_GALAPAGO,
|
||||
JT_4_DESERTWOLF_B,
|
||||
JT_4_BB_PORING,
|
||||
JT_4_F_CHARLESTON01,
|
||||
JT_4_F_CHARLESTON02,
|
||||
JT_4_F_CHARLESTON03,
|
||||
JT_4_M_IAN,
|
||||
JT_4_M_OLDSCHOLAR,
|
||||
JT_4_F_LAPERM,
|
||||
JT_4_M_DEBON,
|
||||
JT_4_M_BIRMAN,
|
||||
JT_4_F_SHAM,
|
||||
JT_4_M_REBELLION,
|
||||
JT_4_F_REBELLION,
|
||||
JT_4_CHN_SHAOTH,
|
||||
JT_4_SHOAL,
|
||||
JT_4_F_SARAH,
|
||||
JT_4_GIGANTES_BIG,
|
||||
JT_4_GIGANTES,
|
||||
JT_4_GIGANTES_SMALL,
|
||||
JT_4_GARGOYLE_STATUE,
|
||||
JT_4_AIRA,
|
||||
JT_4_EZELLA,
|
||||
JT_4_KULUNA,
|
||||
JT_4_LUNE,
|
||||
JT_4_MALLINA,
|
||||
JT_4_MORIN,
|
||||
JT_4_NASARIN,
|
||||
JT_4_F_BERRYTEA,
|
||||
JT_4_F_FRUIT,
|
||||
JT_4_SCR_MT_ROBOTS,
|
||||
JT_4_MACHINE_DEVICE,
|
||||
JT_4_GC109,
|
||||
JT_4_SYS_MSG,
|
||||
JT_4_M_TATIO,
|
||||
JT_4_M_REKENBER,
|
||||
JT_4_XMAS_CAT1,
|
||||
JT_4_XMAS_CAT2,
|
||||
JT_4_XMAS_CAT3,
|
||||
JT_4_XMAS_CAT4,
|
||||
JT_4_XMAS_CAT5,
|
||||
JT_4_XMAS_CAT6,
|
||||
JT_4_M_DEATH2,
|
||||
JT_4_S_KADOMATSU,
|
||||
JT_4_B_KADOMATSU,
|
||||
JT_4_F_08,
|
||||
JT_4_F_08_STATUE,
|
||||
JT_4_M_DARKPRIEST,
|
||||
JT_4_JP_GARM_H,
|
||||
JT_4_JP_MEDUSA_H,
|
||||
JT_4_CHN_GVG_01,
|
||||
JT_4_SPRING_RABBIT,
|
||||
JT_4_PD_TYRA,
|
||||
JT_4_PD_TYRANOS,
|
||||
JT_4_PD_PLESI,
|
||||
JT_4_PD_PLESIO,
|
||||
JT_4_PD_BRACHI,
|
||||
JT_4_PD_BRACHIOS,
|
||||
JT_4_PD_GOLDDRAGON,
|
||||
JT_4_PD_ZAEROG,
|
||||
JT_4_PD_TAMADORA,
|
||||
JT_4_JP_EDGA_H,
|
||||
JT_4_JP_BRAGOLEM_H,
|
||||
JT_4_EL_AQUA,
|
||||
JT_4_EP16_NIHIL,
|
||||
JT_4_EP16_SPICA,
|
||||
JT_4_EP16_SKIA,
|
||||
JT_4_EP16_PETER,
|
||||
JT_4_EP16_CRUX,
|
||||
JT_4_EP16_GRANZ,
|
||||
JT_4_EP16_STOLZ,
|
||||
JT_4_EP16_EGEO,
|
||||
JT_4_EP16_COOK,
|
||||
JT_4_EP16_MARK,
|
||||
JT_4_EP16_TAMARIN,
|
||||
JT_4_EP16_POE,
|
||||
JT_4_EP16_ISAAC,
|
||||
JT_4_EP16_HELMUT,
|
||||
JT_4_EP16_WOLF,
|
||||
JT_4_EP16_MEYER,
|
||||
JT_4_EP16_AGNES,
|
||||
JT_4_EP16_FOOD,
|
||||
JT_4_EP16_LOUVIERE,
|
||||
JT_4_EP16_MAX,
|
||||
JT_4_EP16_SPIEGEL,
|
||||
JT_4_MOONLIGHT,
|
||||
JT_4_MISTRESS,
|
||||
JT_4_DRACULA,
|
||||
JT_4_STORMKNIGHT,
|
||||
JT_4_TATTER,
|
||||
JT_4_AS_RAGGED_GOLEM,
|
||||
JT_4_AS_BLOODY_KNIGHT,
|
||||
JT_4_AS_WIND_GHOST,
|
||||
JT_4_F_BIJOU,
|
||||
JT_4_EP16_COOK2,
|
||||
JT_4_SERVICE_30_M_01,
|
||||
JT_4_SERVICE_30_F_01,
|
||||
JT_4_SCR_AT_ROBOTS,
|
||||
JT_4_F_RANGER,
|
||||
JT_4_WAG,
|
||||
JT_4_NPC_TRAP,
|
||||
JT_4_RAGGLER,
|
||||
JT_4_DR_PEPE,
|
||||
JT_4_DR_GAMBERI,
|
||||
JT_4_DR_AGLIO,
|
||||
JT_4_DR_OLIO,
|
||||
JT_4_DR_STELO,
|
||||
JT_4_DR_TORTEL,
|
||||
JT_4_BASIL_SLAVE,
|
||||
JT_4_DOU_JINDO,
|
||||
JT_4_DOU_SIBA,
|
||||
JT_4_TARUTUPI,
|
||||
JT_4_DR_SOLDIER,
|
||||
JT_4_DR_M_01,
|
||||
JT_4_DR_M_02,
|
||||
JT_4_DR_F_01,
|
||||
JT_4_DR_F_02,
|
||||
JT_4_DR_KID_01,
|
||||
JT_4_JP_2015EVT,
|
||||
JT_4_ALLIGATOR,
|
||||
JT_4_ANOLIAN,
|
||||
JT_4_TACNU,
|
||||
JT_4_CENERE,
|
||||
JT_4_F_ARUNA_POP2,
|
||||
JT_4_JACK_HEAD,
|
||||
JT_4_INJUSTICE,
|
||||
JT_4_BLOODYMAN,
|
||||
JT_4_GIBBET,
|
||||
JT_4_DULLAHAN,
|
||||
JT_4_M_LAZY,
|
||||
JT_4_M_GONY,
|
||||
JT_4_M_ROOKIE,
|
||||
JT_4_M_PHILOFONTES,
|
||||
JT_4_F_ESTLOVELOY,
|
||||
JT_4_F_LEEDSH,
|
||||
JT_4_F_DIENE,
|
||||
JT_4_F_COATNEIS,
|
||||
JT_4_M_RUPERT,
|
||||
JT_4_M_FALLENGONY,
|
||||
JT_4_M_EISEN,
|
||||
JT_4_F_DEADEVIL,
|
||||
JT_4_F_HUNTER_EVIL,
|
||||
JT_4_F_ELENA,
|
||||
JT_4_F_ANYA,
|
||||
JT_4_M_SEIREN_UC,
|
||||
JT_4_M_GUNSLINGER2,
|
||||
JT_4_M_GUNSLINGER3,
|
||||
JT_4_M_REBELLION2,
|
||||
JT_4_M_REBELLION3,
|
||||
JT_4_F_GUNSLINGER2,
|
||||
JT_4_F_GUNSLINGER3,
|
||||
JT_4_F_REBELLION2,
|
||||
JT_4_F_REBELLION3,
|
||||
JT_4_M_ILYA,
|
||||
|
||||
JT_4_ELDER = 10205,
|
||||
JT_4_LUNATIC,
|
||||
JT_4_F_NOVICE2,
|
||||
JT_4_WICKEDNYMPH,
|
||||
JT_4_F_PREMI,
|
||||
JT_4_M_COSTELL,
|
||||
JT_4_M_YATTWARP,
|
||||
JT_4_M_EVOKASCUDI,
|
||||
JT_4_M_JOHNNYJAMES,
|
||||
JT_4_M_ALBERTFORD,
|
||||
JT_4_M_SEANMCCURDY,
|
||||
JT_4_M_KARAMPUCCI,
|
||||
JT_4_M_CACTUSMAN1,
|
||||
JT_4_M_CACTUSMAN2,
|
||||
JT_4_M_CACTUSMAN3,
|
||||
JT_4_M_CACTUSLADY,
|
||||
JT_4_M_GAST,
|
||||
JT_4_M_CACTUSCHILD,
|
||||
JT_4_KING,
|
||||
JT_4_F_BOMI,
|
||||
JT_4_M_CACTUSCHIEF,
|
||||
JT_4_F_CACTUSCHILD2,
|
||||
JT_4_F_CACTUSLADY2,
|
||||
JT_4_F_CACTUSLADY3,
|
||||
JT_4_M_CACTUS,
|
||||
JT_4_M_COWRAIDERS1,
|
||||
JT_4_M_COWRAIDERS2,
|
||||
JT_4_M_COWRAIDERS3,
|
||||
JT_4_F_JP14THEVT,
|
||||
JT_4_M_POORSCHOLAR,
|
||||
JT_4_M_PEPPERROTI,
|
||||
JT_JP_NPC01,
|
||||
JT_4_PURPLE_WARP,
|
||||
JT_4_F_NARIN,
|
||||
JT_4_M_URGENT_MAN,
|
||||
JT_4_M_KEEN_SOLDIER,
|
||||
JT_4_F_SLOPPY_WOMAN,
|
||||
JT_4_F_DRKAFRA01,
|
||||
JT_4_M_DRZONDA01,
|
||||
JT_4_M_SWD_RENO,
|
||||
JT_4_M_KNG_RENO,
|
||||
JT_4_M_AC_RUMIN,
|
||||
JT_4_M_HIGH_WIZARD,
|
||||
JT_4_SYSTEM_BOX,
|
||||
JT_4_STEELBOX,
|
||||
JT_4_WOODBOX,
|
||||
JT_4_M_POPFESTA,
|
||||
JT_4_BONFIRE,
|
||||
JT_4_PCCOUNT,
|
||||
JT_4_LAVAGOLEM,
|
||||
|
||||
JT_JP_NPC02 = 10261,
|
||||
JT_JP_NPC03,
|
||||
JT_JP_NPC04,
|
||||
JT_JP_NPC05,
|
||||
JT_JP_NPC06,
|
||||
JT_JP_NPC07,
|
||||
JT_JP_NPC08,
|
||||
JT_JP_NPC09,
|
||||
JT_JP_NPC10,
|
||||
|
||||
JT_4_SCATLETON = 10271,
|
||||
JT_4_JP_AB_NPC_001,
|
||||
JT_4_JP_AB_NPC_002,
|
||||
JT_4_JP_AB_NPC_003,
|
||||
JT_4_JP_AB_NPC_004,
|
||||
JT_4_JP_AB_NPC_005,
|
||||
JT_4_JP_AB_NPC_006,
|
||||
JT_4_JP_AB_NPC_007,
|
||||
JT_4_JP_AB_NPC_008,
|
||||
JT_4_JJAK,
|
||||
NPC_RANGE3_END, // Official: JT_NEW_NPC_3RD_END=19999
|
||||
|
||||
// Unofficial
|
||||
JT_INVISIBLE = 32767,
|
||||
JT_FAKENPC = -1
|
||||
};
|
||||
|
||||
// Old NPC range
|
||||
#define MAX_NPC_CLASS 1000
|
||||
#define MAX_NPC_CLASS NPC_RANGE2_END
|
||||
// New NPC range
|
||||
#define MAX_NPC_CLASS2_START 10000
|
||||
#define MAX_NPC_CLASS2_END 10281
|
||||
#define MAX_NPC_CLASS2_START NPC_RANGE3_START
|
||||
#define MAX_NPC_CLASS2_END NPC_RANGE3_END
|
||||
|
||||
//Checks if a given id is a valid npc id. [Skotlex]
|
||||
//Since new npcs are added all the time, the max valid value is the one before the first mob (Scorpion = 1001)
|
||||
#define npcdb_checkid(id) ( ( (id) >= 46 && (id) <= 125) || (id) == HIDDEN_WARP_CLASS || ( (id) > 400 && (id) < MAX_NPC_CLASS ) || (id) == INVISIBLE_CLASS || ( id > MAX_NPC_CLASS2_START && id < MAX_NPC_CLASS2_END ) )
|
||||
#define npcdb_checkid(id) ( ( (id) > NPC_RANGE1_START && (id) < NPC_RANGE1_END ) || (id) == JT_HIDDEN_WARP_NPC || ( (id) > NPC_RANGE2_START && (id) < NPC_RANGE2_END ) || (id) == JT_INVISIBLE || ( id > NPC_RANGE3_START && id < NPC_RANGE3_END ) )
|
||||
|
||||
#ifdef PCRE_SUPPORT
|
||||
void npc_chat_finalize(struct npc_data* nd);
|
||||
|
@ -1521,7 +1521,7 @@ void pc_reg_received(struct map_session_data *sd)
|
||||
}
|
||||
|
||||
if( pc_isinvisible(sd) ) {
|
||||
sd->vd.class_ = INVISIBLE_CLASS;
|
||||
sd->vd.class_ = JT_INVISIBLE;
|
||||
clif_displaymessage( sd->fd, msg_txt( sd, 11 ) ); // Invisible: On
|
||||
// decrement the number of pvp players on the map
|
||||
map[sd->bl.m].users_pvp--;
|
||||
|
@ -14006,6 +14006,13 @@ BUILDIN_FUNC(misceffect)
|
||||
int type;
|
||||
|
||||
type=script_getnum(st,2);
|
||||
|
||||
if( type <= EF_NONE || type >= EF_MAX ){
|
||||
ShowError( "buildin_misceffect: unsupported effect id %d\n", type );
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
if(st->oid && st->oid != fake_nd->bl.id) {
|
||||
struct block_list *bl = map_id2bl(st->oid);
|
||||
if (bl)
|
||||
@ -14369,6 +14376,11 @@ BUILDIN_FUNC(specialeffect)
|
||||
if(bl==NULL)
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
|
||||
if( type <= EF_NONE || type >= EF_MAX ){
|
||||
ShowError( "buildin_specialeffect: unsupported effect id %d\n", type );
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
if( script_hasdata(st,4) )
|
||||
{
|
||||
TBL_NPC *nd = npc_name2id(script_getstr(st,4));
|
||||
@ -14396,6 +14408,11 @@ BUILDIN_FUNC(specialeffect2)
|
||||
int type = script_getnum(st,2);
|
||||
enum send_target target = script_hasdata(st,3) ? (send_target)script_getnum(st,3) : AREA;
|
||||
|
||||
if( type <= EF_NONE || type >= EF_MAX ){
|
||||
ShowError( "buildin_specialeffect2: unsupported effect id %d\n", type );
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
clif_specialeffect(&sd->bl, type, target);
|
||||
}
|
||||
return SCRIPT_CMD_SUCCESS;
|
||||
@ -14507,7 +14524,7 @@ int recovery_sub(struct map_session_data* sd, int revive)
|
||||
if(revive&(1|4) && pc_isdead(sd)) {
|
||||
status_revive(&sd->bl, 100, 100);
|
||||
clif_displaymessage(sd->fd,msg_txt(sd,16)); // You've been revived!
|
||||
clif_specialeffect(&sd->bl, 77, AREA);
|
||||
clif_specialeffect(&sd->bl, EF_RESURRECTION, AREA);
|
||||
} else if(revive&(1|2) && !pc_isdead(sd)) {
|
||||
status_percent_heal(&sd->bl, 100, 100);
|
||||
clif_displaymessage(sd->fd,msg_txt(sd,680)); // You have been recovered!
|
||||
@ -15238,7 +15255,7 @@ BUILDIN_FUNC(summon)
|
||||
delete_timer(md->deletetimer, mob_timer_delete);
|
||||
md->deletetimer = add_timer(tick+(timeout>0?timeout:60000),mob_timer_delete,md->bl.id,0);
|
||||
mob_spawn (md); //Now it is ready for spawning.
|
||||
clif_specialeffect(&md->bl,344,AREA);
|
||||
clif_specialeffect(&md->bl,EF_ENTRY2,AREA);
|
||||
sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000);
|
||||
}
|
||||
script_pushint(st, md->bl.id);
|
||||
@ -16410,7 +16427,7 @@ BUILDIN_FUNC(setnpcdisplay)
|
||||
{
|
||||
const char* name;
|
||||
const char* newname = NULL;
|
||||
int class_ = -1, size = -1;
|
||||
int class_ = JT_FAKENPC, size = -1;
|
||||
struct script_data* data;
|
||||
struct npc_data* nd;
|
||||
|
||||
@ -16450,7 +16467,7 @@ BUILDIN_FUNC(setnpcdisplay)
|
||||
else
|
||||
size = -1;
|
||||
|
||||
if( class_ != -1 && nd->class_ != class_ )
|
||||
if( class_ != JT_FAKENPC && nd->class_ != class_ )
|
||||
npc_setclass(nd, class_);
|
||||
else if( size != -1 )
|
||||
{ // Required to update the visual size
|
||||
@ -22571,6 +22588,11 @@ BUILDIN_FUNC(hateffect){
|
||||
effectID = script_getnum(st,2);
|
||||
enable = script_getnum(st,3) ? true : false;
|
||||
|
||||
if( effectID <= HAT_EF_MIN || effectID >= HAT_EF_MAX ){
|
||||
ShowError( "buildin_hateffect: unsupported hat effect id %d\n", effectID );
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
ARR_FIND( 0, sd->hatEffectCount, i, sd->hatEffectIDs[i] == effectID );
|
||||
|
||||
if( enable ){
|
||||
|
1159
src/map/script.h
1159
src/map/script.h
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -2713,7 +2713,7 @@ static int skill_magic_reflect(struct block_list* src, struct block_list* bl, in
|
||||
) {
|
||||
// Kaite only works against non-players if they are low-level.
|
||||
// Kyomu doesn't disable Kaite, but the "skill fail chance" part of Kyomu applies to it.
|
||||
clif_specialeffect(bl, 438, AREA);
|
||||
clif_specialeffect(bl, EF_ATTACKENERGY2, AREA);
|
||||
if( --sc->data[SC_KAITE]->val2 <= 0 )
|
||||
status_change_end(bl, SC_KAITE, INVALID_TIMER);
|
||||
return 2;
|
||||
@ -8602,7 +8602,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
}
|
||||
status_zap(src,0,skill_get_sp(skill_id,skill_lv)); // consume sp only if succeeded [Inkfish]
|
||||
card = skill_tarotcard(src, bl, skill_id, skill_lv, tick); // actual effect is executed here
|
||||
clif_specialeffect((card == 6) ? src : bl, 522 + card, AREA);
|
||||
clif_specialeffect((card == 6) ? src : bl, EF_TAROTCARD1 + card - 1, AREA);
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
|
||||
}
|
||||
break;
|
||||
@ -8631,7 +8631,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
||||
{ //Erase death count 1% of the casts
|
||||
dstsd->die_counter = 0;
|
||||
pc_setglobalreg(dstsd, add_str("PC_DIE_COUNTER"), 0);
|
||||
clif_specialeffect(bl, 0x152, AREA);
|
||||
clif_specialeffect(bl, EF_ANGEL2, AREA);
|
||||
//SC_SPIRIT invokes status_calc_pc for us.
|
||||
}
|
||||
clif_skill_nodamage(src,bl,skill_id,skill_lv,
|
||||
@ -19300,7 +19300,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
||||
break;
|
||||
default: //Those that don't require a skill?
|
||||
if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20) { //Cooking items.
|
||||
clif_specialeffect(&sd->bl, 608, AREA);
|
||||
clif_specialeffect(&sd->bl, EF_COOKING_OK, AREA);
|
||||
if (sd->cook_mastery < 1999)
|
||||
pc_setglobalreg(sd, add_str("COOK_MASTERY"), sd->cook_mastery + ( 1 << ( (skill_produce_db[idx].itemlv - 11) / 2 ) ) * 5);
|
||||
}
|
||||
@ -19412,7 +19412,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh
|
||||
break;
|
||||
default:
|
||||
if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20 ) { //Cooking items.
|
||||
clif_specialeffect(&sd->bl, 609, AREA);
|
||||
clif_specialeffect(&sd->bl, EF_COOKING_FAIL, AREA);
|
||||
if (sd->cook_mastery > 0)
|
||||
pc_setglobalreg(sd, add_str("COOK_MASTERY"), sd->cook_mastery - ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) - ( ( ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) >> 1 ) * 3 ));
|
||||
}
|
||||
|
@ -7610,7 +7610,7 @@ void status_set_viewdata(struct block_list *bl, int class_)
|
||||
nullpo_retv(bl);
|
||||
if (mobdb_checkid(class_) || mob_is_clone(class_))
|
||||
vd = mob_get_viewdata(class_);
|
||||
else if (npcdb_checkid(class_) || (bl->type == BL_NPC && class_ == WARP_CLASS))
|
||||
else if (npcdb_checkid(class_))
|
||||
vd = npc_get_viewdata(class_);
|
||||
else if (homdb_checkid(class_))
|
||||
vd = hom_get_viewdata(class_);
|
||||
|
@ -2759,31 +2759,6 @@ int unit_counttargeted(struct block_list* bl)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the size of a unit
|
||||
* @param bl: Object to change size [PC|MOB]
|
||||
* @param size: New size of bl
|
||||
* @return 0
|
||||
*/
|
||||
int unit_changeviewsize(struct block_list *bl,short size)
|
||||
{
|
||||
nullpo_ret(bl);
|
||||
|
||||
size = (size < 0) ? -1 : (size > 0) ? 1 : 0;
|
||||
|
||||
if(bl->type == BL_PC)
|
||||
((TBL_PC*)bl)->state.size = size;
|
||||
else if(bl->type == BL_MOB)
|
||||
((TBL_MOB*)bl)->special_state.size = size;
|
||||
else
|
||||
return 0;
|
||||
|
||||
if(size != 0)
|
||||
clif_specialeffect(bl,421+size, AREA);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes 'bl' that attacking 'src' switch to attack 'target'
|
||||
* @param bl
|
||||
|
Loading…
x
Reference in New Issue
Block a user