Updated new guild skills (60%)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@347 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
17ba37bf72
commit
b22314457f
@ -1,6 +1,7 @@
|
|||||||
Date Added
|
Date Added
|
||||||
11/24
|
11/24
|
||||||
* Fixed char-txt crashing when closing, Codemaster free()'s. [MC Cameri]
|
* Fixed char-txt crashing when closing, Codemaster free()'s. [MC Cameri]
|
||||||
|
* Skill Updates: - Updated guild skills (60%) [celest]
|
||||||
|
|
||||||
11/23
|
11/23
|
||||||
* Fixed script loading small/large monsters. [Valaris]
|
* Fixed script loading small/large monsters. [Valaris]
|
||||||
|
@ -865,8 +865,13 @@ int guild_notice_changed(int guild_id,const char *mes1,const char *mes2)
|
|||||||
int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
|
int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
|
||||||
{
|
{
|
||||||
nullpo_retr(0, sd);
|
nullpo_retr(0, sd);
|
||||||
|
struct guild *g = NULL;
|
||||||
|
|
||||||
return intif_guild_emblem(sd->status.guild_id,len,data);
|
if ((g = guild_search(sd->status.guild_id)) && guild_checkskill(g, GD_GLORYGUILD)>0)
|
||||||
|
return intif_guild_emblem(sd->status.guild_id,len,data);
|
||||||
|
|
||||||
|
clif_skill_fail(sd,GD_GLORYGUILD,0,0);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
// ギルドエンブレム変更通知
|
// ギルドエンブレム変更通知
|
||||||
int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
|
int guild_emblem_changed(int len,int guild_id,int emblem_id,const char *data)
|
||||||
|
@ -2106,12 +2106,6 @@ int pc_calcspeed (struct map_session_data *sd)
|
|||||||
|
|
||||||
b_speed = sd->speed;
|
b_speed = sd->speed;
|
||||||
sd->speed = DEFAULT_WALK_SPEED ;
|
sd->speed = DEFAULT_WALK_SPEED ;
|
||||||
sd->speed_rate = 100;
|
|
||||||
sd->speed_add_rate = 100;
|
|
||||||
if(sd->speed_add_rate != 100)
|
|
||||||
sd->speed_rate += sd->speed_add_rate - 100;
|
|
||||||
if(sd->aspd_add_rate != 100)
|
|
||||||
sd->aspd_rate += sd->aspd_add_rate - 100;
|
|
||||||
|
|
||||||
if(sd->sc_count){
|
if(sd->sc_count){
|
||||||
if(sd->sc_data[SC_INCREASEAGI].timer!=-1 && sd->sc_data[SC_QUAGMIRE].timer == -1 && sd->sc_data[SC_DONTFORGETME].timer == -1){ // ‘¬“x?‰Á
|
if(sd->sc_data[SC_INCREASEAGI].timer!=-1 && sd->sc_data[SC_QUAGMIRE].timer == -1 && sd->sc_data[SC_DONTFORGETME].timer == -1){ // ‘¬“x?‰Á
|
||||||
|
@ -4396,55 +4396,93 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int
|
|||||||
case GD_BATTLEORDER:
|
case GD_BATTLEORDER:
|
||||||
{
|
{
|
||||||
struct guild *g = NULL;
|
struct guild *g = NULL;
|
||||||
if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
// Only usable during WoE
|
||||||
strcmp(sd->status.name,g->master)==0) {
|
if (!agit_flag) {
|
||||||
for(i = 0; i < g->max_member; i++) {
|
clif_skill_fail(sd,skillid,0,0);
|
||||||
if ((dstsd = g->member[i].sd) != NULL && sd->bl.m == dstsd->bl.m) {
|
map_freeblock_unlock();
|
||||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
return 0;
|
||||||
skill_status_change_start(&dstsd->bl,SC_BATTLEORDERS,skilllv,0,0,0,0,0 );
|
}
|
||||||
}
|
if(flag&1) {
|
||||||
|
if (dstsd && dstsd->status.guild_id == sd->status.guild_id) {
|
||||||
|
skill_status_change_start(&dstsd->bl,SC_BATTLEORDERS,skilllv,0,0,0,0,0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
||||||
|
strcmp(sd->status.name,g->master)==0) {
|
||||||
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||||
|
map_foreachinarea(skill_area_sub,
|
||||||
|
src->m,src->x-15,src->y-15,src->x+15,src->y+15,0,
|
||||||
|
src,skillid,skilllv,tick, flag|BCT_ALL|1,
|
||||||
|
skill_castend_nodamage_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GD_REGENERATION:
|
case GD_REGENERATION:
|
||||||
{
|
{
|
||||||
struct guild *g = NULL;
|
struct guild *g = NULL;
|
||||||
if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
// Only usable during WoE
|
||||||
strcmp(sd->status.name,g->master)==0) {
|
if (!agit_flag) {
|
||||||
for(i = 0; i < g->max_member; i++) {
|
clif_skill_fail(sd,skillid,0,0);
|
||||||
if ((dstsd = g->member[i].sd) != NULL && sd->bl.m == dstsd->bl.m) {
|
map_freeblock_unlock();
|
||||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
return 0;
|
||||||
skill_status_change_start(&dstsd->bl,SC_REGENERATION,skilllv,0,0,0,0,0 );
|
}
|
||||||
}
|
if(flag&1) {
|
||||||
|
if (dstsd && dstsd->status.guild_id == sd->status.guild_id) {
|
||||||
|
skill_status_change_start(&dstsd->bl,SC_REGENERATION,skilllv,0,0,0,0,0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
||||||
|
strcmp(sd->status.name,g->master)==0) {
|
||||||
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||||
|
map_foreachinarea(skill_area_sub,
|
||||||
|
src->m,src->x-15,src->y-15,src->x+15,src->y+15,0,
|
||||||
|
src,skillid,skilllv,tick, flag|BCT_ALL|1,
|
||||||
|
skill_castend_nodamage_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GD_RESTORE:
|
case GD_RESTORE:
|
||||||
{
|
{
|
||||||
struct guild *g = NULL;
|
struct guild *g = NULL;
|
||||||
int hp, sp;
|
// Only usable during WoE
|
||||||
if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
if (!agit_flag) {
|
||||||
strcmp(sd->status.name,g->master)==0) {
|
clif_skill_fail(sd,skillid,0,0);
|
||||||
for(i = 0; i < g->max_member; i++) {
|
map_freeblock_unlock();
|
||||||
if ((dstsd = g->member[i].sd) != NULL && sd->bl.m == dstsd->bl.m) {
|
return 0;
|
||||||
hp = dstsd->status.max_hp*0.9;
|
}
|
||||||
sp = dstsd->status.sp + hp <= dstsd->status.max_sp ? hp : dstsd->status.max_sp - dstsd->status.sp;
|
if(flag&1) {
|
||||||
clif_skill_nodamage(src,bl,AL_HEAL,hp,1);
|
if (dstsd && dstsd->status.guild_id == sd->status.guild_id) {
|
||||||
battle_heal(NULL,bl,hp,sp,0);
|
int hp, sp;
|
||||||
}
|
hp = dstsd->status.max_hp*0.9;
|
||||||
|
sp = dstsd->status.max_sp*0.9;
|
||||||
|
sp = dstsd->status.sp + sp <= dstsd->status.max_sp ? sp : dstsd->status.max_sp - dstsd->status.sp;
|
||||||
|
clif_skill_nodamage(src,bl,AL_HEAL,hp,1);
|
||||||
|
battle_heal(NULL,bl,hp,sp,0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
||||||
|
strcmp(sd->status.name,g->master)==0) {
|
||||||
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||||
|
map_foreachinarea(skill_area_sub,
|
||||||
|
src->m,src->x-15,src->y-15,src->x+15,src->y+15,0,
|
||||||
|
src,skillid,skilllv,tick, flag|BCT_ALL|1,
|
||||||
|
skill_castend_nodamage_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GD_EMERGENCYCALL:
|
case GD_EMERGENCYCALL:
|
||||||
{
|
{
|
||||||
struct guild *g = NULL;
|
struct guild *g = NULL;
|
||||||
|
// Only usable during WoE
|
||||||
|
if (!agit_flag) {
|
||||||
|
clif_skill_fail(sd,skillid,0,0);
|
||||||
|
map_freeblock_unlock();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
// i don't know if it actually summons in a circle, but oh well. ;P
|
// i don't know if it actually summons in a circle, but oh well. ;P
|
||||||
int dx[9]={-2, 0, 2,-2, 0, 2,-2, 0, 2};
|
int dx[9]={-1, 1, 0, 0,-1, 1,-1, 1, 0};
|
||||||
int dy[9]={-2,-2,-2, 0, 0, 0, 2, 2, 2};
|
int dy[9]={ 0, 0, 1,-1, 1,-1,-1, 1, 0};
|
||||||
int j = 0;
|
int c, j = 0;
|
||||||
if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
if (sd && sd->status.guild_id > 0 && (g = guild_search(sd->status.guild_id)) &&
|
||||||
strcmp(sd->status.name,g->master)==0) {
|
strcmp(sd->status.name,g->master)==0) {
|
||||||
for(i = 0; i < g->max_member; i++, j++) {
|
for(i = 0; i < g->max_member; i++, j++) {
|
||||||
@ -4452,6 +4490,8 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int
|
|||||||
if ((dstsd = g->member[i].sd) != NULL && sd != dstsd &&
|
if ((dstsd = g->member[i].sd) != NULL && sd != dstsd &&
|
||||||
!map[sd->bl.m].flag.nowarpto && !map[dstsd->bl.m].flag.nowarp) {
|
!map[sd->bl.m].flag.nowarpto && !map[dstsd->bl.m].flag.nowarp) {
|
||||||
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
clif_skill_nodamage(src,bl,skillid,skilllv,1);
|
||||||
|
if ((c=read_gat(sd->bl.m,sd->bl.x+dx[j],sd->bl.y+dy[j]))==1 || c==5)
|
||||||
|
dx[j] = dy[j] = 0;
|
||||||
pc_setpos(dstsd, sd->mapname, sd->bl.x+dx[j], sd->bl.y+dy[j], 2);
|
pc_setpos(dstsd, sd->mapname, sd->bl.x+dx[j], sd->bl.y+dy[j], 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user