//------------------------------------------------------------------------
//緑文字の記述が追加する記述
//追加行については目安です
//TeraPadや秀丸などを用いて必ず全角スペース4つをtabに変換してください
//------------------------------------------------------------------------
○GvGSE用の処理を追加
src/lib/mmo.h ~67
#define MAX_GUILDALLIANCE 16
#define MAX_GUILDSKILL 15 //ギルドスキルの数
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
//#define MAX_GUILDCASTLE 20 //全砦数
#define MAX_GUILDCASTLE 30 //全砦数
//▲▲▲ここまで▲▲▲---------------------------------------------------
src/map/battle.c@battle_damage() ~145
if(target->type==BL_MOB){ // MOB
struct mob_data *md=(struct mob_data *)target;
if(md && md->ud.skilltimer!=-1 && md->ud.state.skillcastcancel) // 詠唱妨害
unit_skillcastcancel(target,0);
mob_damage(bl,md,damage,0);
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if(sd && md && md->bl.prev != NULL && !unit_isdead(&md->bl) && flag&(BF_WEAPON|BF_NORMAL) && status_get_class(target) != 1288)
if(sd && md && md->bl.prev != NULL && !unit_isdead(&md->bl) && flag&(BF_WEAPON|BF_NORMAL) && status_get_class(target) != 1288 &&
status_get_class(target) != 1905 && status_get_class(target) != 1907 && status_get_class(target) != 1908)
//▲▲▲ここまで▲▲▲---------------------------------------------------
{
int mode = status_get_mode(target);
~234
else if(target->type==BL_HOM){ // HOM
struct homun_data *hd=(struct homun_data *)target;
if(hd && hd->ud.skilltimer!=-1 && hd->ud.state.skillcastcancel) // 詠唱妨害
unit_skillcastcancel(target,0);
homun_damage(bl,hd,damage);
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if(sd && hd && hd->bl.prev != NULL && !unit_isdead(&hd->bl) && flag&(BF_WEAPON|BF_NORMAL) && status_get_class(target) != 1288)
if(sd && hd && hd->bl.prev != NULL && !unit_isdead(&hd->bl) && flag&(BF_WEAPON|BF_NORMAL) && status_get_class(target) != 1288 &&
status_get_class(target) != 1905 && status_get_class(target) != 1907 && status_get_class(target) != 1908)
//▲▲▲ここまで▲▲▲---------------------------------------------------
{
int mode = status_get_mode(target);
clif.c@clif_mob0078() ~1094
WBUFW(buf,13)=(unsigned short)md->estate;
WBUFW(buf,15)=mob_get_viewclass(md->class);
#if PACKETVER >= 20071106
WBUFW(buf,0)=0x0078;
WBUFB(buf,2)=0;
WBUFL(buf,3)=md->bl.id;
WBUFW(buf,7)=status_get_speed(&md->bl);
WBUFW(buf,9)=md->bstate;
WBUFW(buf,11)=md->hstate;
WBUFW(buf,13)=(unsigned short)md->estate;
WBUFW(buf,15)=mob_get_viewclass(md->class);
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if((md->class == 1285 || md->class == 1286 || md->class == 1287) && md->guild_id){
if(((md->class >= 1285 && md->class <= 1287) || md->class == 1899 || md->class == 1900) && md->guild_id){
//▲▲▲ここまで▲▲▲---------------------------------------------------
struct guild *g=guild_search(md->guild_id);
if(g)
WBUFL(buf,23)=g->emblem_id;
WBUFL(buf,27)=md->guild_id;
}
WBUFW(buf,43)=md->opt3;
WBUFPOS(buf,47,md->bl.x,md->bl.y);
WBUFB(buf,49)|=md->dir&0x0f;
WBUFB(buf,50)=5;
WBUFB(buf,51)=5;
WBUFW(buf,53)=((level = status_get_lv(&md->bl))>99)? 99:level;
#else
WBUFW(buf,0)=0x0078;
WBUFL(buf,2)=md->bl.id;
WBUFW(buf,6)=status_get_speed(&md->bl);
WBUFW(buf,8)=md->bstate;
WBUFW(buf,10)=md->hstate;
WBUFW(buf,12)=(unsigned short)md->estate;
WBUFW(buf,14)=mob_get_viewclass(md->class);
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if((md->class == 1285 || md->class == 1286 || md->class == 1287) && md->guild_id){
if(((md->class >= 1285 && md->class <= 1287) || md->class == 1899 || md->class == 1900) && md->guild_id){
//▲▲▲ここまで▲▲▲---------------------------------------------------
struct guild *g=guild_search(md->guild_id);
if(g)
WBUFL(buf,22)=g->emblem_id;
WBUFL(buf,26)=md->guild_id;
}
src/map/clif.c@clif_mob007b() ~1295
WBUFW(buf,12)=(unsigned short)md->estate;
WBUFW(buf,14)=mob_get_viewclass(md->class);
WBUFL(buf,22)=gettick();
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if((md->class == 1285 || md->class == 1286 || md->class == 1287) && md->guild_id){
if(((md->class >= 1285 && md->class <= 1287) || md->class == 1899 || md->class == 1900) && md->guild_id){
//▲▲▲ここまで▲▲▲---------------------------------------------------
struct guild *g=guild_search(md->guild_id);
if(g)
src/map/mob.c@mob_spawn() ~412
md->next_walktime = tick+atn_rand()%50+5000;
md->state.nodrop=0;
md->state.noexp=0;
md->state.nomvp=0;
// md->guild_id = 0;
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if(md->class == 1288 || md->class == 1287 || md->class == 1286 || md->class == 1285) {
if((md->class <= 1288 && md->class >= 1285) || md->class == 1905 || md->class == 1908 || md->class == 1907 || md->class == 1900 || md->class == 1899) {
//▲▲▲ここまで▲▲▲---------------------------------------------------
struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name);
if(gc)
md->guild_id = gc->guild_id;
}
@mob_can_reach() ~475
//=========== guildcastle guardian no search start===========
//when players are the guild castle member not attack them !
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if(md->class == 1285 || md->class == 1286 || md->class == 1287){
if((md->class >= 1285 && md->class <= 1287) || md->class == 1899 || md->class == 1900){
//▲▲▲ここまで▲▲▲---------------------------------------------------
struct map_session_data *sd;
struct guild *g;
struct guild_castle *gc=guild_mapname2gc(map[bl->m].name);
if(bl->type == BL_PC){
@mob_gvmobcheck() ~3428
nullpo_retr(0,sd);
nullpo_retr(0,bl);
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if(bl->type==BL_MOB && (md=(struct mob_data *)bl) &&
// (md->class == 1288 || md->class == 1287 || md->class == 1286 || md->class == 1285))
// {
if(bl->type==BL_MOB && (md=(struct mob_data *)bl) &&
((md->class <= 1288 && md->class >= 1285) || md->class == 1905 ||
md->class == 1908 || md->class == 1907 || md->class == 1900 || md->class == 1899))
{
//▲▲▲ここまで▲▲▲---------------------------------------------------
struct guild_castle *gc=guild_mapname2gc(map[sd->bl.m].name);
struct guild *g=guild_search(sd->status.guild_id);
src/map/script.c@buildin_maprespawnguildid_sub() ~7606
if(sd){
if(flag&1 && g_id && sd->status.guild_id == g_id)
pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,3,0);
else if(flag&2 && (!g_id || sd->status.guild_id != g_id))
pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,3,0);
}
if(flag&4 && md){
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if(md->class < 1285 || md->class > 1288)
// unit_remove_map(&md->bl,1,0);
if(!(md->class >= 1285 || md->class <= 1288) || !(md->class >= 1899 || md->class <= 1900) || !(md->class >= 1907 || md->class <= 1908))
unit_remove_map(&md->bl,1,0);
//▲▲▲ここまで▲▲▲---------------------------------------------------
}
return 0;
}
src/map/skill.c@skill_castend_nodamage_id() ~3604
case TK_HIGHJUMP://走り高跳び(ノピティギ)
{
int x,y,dir = status_get_dir(src);
x = src->x + dirx[dir]*skilllv*2;
y = src->y + diry[dir]*skilllv*2;
clif_skill_nodamage(src,bl,skillid,skilllv,1);
// 着地地点とその一歩先が移動可能セルでPC,MOB,NPCいずれも居ないなら
//▼▼▼ここから▼▼▼---------------------------------------------------
//GVGSE用の処理を追加
// if( !map[src->m].flag.pvp && (!map[src->m].flag.noteleport || map[src->m].flag.gvg) &&
// map_getcell(src->m,x,y,CELL_CHKPASS) && map_getcell(src->m,x+dirx[dir],y+diry[dir],CELL_CHKPASS) &&
// !map_count_oncell(src->m,x,y,BL_PC|BL_MOB|BL_NPC)
// ) {
if( !map[src->m].flag.pvp && (!map[src->m].flag.noteleport || (map[src->m].flag.gvg && !map[src->m].flag.noicewall)) &&
map_getcell(src->m,x,y,CELL_CHKPASS) && map_getcell(src->m,x+dirx[dir],y+diry[dir],CELL_CHKPASS) &&
!map_count_oncell(src->m,x,y,BL_PC|BL_MOB|BL_NPC)
) {
//▲▲▲ここまで▲▲▲---------------------------------------------------
unit_movepos(src,x,y,0x11);
}
}
break;
//(バランスブレイカーっぽいので消しました)守護石へのスキル使用を禁止する