* Updated Endure, Tiger Fist, Chain Crush, and Palm Push Strike
* Some rewrites on the passive guild skills effects git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1192 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
d393cebc23
commit
2468e69b8a
@ -1,5 +1,11 @@
|
||||
Date Added
|
||||
|
||||
02/28
|
||||
* Corrected Tiger Fist, Chain Crush, and Palm Push Strike damage, thanks to
|
||||
Eskadron [celest]
|
||||
* Updated Endure to be usable in GvG, but only gives the mdef bonus [celest]
|
||||
* Some rewrites on the passive guild skills effects [celest]
|
||||
|
||||
02/27
|
||||
* Fixed some bugs in Monk Job Quest. Now it's fully passable. [Lupus]
|
||||
02/26
|
||||
|
@ -7,7 +7,6 @@
|
||||
// 8 - Cannot be used when WoE is on
|
||||
// 16 - Cannot be used in PK Mode maps
|
||||
// Example: 8,6 = Endure cannot be used in PvP and GvG maps (2+4)
|
||||
8,4 //SM_ENDURE
|
||||
26,4 //AL_TELEPORT
|
||||
27,4 //AL_WARP
|
||||
87,4 //WZ_ICEWALL
|
||||
|
@ -72,7 +72,3 @@
|
||||
369,0xb3, , 3, 0, -1,all, 0x000,0 //PA_GOSPEL#ゴスペル
|
||||
404,0xb6, , -1, 0, -1,all, 0x000,0 //PF_FOGWALL#フォグウォール
|
||||
405,0xb7, , 0, 1,1000,enemy, 0x006,0 //PF_SPIDERWEB#スパイダーウェッブ
|
||||
10006,0xc1, , 0, 2, -1,all, 0x000,0 //GD_LEADERSHIP
|
||||
10007,0xc2, , 0, 2, -1,all, 0x000,0 //GD_GLORYWOUNDS
|
||||
10008,0xc3, , 0, 2, -1,all, 0x000,0 //GD_SOULCOLD
|
||||
10009,0xc4, , 0, 2, -1,all, 0x000,0 //GD_HAWKEYES
|
||||
|
@ -2235,16 +2235,16 @@ static struct Damage battle_calc_pc_weapon_attack(
|
||||
sd->state.arrow_atk = 1;
|
||||
break;
|
||||
case CH_TIGERFIST: // 伏虎拳
|
||||
damage = damage*(100+ 20*skill_lv)/100;
|
||||
damage2 = damage2*(100+ 20*skill_lv)/100;
|
||||
damage = damage*(40+ 100*skill_lv)/100;
|
||||
damage2 = damage*(40+ 100*skill_lv)/100;
|
||||
break;
|
||||
case CH_CHAINCRUSH: // 連柱崩撃
|
||||
damage = damage*(100+ 60*skill_lv)/100;
|
||||
damage2 = damage2*(100+ 60*skill_lv)/100;
|
||||
damage = damage*(400+ 100*skill_lv)/100;
|
||||
damage2 = damage*(400+ 100*skill_lv)/100;
|
||||
break;
|
||||
case CH_PALMSTRIKE: // 猛虎硬派山
|
||||
damage = damage*(50+ 100*skill_lv)/100;
|
||||
damage2 = damage2*(50+ 100*skill_lv)/100;
|
||||
damage = damage*(200+ 100*skill_lv)/100;
|
||||
damage2 = damage*(200+ 100*skill_lv)/100;
|
||||
break;
|
||||
case LK_SPIRALPIERCE: /* スパイラルピアース */
|
||||
damage = damage*(100+ 50*skill_lv)/100; //増加量が分からないので適当に
|
||||
|
@ -139,10 +139,7 @@ struct map_session_data {
|
||||
unsigned potionpitcher_flag : 1;
|
||||
unsigned storage_flag : 1;
|
||||
unsigned snovice_flag : 4;
|
||||
int leadership_flag;
|
||||
int glorywounds_flag;
|
||||
int soulcold_flag;
|
||||
int hawkeyes_flag;
|
||||
int gmaster_flag;
|
||||
// originally by Qamera, adapted by celest
|
||||
unsigned event_death : 1;
|
||||
unsigned event_kill : 1;
|
||||
@ -653,6 +650,8 @@ enum {
|
||||
#define CELL_MASK 0x0f
|
||||
#define CELL_NPC 0x80 // NPCセル
|
||||
#define CELL_BASILICA 0x40 // BASILICAセル
|
||||
#define CELL_MOONLIT 0x100
|
||||
#define CELL_REGEN 0x200
|
||||
/*
|
||||
* map_getcell()で使用されるフラグ
|
||||
*/
|
||||
|
79
src/map/pc.c
79
src/map/pc.c
@ -3227,24 +3227,6 @@ static int pc_walk(int tid,unsigned int tick,int id,int data)
|
||||
if(moveblock) map_addblock(&sd->bl);
|
||||
skill_unit_move(&sd->bl,tick,1);
|
||||
|
||||
#if 0
|
||||
if (sd->status.guild_id > 0) {
|
||||
struct skill_unit *su;
|
||||
if (sd->sc_data[SC_LEADERSHIP].val4 && (su=(struct skill_unit *)sd->sc_data[SC_LEADERSHIP].val4)) {
|
||||
skill_unit_move_unit_group(su->group,sd->bl.m,dx,dy);
|
||||
}
|
||||
if (sd->sc_data[SC_GLORYWOUNDS].val4 && (su=(struct skill_unit *)sd->sc_data[SC_GLORYWOUNDS].val4)) {
|
||||
skill_unit_move_unit_group(su->group,sd->bl.m,dx,dy);
|
||||
}
|
||||
if (sd->sc_data[SC_SOULCOLD].val4 && (su=(struct skill_unit *)sd->sc_data[SC_SOULCOLD].val4)) {
|
||||
skill_unit_move_unit_group(su->group,sd->bl.m,dx,dy);
|
||||
}
|
||||
if (sd->sc_data[SC_HAWKEYES].val4 && (su=(struct skill_unit *)sd->sc_data[SC_HAWKEYES].val4)) {
|
||||
skill_unit_move_unit_group(su->group,sd->bl.m,dx,dy);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
map_foreachinmovearea(clif_pcinsight,sd->bl.m,x-AREA_SIZE,y-AREA_SIZE,x+AREA_SIZE,y+AREA_SIZE,-dx,-dy,0,sd);
|
||||
sd->walktimer = -1;
|
||||
|
||||
@ -3349,25 +3331,12 @@ int pc_walktoxy(struct map_session_data *sd,int x,int y)
|
||||
pc_walktoxy_sub(sd);
|
||||
}
|
||||
|
||||
if (sd->sc_data && sd->status.guild_id > 0) {
|
||||
struct skill_unit *su;
|
||||
struct skill_unit_group *sg;
|
||||
if (sd->state.leadership_flag && (su=(struct skill_unit *)sd->state.leadership_flag) &&
|
||||
(sg=su->group) && sg->src_id == sd->bl.id) {
|
||||
skill_unit_move_unit_group(sg,sd->bl.m,(x - sd->bl.x),(y - sd->bl.y));
|
||||
}
|
||||
if (sd->state.glorywounds_flag && (su=(struct skill_unit *)sd->state.glorywounds_flag) &&
|
||||
(sg=su->group) && sg->src_id == sd->bl.id) {
|
||||
skill_unit_move_unit_group(sg,sd->bl.m,(x - sd->bl.x),(y - sd->bl.y));
|
||||
}
|
||||
if (sd->state.soulcold_flag && (su=(struct skill_unit *)sd->state.soulcold_flag) &&
|
||||
(sg=su->group) && sg->src_id == sd->bl.id) {
|
||||
skill_unit_move_unit_group(sg,sd->bl.m,(x - sd->bl.x),(y - sd->bl.y));
|
||||
}
|
||||
if (sd->state.hawkeyes_flag && (su=(struct skill_unit *)sd->state.hawkeyes_flag) &&
|
||||
(sg=su->group) && sg->src_id == sd->bl.id) {
|
||||
skill_unit_move_unit_group(sg,sd->bl.m,(x - sd->bl.x),(y - sd->bl.y));
|
||||
}
|
||||
if (sd->state.gmaster_flag > 0) {
|
||||
struct guild *g = (struct guild *)sd->state.gmaster_flag;
|
||||
if (g)
|
||||
map_foreachinarea (skill_guildaura_sub, sd->bl.m,
|
||||
sd->bl.x-2, sd->bl.y-2, sd->bl.x+2, sd->bl.y+2, BL_PC,
|
||||
sd->bl.id, sd->status.guild_id, g);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -4573,12 +4542,14 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage)
|
||||
|
||||
// ? いていたら足を止める
|
||||
if (sd->sc_data) {
|
||||
if (sd->sc_data[SC_ENDURE].timer == -1 && sd->sc_data[SC_BERSERK].timer == -1 && !sd->special_state.infinite_endure)
|
||||
pc_stop_walking(sd,3);
|
||||
else if(sd->sc_data[SC_ENDURE].timer != -1 && (src != NULL && src->type==BL_MOB) && (--sd->sc_data[SC_ENDURE].val2) <= 0)
|
||||
status_change_end(&sd->bl, SC_ENDURE, -1);
|
||||
} else
|
||||
pc_stop_walking(sd,3);
|
||||
if (sd->sc_data[SC_BERSERK].timer != -1 ||
|
||||
sd->special_state.infinite_endure)
|
||||
; // do nothing
|
||||
else if (sd->sc_data[SC_ENDURE].timer != -1 && (src != NULL && src->type == BL_MOB) && !map[sd->bl.m].flag.gvg) {
|
||||
if ((--sd->sc_data[SC_ENDURE].val2) < 0)
|
||||
status_change_end(&sd->bl, SC_ENDURE, -1);
|
||||
} else pc_stop_walking(sd,3);
|
||||
}
|
||||
|
||||
// 演奏/ダンスの中?
|
||||
if(damage > sd->status.max_hp>>2)
|
||||
@ -4643,17 +4614,19 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage)
|
||||
status_calc_pc(sd,0);
|
||||
|
||||
if (src && src->type == BL_PC) {
|
||||
if (sd->state.event_death)
|
||||
pc_setglobalreg(sd,"killerrid",((struct map_session_data *)src)->status.account_id);
|
||||
|
||||
if (((struct map_session_data *)src)->state.event_kill) {
|
||||
struct npc_data *npc;
|
||||
if ((npc = npc_name2id(script_config.kill_event_name))) {
|
||||
run_script(npc->u.scr.script,0,sd->bl.id,npc->bl.id); // PCKillNPC
|
||||
sprintf (tmp_output, "Event '"CL_WHITE"%s"CL_RESET"' executed.\n", script_config.kill_event_name);
|
||||
ShowStatus(tmp_output);
|
||||
struct map_session_data *ssd = (struct map_session_data *)src;
|
||||
if (ssd) {
|
||||
if (sd->state.event_death)
|
||||
pc_setglobalreg(sd,"killerrid",(ssd->status.account_id));
|
||||
if (ssd->state.event_kill) {
|
||||
struct npc_data *npc;
|
||||
if ((npc = npc_name2id(script_config.kill_event_name))) {
|
||||
run_script(npc->u.scr.script,0,sd->bl.id,npc->bl.id); // PCKillNPC
|
||||
sprintf (tmp_output, "Event '"CL_WHITE"%s"CL_RESET"' executed.\n", script_config.kill_event_name);
|
||||
ShowStatus(tmp_output);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sd->state.event_death) {
|
||||
|
185
src/map/skill.c
185
src/map/skill.c
@ -1,4 +1,4 @@
|
||||
// $Id: skill.c,v 1.8 2004/02/24 10:28:24 PM Celestia $
|
||||
// $Id: skill.c,v 1.8 2004/02/27 5:34:51 PM Celestia $
|
||||
/* スキル?係 */
|
||||
|
||||
#include <stdio.h>
|
||||
@ -672,10 +672,6 @@ struct skill_unit_layout *skill_get_unit_layout(int skillid,int skilllv,struct b
|
||||
return &skill_unit_layout[0];
|
||||
}
|
||||
|
||||
// case GD_LEADERSHIP: return 0xc1;
|
||||
// case GD_GLORYWOUNDS: return 0xc2;
|
||||
// case GD_SOULCOLD: return 0xc3;
|
||||
// case GD_HAWKEYES: return 0xc4;
|
||||
// 0x89,0x8a,0x8b 表示無し
|
||||
// 0x9a 炎?性の詠唱みたいなエフェクト
|
||||
// 0x9b 水?性の詠唱みたいなエフェクト
|
||||
@ -1713,6 +1709,42 @@ int skill_check_unit_range2(int m,int x,int y,int skillid, int skilllv)
|
||||
return c;
|
||||
}
|
||||
|
||||
int skill_guildaura_sub (struct block_list *bl,va_list ap)
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
struct guild *g;
|
||||
int gid, id;
|
||||
int flag = 0;
|
||||
|
||||
nullpo_retr(0, sd=(struct map_session_data *)bl);
|
||||
|
||||
nullpo_retr(0, ap);
|
||||
id = va_arg(ap,int);
|
||||
gid = va_arg(ap,int);
|
||||
if (sd->status.guild_id != gid)
|
||||
return 0;
|
||||
|
||||
g = va_arg(ap,struct guild *);
|
||||
if (guild_checkskill(g, GD_LEADERSHIP)>0) flag |= 1<<0;
|
||||
if (guild_checkskill(g, GD_GLORYWOUNDS)>0) flag |= 1<<1;
|
||||
if (guild_checkskill(g, GD_SOULCOLD)>0) flag |= 1<<2;
|
||||
if (guild_checkskill(g, GD_HAWKEYES)>0) flag |= 1<<3;
|
||||
if (guild_checkskill(g, GD_CHARISMA)>0) flag |= 1<<4;
|
||||
|
||||
if (flag > 0) {
|
||||
if (sd->sc_count && sd->sc_data[SC_GUILDAURA].timer != -1) {
|
||||
if (sd->sc_data[SC_GUILDAURA].val4 != flag) {
|
||||
sd->sc_data[SC_GUILDAURA].val4 = flag;
|
||||
status_calc_pc (sd, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
status_change_start(&sd->bl, SC_GUILDAURA,1,id,0,flag,0,0 );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*=========================================================================
|
||||
* 範?スキル使用?理小分けここから
|
||||
*/
|
||||
@ -5142,15 +5174,6 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
||||
case RG_GRAFFITI: /* Graffiti */
|
||||
count=1; // Leave this at 1 [Valaris]
|
||||
break;
|
||||
|
||||
case GD_LEADERSHIP:
|
||||
case GD_GLORYWOUNDS:
|
||||
case GD_SOULCOLD:
|
||||
case GD_HAWKEYES:
|
||||
range=2;
|
||||
target=BCT_ALL;
|
||||
limit=300000;
|
||||
break;
|
||||
}
|
||||
|
||||
nullpo_retr(NULL, group=skill_initunitgroup(src,(count > 0 ? count : layout->count),
|
||||
@ -5211,28 +5234,6 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
||||
unit->limit=limit;
|
||||
unit->range=range;
|
||||
|
||||
// [celest]
|
||||
if (sc_data && src->type == BL_PC) {
|
||||
struct map_session_data *sd = (struct map_session_data *)src;
|
||||
if (sd) {
|
||||
// attach the unit's id to the caster
|
||||
switch (skillid) {
|
||||
case GD_LEADERSHIP:
|
||||
sd->state.leadership_flag = (int)group;
|
||||
break;
|
||||
case GD_GLORYWOUNDS:
|
||||
sd->state.glorywounds_flag = (int)group;
|
||||
break;
|
||||
case GD_SOULCOLD:
|
||||
sd->state.soulcold_flag = (int)unit;
|
||||
break;
|
||||
case GD_HAWKEYES:
|
||||
sd->state.hawkeyes_flag = (int)unit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (range==0 && active_flag)
|
||||
map_foreachinarea(skill_unit_effect,unit->bl.m
|
||||
,unit->bl.x,unit->bl.y,unit->bl.x,unit->bl.y
|
||||
@ -5378,56 +5379,6 @@ int skill_unit_onplace(struct skill_unit *src,struct block_list *bl,unsigned int
|
||||
skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MISC,tick);
|
||||
break;
|
||||
|
||||
// New guild skills [Celest]
|
||||
case 0xc1: // GD_LEADERSHIP
|
||||
{
|
||||
struct map_session_data *sd, *tsd;
|
||||
tsd=(struct map_session_data *)ss;
|
||||
if (tsd && (sd=(struct map_session_data *)bl) &&
|
||||
sd->status.guild_id == tsd->status.guild_id &&
|
||||
sd != tsd) {
|
||||
sd->state.leadership_flag = (int)src;
|
||||
status_calc_pc (sd, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xc2: // GD_GLORYWOUNDS
|
||||
{
|
||||
struct map_session_data *sd, *tsd;
|
||||
tsd=(struct map_session_data *)ss;
|
||||
if (tsd && (sd=(struct map_session_data *)bl) &&
|
||||
sd->status.guild_id == tsd->status.guild_id &&
|
||||
sd != tsd) {
|
||||
sd->state.glorywounds_flag = (int)src;
|
||||
status_calc_pc (sd, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xc3: // GD_SOULCOLD
|
||||
{
|
||||
struct map_session_data *sd, *tsd;
|
||||
tsd=(struct map_session_data *)ss;
|
||||
if (tsd && (sd=(struct map_session_data *)bl) &&
|
||||
sd->status.guild_id == tsd->status.guild_id &&
|
||||
sd != tsd) {
|
||||
sd->state.soulcold_flag = (int)src;
|
||||
status_calc_pc (sd, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xc4: // GD_HAWKEYES
|
||||
{
|
||||
struct map_session_data *sd, *tsd;
|
||||
tsd=(struct map_session_data *)ss;
|
||||
if (tsd && (sd=(struct map_session_data *)bl) &&
|
||||
sd->status.guild_id == tsd->status.guild_id &&
|
||||
sd != tsd) {
|
||||
sd->state.hawkeyes_flag = (int)src;
|
||||
status_calc_pc (sd, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 0xb2: /* あなたを_?いたいです */
|
||||
case 0xb3: /* ゴスペル */
|
||||
//case 0xb6: /* フォグウォ?ル */ - moved [celest]
|
||||
@ -5783,35 +5734,7 @@ int skill_unit_onout(struct skill_unit *src,struct block_list *bl,unsigned int t
|
||||
sg->limit = DIFF_TICK(tick,sg->tick)+1000;
|
||||
break;
|
||||
}
|
||||
// New guild skills [Celest]
|
||||
case 0xc1: // GD_LEADERSHIP
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if (bl->type == BL_PC && (sd=(struct map_session_data *)bl) && sd->state.leadership_flag > 0)
|
||||
sd->state.leadership_flag = 0;
|
||||
}
|
||||
break;
|
||||
case 0xc2: // GD_GLORYWOUNDS
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if (bl->type == BL_PC && (sd=(struct map_session_data *)bl) && sd->state.glorywounds_flag > 0)
|
||||
sd->state.glorywounds_flag = 0;
|
||||
}
|
||||
break;
|
||||
case 0xc3: // GD_SOULCOLD
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if (bl->type == BL_PC && (sd=(struct map_session_data *)bl) && sd->state.soulcold_flag > 0)
|
||||
sd->state.soulcold_flag = 0;
|
||||
}
|
||||
break;
|
||||
case 0xc4: // GD_HAWKEYES
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if (bl->type == BL_PC && (sd=(struct map_session_data *)bl) && sd->state.hawkeyes_flag > 0)
|
||||
sd->state.hawkeyes_flag = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
/* default:
|
||||
if(battle_config.error_log)
|
||||
printf("skill_unit_onout: Unknown skill unit id=%d block=%d\n",sg->unit_id,bl->id);
|
||||
@ -5904,38 +5827,6 @@ int skill_unit_onlimit(struct skill_unit *src,unsigned int tick)
|
||||
pc_setpos(p_sd,map[src->bl.m].name,src->bl.x,src->bl.y,3);
|
||||
}
|
||||
break;
|
||||
case 0xc1: // GD_LEADERSHIP
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if ((sd = (struct map_session_data *)(map_id2bl(sg->src_id)))!= NULL) {
|
||||
sd->state.leadership_flag = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xc2: // GD_GLORYWOUNDS
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if ((sd = (struct map_session_data *)(map_id2bl(sg->src_id)))!= NULL) {
|
||||
sd->state.glorywounds_flag = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xc3: // GD_SOULCOLD
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if ((sd = (struct map_session_data *)(map_id2bl(sg->src_id)))!= NULL) {
|
||||
sd->state.soulcold_flag = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0xc4: // GD_HAWKEYES
|
||||
{
|
||||
struct map_session_data *sd;
|
||||
if ((sd = (struct map_session_data *)(map_id2bl(sg->src_id)))!= NULL) {
|
||||
sd->state.hawkeyes_flag = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -153,6 +153,9 @@ int skill_unit_move_unit_group( struct skill_unit_group *group, int m,int dx,int
|
||||
struct skill_unit_group *skill_check_dancing( struct block_list *src );
|
||||
void skill_stop_dancing(struct block_list *src, int flag);
|
||||
|
||||
// Guild skills [celest]
|
||||
int skill_guildaura_sub (struct block_list *bl,va_list ap);
|
||||
|
||||
// 詠唱キャンセル
|
||||
int skill_castcancel(struct block_list *bl,int type);
|
||||
|
||||
|
@ -530,6 +530,12 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
pc_setpos(sd, sd->mapname, sd->bl.x, sd->bl.y, 3);
|
||||
}
|
||||
|
||||
if (sd->status.guild_id > 0) {
|
||||
struct guild *g = guild_search(sd->status.guild_id);
|
||||
if (g && strcmp(sd->status.name,g->master)==0)
|
||||
sd->state.gmaster_flag = (int)g;
|
||||
}
|
||||
|
||||
for(i=0;i<10;i++) {
|
||||
index = sd->equip_index[i];
|
||||
if(index < 0)
|
||||
@ -708,40 +714,6 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
sd->paramb[3] += (skill+1)*0.5;
|
||||
}
|
||||
|
||||
// New guild skills - Celest
|
||||
if (sd->status.guild_id > 0 && !(first&4)) {
|
||||
struct guild *g;
|
||||
if ((g = guild_search(sd->status.guild_id)) && strcmp(sd->status.name,g->master)==0) {
|
||||
if (!sd->state.leadership_flag && guild_checkskill(g, GD_LEADERSHIP)>0) {
|
||||
skill_unitsetting(&sd->bl,GD_LEADERSHIP,1,sd->bl.x,sd->bl.y,0);
|
||||
}
|
||||
if (!sd->state.glorywounds_flag && guild_checkskill(g, GD_GLORYWOUNDS)>0) {
|
||||
skill_unitsetting(&sd->bl,GD_GLORYWOUNDS,1,sd->bl.x,sd->bl.y,0);
|
||||
}
|
||||
if (!sd->state.soulcold_flag && guild_checkskill(g, GD_SOULCOLD)>0) {
|
||||
skill_unitsetting(&sd->bl,GD_SOULCOLD,1,sd->bl.x,sd->bl.y,0);
|
||||
}
|
||||
if (!sd->state.hawkeyes_flag && guild_checkskill(g, GD_HAWKEYES)>0) {
|
||||
skill_unitsetting(&sd->bl,GD_HAWKEYES,1,sd->bl.x,sd->bl.y,0);
|
||||
}
|
||||
}
|
||||
else if (g) {
|
||||
if (sd->sc_count && sd->sc_data[SC_BATTLEORDERS].timer != -1) {
|
||||
sd->paramb[0]+= 5;
|
||||
sd->paramb[3]+= 5;
|
||||
sd->paramb[4]+= 5;
|
||||
}
|
||||
if (sd->state.leadership_flag)
|
||||
sd->paramb[0] += 2;
|
||||
if (sd->state.glorywounds_flag)
|
||||
sd->paramb[2] += 2;
|
||||
if (sd->state.soulcold_flag)
|
||||
sd->paramb[1] += 2;
|
||||
if (sd->state.hawkeyes_flag)
|
||||
sd->paramb[4] += 2;
|
||||
}
|
||||
}
|
||||
|
||||
// ステ?タス?化による基本パラメ?タ補正
|
||||
if(sd->sc_count){
|
||||
if(sd->sc_data[SC_CONCENTRATE].timer!=-1 && sd->sc_data[SC_QUAGMIRE].timer == -1){ // 集中力向上
|
||||
@ -827,6 +799,22 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
sd->paramb[5]+= 2;
|
||||
}
|
||||
}
|
||||
// New guild skills - Celest
|
||||
if (sd->sc_data[SC_BATTLEORDERS].timer != -1) {
|
||||
sd->paramb[0]+= 5;
|
||||
sd->paramb[3]+= 5;
|
||||
sd->paramb[4]+= 5;
|
||||
}
|
||||
if (sd->sc_data[SC_GUILDAURA].timer != -1) {
|
||||
if (sd->sc_data[SC_GUILDAURA].val4 & 1<<0)
|
||||
sd->paramb[0] += 2;
|
||||
if (sd->sc_data[SC_GUILDAURA].val4 & 1<<1)
|
||||
sd->paramb[2] += 2;
|
||||
if (sd->sc_data[SC_GUILDAURA].val4 & 1<<2)
|
||||
sd->paramb[1] += 2;
|
||||
if (sd->sc_data[SC_GUILDAURA].val4 & 1<<3)
|
||||
sd->paramb[4] += 2;
|
||||
}
|
||||
}
|
||||
|
||||
//1度も死んでないJob70スパノビに+10
|
||||
@ -1355,6 +1343,13 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
||||
}
|
||||
}
|
||||
}
|
||||
// custom stats, since there's no info on how much it actually gives ^^; [Celest]
|
||||
if (sd->sc_data[SC_GUILDAURA].timer != -1) {
|
||||
if (sd->sc_data[SC_GUILDAURA].val4 & 1<<4) {
|
||||
sd->hit += 10;
|
||||
sd->flee += 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sd->speed_rate <= 0)
|
||||
@ -3789,6 +3784,11 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val
|
||||
calc_flag = 1;
|
||||
break;
|
||||
|
||||
case SC_GUILDAURA:
|
||||
calc_flag = 1;
|
||||
tick = 1000;
|
||||
break;
|
||||
|
||||
default:
|
||||
if(battle_config.error_log)
|
||||
printf("UnknownStatusChange [%d]\n", type);
|
||||
@ -4019,12 +4019,9 @@ int status_change_end( struct block_list* bl , int type,int tid )
|
||||
case SC_EDP:
|
||||
case SC_SLOWDOWN:
|
||||
case SC_SPEEDUP0:
|
||||
/* case SC_LEADERSHIP:
|
||||
case SC_GLORYWOUNDS:
|
||||
case SC_SOULCOLD:
|
||||
case SC_HAWKEYES:*/
|
||||
case SC_BATTLEORDERS:
|
||||
case SC_REGENERATION:
|
||||
case SC_GUILDAURA:
|
||||
calc_flag = 1;
|
||||
break;
|
||||
case SC_AUTOBERSERK:
|
||||
@ -4666,17 +4663,6 @@ int status_change_timer(int tid, unsigned int tick, int id, int data)
|
||||
}
|
||||
break;
|
||||
|
||||
/* case SC_LEADERSHIP:
|
||||
case SC_GLORYWOUNDS:
|
||||
case SC_SOULCOLD:
|
||||
case SC_HAWKEYES:
|
||||
if (sd) {
|
||||
sc_data[type].timer = add_timer(
|
||||
1000+tick, status_change_timer,
|
||||
bl->id, data);
|
||||
}
|
||||
break;*/
|
||||
|
||||
// Celest
|
||||
case SC_CONFUSION:
|
||||
{
|
||||
@ -4852,6 +4838,17 @@ int status_change_timer(int tid, unsigned int tick, int id, int data)
|
||||
status_calc_pc (sd, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
case SC_GUILDAURA:
|
||||
{
|
||||
struct block_list *tbl = map_id2bl(sc_data[type].val2);
|
||||
if (tbl && battle_check_range(bl, tbl, 2))
|
||||
sc_data[type].timer = add_timer(
|
||||
1000 + tick, status_change_timer,
|
||||
bl->id, data);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return status_change_end( bl,type,tid );
|
||||
|
@ -174,7 +174,8 @@ enum { // struct map_session_data
|
||||
SC_LANDPROTECTOR =193,
|
||||
SC_ADAPTATION =194,
|
||||
SC_CHASEWALK =195,
|
||||
SC_REGENERATION =196,
|
||||
SC_REGENERATION =196,
|
||||
SC_GUILDAURA =199
|
||||
};
|
||||
extern int SkillStatusChangeTable[];
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user