db/const.txt | 1 + src/map/battle.c | 5 +++++ src/map/map.c | 3 +++ src/map/map.h | 5 ++++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/db/const.txt b/db/const.txt index 778ed35..6417bae 100644 --- a/db/const.txt +++ b/db/const.txt @@ -391,6 +391,7 @@ cell_novending 6 cell_nochat 7 cell_maelstrom 8 cell_icewall 9 +cell_pk 10 //cell_gettype 0 cell_chkwall 1 diff --git a/src/map/battle.c b/src/map/battle.c index 76f7fc1..246d19c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -6818,6 +6818,11 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f if(s_guild && t_guild && (s_guild == t_guild || guild_isallied(s_guild, t_guild))) state |= BCT_GUILD; } + if ( s_bl->type == BL_PC && t_bl->type == BL_PC ) { + struct map_session_data *sd = BL_CAST( BL_PC, s_bl ), *tsd = BL_CAST( BL_PC, t_bl ); + if ( map_getcell( sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKPK ) && map_getcell( tsd->bl.m, tsd->bl.x, tsd->bl.y, CELL_CHKPK ) ) + state |= BCT_ENEMY; + } } //end non pvp/gvg chk rivality if( !state ) //If not an enemy, nor a guild, nor party, nor yourself, it's neutral. diff --git a/src/map/map.c b/src/map/map.c index 6bd8b2b..1586436 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2678,6 +2678,8 @@ int map_getcellp(struct map_data* m,int16 x,int16 y,cell_chk cellchk) return (cell.maelstrom); case CELL_CHKICEWALL: return (cell.icewall); + case CELL_CHKPK: + return (cell.pk); // special checks case CELL_CHKPASS: @@ -2732,6 +2734,7 @@ void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) case CELL_NOCHAT: map[m].cell[j].nochat = flag; break; case CELL_MAELSTROM: map[m].cell[j].maelstrom = flag; break; case CELL_ICEWALL: map[m].cell[j].icewall = flag; break; + case CELL_PK: map[m].cell[j].pk = flag; break; default: ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); break; diff --git a/src/map/map.h b/src/map/map.h index 3e44813..f084213 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -460,6 +460,7 @@ typedef enum { CELL_NOCHAT, CELL_MAELSTROM, CELL_ICEWALL, + CELL_PK, } cell_t; @@ -484,6 +485,7 @@ typedef enum { CELL_CHKNOCHAT, CELL_CHKMAELSTROM, CELL_CHKICEWALL, + CELL_CHKPK, } cell_chk; @@ -503,7 +505,8 @@ struct mapcell novending : 1, nochat : 1, maelstrom : 1, - icewall : 1; + icewall : 1, + pk : 1; #ifdef CELL_NOSTACK unsigned char cell_bl; //Holds amount of bls in this cell.