Block dynamic NPCs in instances (#7429)
Fixes #7420 Thanks to @attackjom
This commit is contained in:
parent
4cb1af31f8
commit
96efb0e426
@ -67,7 +67,7 @@ Body:
|
|||||||
- Id: 3
|
- Id: 3
|
||||||
Name: Orc's Memory
|
Name: Orc's Memory
|
||||||
Enter:
|
Enter:
|
||||||
Map: 1@orcs
|
Map: 1@orcs
|
||||||
X: 179
|
X: 179
|
||||||
Y: 15
|
Y: 15
|
||||||
AdditionalMaps:
|
AdditionalMaps:
|
||||||
|
@ -67,7 +67,7 @@ Body:
|
|||||||
- Id: 3
|
- Id: 3
|
||||||
Name: Orc's Memory
|
Name: Orc's Memory
|
||||||
Enter:
|
Enter:
|
||||||
Map: 1@orcs
|
Map: 1@orcs
|
||||||
X: 179
|
X: 179
|
||||||
Y: 15
|
Y: 15
|
||||||
AdditionalMaps:
|
AdditionalMaps:
|
||||||
|
27
npc/mapflag/nodynamicnpc.txt
Normal file
27
npc/mapflag/nodynamicnpc.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
//===== rAthena Script =======================================
|
||||||
|
//= Mapflag: No dynamic NPC map setting.
|
||||||
|
//===== Description: =========================================
|
||||||
|
//= Blocks the use of dynamic NPCs on a map.
|
||||||
|
//===== Additional Comments: =================================
|
||||||
|
//= 1.0 Initial script. [Lemongrass]
|
||||||
|
//============================================================
|
||||||
|
|
||||||
|
// Endless Tower
|
||||||
|
1@tower mapflag nodynamicnpc
|
||||||
|
2@tower mapflag nodynamicnpc
|
||||||
|
3@tower mapflag nodynamicnpc
|
||||||
|
4@tower mapflag nodynamicnpc
|
||||||
|
5@tower mapflag nodynamicnpc
|
||||||
|
6@tower mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Sealed Catacomb
|
||||||
|
1@cata mapflag nodynamicnpc
|
||||||
|
2@cata mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Orc's Memory
|
||||||
|
1@orcs mapflag nodynamicnpc
|
||||||
|
2@orcs mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Nidhoggur's Nest
|
||||||
|
1@nyd mapflag nodynamicnpc
|
||||||
|
2@nyd mapflag nodynamicnpc
|
140
npc/re/mapflag/nodynamicnpc.txt
Normal file
140
npc/re/mapflag/nodynamicnpc.txt
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
//===== rAthena Script =======================================
|
||||||
|
//= Mapflag: No dynamic NPC map setting.
|
||||||
|
//===== Description: =========================================
|
||||||
|
//= Blocks the use of dynamic NPCs on a map.
|
||||||
|
//===== Additional Comments: =================================
|
||||||
|
//= 1.0 Initial script. [Lemongrass]
|
||||||
|
//============================================================
|
||||||
|
|
||||||
|
// Mistwood Maze
|
||||||
|
1@mist mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Culvert
|
||||||
|
1@pump mapflag nodynamicnpc
|
||||||
|
2@pump mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Octopus Cave
|
||||||
|
1@cash mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Bangungot Hospital 2F
|
||||||
|
1@ma_h mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Buwaya Cave
|
||||||
|
1@ma_c mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Bakonawa Lake
|
||||||
|
1@ma_b mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Wolfchev's Laboratory
|
||||||
|
1@lhz mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Old Glast Heim
|
||||||
|
1@gl_k mapflag nodynamicnpc
|
||||||
|
2@gl_k mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Eclage Interior
|
||||||
|
1@ecl mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Sara's Memories
|
||||||
|
1@sara mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Geffen Magic Tournament
|
||||||
|
1@gef mapflag nodynamicnpc
|
||||||
|
1@gef_in mapflag nodynamicnpc
|
||||||
|
1@ge_st mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Horror Toy Factory
|
||||||
|
1@xm_d mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Faceworm's Nest
|
||||||
|
1@face mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Ghost Palace
|
||||||
|
1@spa mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Devil's Tower
|
||||||
|
1@tnm1 mapflag nodynamicnpc
|
||||||
|
1@tnm2 mapflag nodynamicnpc
|
||||||
|
1@tnm3 mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Assault on the Airship
|
||||||
|
1@air1 mapflag nodynamicnpc
|
||||||
|
1@air2 mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Fenrir and Sarah
|
||||||
|
1@glast mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Wave Mode - Forest
|
||||||
|
1@def01 mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Wave Mode - Sky
|
||||||
|
1@def02 mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Nightmarish Jitterbug
|
||||||
|
1@jtb mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Isle of Bios
|
||||||
|
1@dth1 mapflag nodynamicnpc
|
||||||
|
1@dth2 mapflag nodynamicnpc
|
||||||
|
1@dth3 mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Morse's Cave
|
||||||
|
1@rev mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Temple of the Demon God
|
||||||
|
1@eom mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Central Laboratory
|
||||||
|
1@lab mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Last room
|
||||||
|
1@uns mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Charleston in Distress
|
||||||
|
1@mcd mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Ritual of Blessing
|
||||||
|
2@mir mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Room of Consciousness
|
||||||
|
1@mir mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Sky Fortress Invasion
|
||||||
|
1@sthb mapflag nodynamicnpc
|
||||||
|
1@sthc mapflag nodynamicnpc
|
||||||
|
1@sthd mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Heart Hunter War Base 1 + 2
|
||||||
|
1@swat mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Werner Laboratory central room#1 + 2
|
||||||
|
1@slw mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Infinite Space
|
||||||
|
1@infi mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Regenschirm
|
||||||
|
1@rgsr mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Sealed OS
|
||||||
|
1@os_b mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// OS Occupation + 2nd OS Search
|
||||||
|
1@os_a mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Cor Memorial
|
||||||
|
1@cor mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Half Moon In The Daylight
|
||||||
|
1@pop1 mapflag nodynamicnpc
|
||||||
|
1@pop2 mapflag nodynamicnpc
|
||||||
|
1@pop3 mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Weekend Dungeon
|
||||||
|
1@md_pay mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Friday Dungeon
|
||||||
|
1@md_gef mapflag nodynamicnpc
|
||||||
|
|
||||||
|
// Poring Village
|
||||||
|
1@begi mapflag nodynamicnpc
|
@ -645,12 +645,13 @@ enum e_mapflag : int16 {
|
|||||||
MF_PRIVATEAIRSHIP_SOURCE,
|
MF_PRIVATEAIRSHIP_SOURCE,
|
||||||
MF_PRIVATEAIRSHIP_DESTINATION,
|
MF_PRIVATEAIRSHIP_DESTINATION,
|
||||||
MF_SKILL_DURATION,
|
MF_SKILL_DURATION,
|
||||||
MF_NOCASHSHOP,
|
MF_NOCASHSHOP, // 70
|
||||||
MF_NORODEX,
|
MF_NORODEX,
|
||||||
MF_NORENEWALEXPPENALTY,
|
MF_NORENEWALEXPPENALTY,
|
||||||
MF_NORENEWALDROPPENALTY,
|
MF_NORENEWALDROPPENALTY,
|
||||||
MF_NOPETCAPTURE,
|
MF_NOPETCAPTURE,
|
||||||
MF_NOBUYINGSTORE,
|
MF_NOBUYINGSTORE,
|
||||||
|
MF_NODYNAMICNPC,
|
||||||
MF_MAX
|
MF_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -5805,7 +5805,10 @@ struct npc_data* npc_duplicate_npc_for_player( struct npc_data& nd, struct map_s
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: check maps that might forbid usage? maybe create mapflag?
|
if( map_getmapflag( sd.bl.m, MF_NODYNAMICNPC ) ){
|
||||||
|
// It has been confirmed that there is no reply to the client
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
int16 new_x, new_y;
|
int16 new_x, new_y;
|
||||||
|
|
||||||
|
@ -536,6 +536,7 @@
|
|||||||
export_constant(MF_NORENEWALEXPPENALTY);
|
export_constant(MF_NORENEWALEXPPENALTY);
|
||||||
export_constant(MF_NOPETCAPTURE);
|
export_constant(MF_NOPETCAPTURE);
|
||||||
export_constant(MF_NOBUYINGSTORE);
|
export_constant(MF_NOBUYINGSTORE);
|
||||||
|
export_constant(MF_NODYNAMICNPC);
|
||||||
|
|
||||||
/* setcell types */
|
/* setcell types */
|
||||||
export_constant(CELL_WALKABLE);
|
export_constant(CELL_WALKABLE);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user