- Added GD_ITEMEMERGENCYCALL skill for Emergencycall Scroll items (12968, 12969, 12970).

- Change hardcoded delay time 'guild_skill_relog_delay' for guild skill (conf/battle/guild.conf).
This commit is contained in:
Cahyadi Ramadhan Togihon 2013-08-21 16:47:39 +07:00
parent 5f123519f6
commit 1cf5283dcf
16 changed files with 70 additions and 40 deletions

View File

@ -16,9 +16,9 @@ guild_exp_limit: 50
// Maximum castles one guild can own (0 = unlimited)
guild_max_castles: 0
// Activate guild skills delay by relog? (Note 1)
// Official setting is "yes", otherwise allow guild leaders to relog to cancel the 5 minute delay.
guild_skill_relog_delay: yes
// Activate guild skills delay by relog?
// Official setting is 5 minutes (300000 ms), otherwise allow guild leaders to relog to cancel the 5 minute delay.
guild_skill_relog_delay: 300000
// Damage adjustments for WOE battles against defending Guild monsters (Note 2)
castle_defense_rate: 100

View File

@ -21,4 +21,9 @@
11522,1000 // Red_Raffle_Sap
11523,2000 // Yellow_Raffle_Sap
11524,3000 // White_Raffle_Sap
11525,5000 // Mora_Hip_Tea
11525,5000 // Mora_Hip_Tea
// FIXE ME! I assume the delay like GD_ITEMEMERGENCYCALL cooldown time
12968,300000 // Emergency_Scroll1
12969,300000 // Emergency_Scroll2
12970,300000 // Emergency_Scroll3

View File

@ -5275,9 +5275,9 @@
12965,Emergency_Box1,Emergency Level 1 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12968,1; },{},{}
12966,Emergency_Box2,Emergency Level 2 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12969,1; },{},{}
12967,Emergency_Box3,Emergency Level 3 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12970,1; },{},{}
12968,Emergency_Scroll1,Emergency Level 1 Scroll,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "GD_EMERGENCYCALL",1; },{},{}
12969,Emergency_Scroll2,Emergency Level 2 Scroll,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "GD_EMERGENCYCALL",1; },{},{}
12970,Emergency_Scroll3,Emergency Level 3 Scroll,11,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ itemskill "GD_EMERGENCYCALL",1; },{},{}
12968,Emergency_Scroll1,Emergency Level 1 Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",1; },{},{}
12969,Emergency_Scroll2,Emergency Level 2 Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",2; },{},{}
12970,Emergency_Scroll3,Emergency Level 3 Scroll,2,2,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",3; },{},{}
12971,Teleport_Box1,Teleport Scroll Box 1,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12977,10; },{},{}
12972,Teleport_Box2,Teleport Scroll Box 2,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12978,10; },{},{}
12973,Teleport_Box3,Teleport Scroll Box 3,18,20,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem 12979,10; },{},{}

View File

@ -1915,4 +1915,6 @@
10012,10000,0,0,0,300000,0
//-- GD_EMERGENCYCALL
10013,5000,0,0,0,300000,0
//-- GD_ITEMEMERGENCYCALL
10015,0,0,0,0,300000,0
//==========================================

View File

@ -40,11 +40,6 @@
2536,7,7 //ALL_GUARDIAN_RECALL
2537,0,7 //ALL_ODINS_POWER
10010,3 //GD_BATTLEORDER
10011,3 //GD_REGENERATION
10012,6 //GD_RESTORE
10013,7 //GD_EMERGENCYCALL
// Mercenary Skills
8214,7 //MA_CHARGEARROW
8215,7 //MA_SHARPSHOOTING
@ -57,3 +52,9 @@
8235,7 //MER_SCAPEGOAT
8238,7 //MER_KYRIE
8240,7 //MER_INCAGI
// Guild Skills
10010,3 //GD_BATTLEORDER
10011,3 //GD_REGENERATION
10012,6 //GD_RESTORE
10013,7 //GD_EMERGENCYCALL

View File

@ -1194,6 +1194,7 @@
8441,5,6,1,2,0,1,1,1,no,0,0,0,magic,0,0x0, EL_ROCK_CRUSHER_ATK,Rock Launcher Attack
8442,9,6,1,2,0,1,1,-5,no,0,0,0,weapon,0,0x0, EL_STONE_RAIN,Stone Rain
//Guild Skills
10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_APPROVAL,Official Guild Approval
10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_KAFRACONTRACT,Kafra Contract
10002,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_GUARDRESEARCH,Guardian Research
@ -1209,4 +1210,4 @@
10012,0,0,4,0,0x3,15,1,0,yes,0,0x10,0,none,0,0x0, GD_RESTORE,Restoration
10013,0,0,4,0,0x3,0,1,0,yes,0,0x10,0,none,0,0x0, GD_EMERGENCYCALL,Urgent Call
10014,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_DEVELOPMENT,Permanent Development
//10015,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_ITEMEMERGENCYCALL,Unknown Skill
10015,0,0,4,0,0x3,0,3,0,yes,0,0x10,0,none,0,0x0, GD_ITEMEMERGENCYCALL,Item Emergency Call

View File

@ -820,11 +820,6 @@
3027,0,0,55:60:65:70:75 ,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //OB_OBOROGENSOU#Oboro Gensou#
3029,0,0,20:30:40:50:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //OB_AKAITSUKI#Akaitsuki#
10010,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_BATTLEORDER##
10011,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_REGENERATION##
10012,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_RESTORE##
10013,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_EMERGENCYCALL##
8001,0,0,13:16:19:22:25,0,0,0,99,0,0,none,0,545,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
8002,0,0,20:25:30:35:40,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
8004,0,0,100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //HLIF_CHANGE
@ -949,3 +944,9 @@
8440,0,0,60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //EL_ROCK_CRUSHER#Rock Launcher#
8441,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //EL_ROCK_CRUSHER_ATK#Rock Launcher Attack#
8442,0,0,80,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //EL_STONE_RAIN#Stone Rain#
// Guild Skills
10010,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_BATTLEORDER##
10011,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_REGENERATION##
10012,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_RESTORE##
10013,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_EMERGENCYCALL##

View File

@ -6243,9 +6243,9 @@
12965,Emergency_Box1,Emergency Level 1 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12968,1; },{},{}
12966,Emergency_Box2,Emergency Level 2 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12969,1; },{},{}
12967,Emergency_Box3,Emergency Level 3 Scroll Box,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12970,1; },{},{}
12968,Emergency_Scroll1,Emergency Level 1 Scroll,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "GD_EMERGENCYCALL",1; },{},{}
12969,Emergency_Scroll2,Emergency Level 2 Scroll,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "GD_EMERGENCYCALL",1; },{},{}
12970,Emergency_Scroll3,Emergency Level 3 Scroll,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ itemskill "GD_EMERGENCYCALL",1; },{},{}
12968,Emergency_Scroll1,Emergency Level 1 Scroll,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",1; },{},{}
12969,Emergency_Scroll2,Emergency Level 2 Scroll,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",2; },{},{}
12970,Emergency_Scroll3,Emergency Level 3 Scroll,11,2,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ unitskilluseid getcharid(3),"GD_ITEMEMERGENCYCALL",3; },{},{}
12971,Teleport_Box1,Teleport Scroll Box 1,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12977,10; },{},{}
12972,Teleport_Box2,Teleport Scroll Box 2,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12978,10; },{},{}
12973,Teleport_Box3,Teleport Scroll Box 3,18,20,,10,,,,,0xFFFFFFFF,63,2,,,,,,{ getitem 12979,10; },{},{}

View File

@ -1924,4 +1924,6 @@
10012,10000,0,0,0,300000,0,0
//-- GD_EMERGENCYCALL
10013,5000,0,0,0,300000,0,0
//-- GD_ITEMEMERGENCYCALL
10015,0,0,0,0,300000,0,-1
//==========================================

View File

@ -41,11 +41,6 @@
2537,0,7 //ALL_ODINS_POWER
3035,7,7 //ECLAGE_RECALL
10010,3 //GD_BATTLEORDER
10011,3 //GD_REGENERATION
10012,6 //GD_RESTORE
10013,7 //GD_EMERGENCYCALL
// Mercenary Skills
8214,7 //MA_CHARGEARROW
8215,7 //MA_SHARPSHOOTING
@ -58,3 +53,9 @@
8235,7 //MER_SCAPEGOAT
8238,7 //MER_KYRIE
8240,7 //MER_INCAGI
// Guild Skills
10010,3 //GD_BATTLEORDER
10011,3 //GD_REGENERATION
10012,6 //GD_RESTORE
10013,7 //GD_EMERGENCYCALL

View File

@ -1240,6 +1240,7 @@
8441,5,6,1,2,0,1,1,1,no,0,0,0,magic,0,0x0, EL_ROCK_CRUSHER_ATK,Rock Launcher Attack
8442,9,6,1,2,0,1,1,-5,no,0,0,0,weapon,0,0x0, EL_STONE_RAIN,Stone Rain
//Guild Skills
10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_APPROVAL,Official Guild Approval
10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_KAFRACONTRACT,Kafra Contract
10002,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_GUARDRESEARCH,Guardian Research
@ -1255,4 +1256,4 @@
10012,0,0,4,0,0x3,15,1,0,yes,0,0x10,0,none,0,0x0, GD_RESTORE,Restoration
10013,0,0,4,0,0x3,0,1,0,yes,0,0x10,0,none,0,0x0, GD_EMERGENCYCALL,Urgent Call
10014,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_DEVELOPMENT,Permanent Development
//10015,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0,0x0, GD_ITEMEMERGENCYCALL,Unknown Skill
10015,0,0,4,0,0x3,0,3,0,yes,0,0x10,0,none,0,0x0, GD_ITEMEMERGENCYCALL,Item Emergency Call

View File

@ -989,3 +989,4 @@
10011,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_REGENERATION##
10012,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_RESTORE##
10013,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_EMERGENCYCALL##
10015,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GD_ITEMEMERGENCYCALL##

View File

@ -569,7 +569,7 @@ enum { //Change Member Infos
GMI_LEVEL,
};
enum {
enum e_guild_skill {
GD_SKILLBASE=10000,
GD_APPROVAL=10000,
GD_KAFRACONTRACT=10001,
@ -586,6 +586,7 @@ enum {
GD_RESTORE=10012,
GD_EMERGENCYCALL=10013,
GD_DEVELOPMENT=10014,
GD_ITEMEMERGENCYCALL=10015,
GD_MAX,
};

View File

@ -6537,7 +6537,7 @@ static const struct _battle_data {
{ "chase_range_rate", &battle_config.chase_range_rate, 100, 0, INT_MAX, },
{ "gtb_sc_immunity", &battle_config.gtb_sc_immunity, 50, 0, INT_MAX, },
{ "guild_max_castles", &battle_config.guild_max_castles, 0, 0, INT_MAX, },
{ "guild_skill_relog_delay", &battle_config.guild_skill_relog_delay, 0, 0, 1, },
{ "guild_skill_relog_delay", &battle_config.guild_skill_relog_delay, 300000, 0, INT_MAX, },
{ "emergency_call", &battle_config.emergency_call, 11, 0, 31, },
{ "atcommand_spawn_quantity_limit", &battle_config.atc_spawn_quantity_limit, 100, 0, INT_MAX, },
{ "atcommand_slave_clone_limit", &battle_config.atc_slave_clone_limit, 25, 0, INT_MAX, },

View File

@ -515,7 +515,7 @@ int guild_recv_info(struct guild *sg)
//If the guild master is online the first time the guild_info is received,
//that means he was the first to join, so apply guild skill blocking here.
if( battle_config.guild_skill_relog_delay )
guild_block_skill(sd, 300000);
guild_block_skill(sd, battle_config.guild_skill_relog_delay);
//Also set the guild master flag.
sd->guild = g;
@ -720,7 +720,7 @@ void guild_member_joined(struct map_session_data *sd)
sd->state.gmaster_flag = g;
// prevent Guild Skills from being used directly after relog
if( battle_config.guild_skill_relog_delay )
guild_block_skill(sd, 300000);
guild_block_skill(sd, battle_config.guild_skill_relog_delay);
}
i = guild_getindex(g, sd->status.account_id, sd->status.char_id);
if (i == -1)
@ -1818,8 +1818,9 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
if (g->member[0].sd && g->member[0].sd->fd) {
clif_displaymessage(g->member[0].sd->fd, msg_txt(g->member[pos].sd,679)); //"You have become the Guild Master!"
g->member[0].sd->state.gmaster_flag = g;
//Block his skills for 5 minutes to prevent abuse.
guild_block_skill(g->member[0].sd, 300000);
//Block his skills to prevent abuse.
if (battle_config.guild_skill_relog_delay)
guild_block_skill(g->member[0].sd, battle_config.guild_skill_relog_delay);
}
// announce the change to all guild members
@ -2144,7 +2145,6 @@ void guild_flag_remove(struct npc_data *nd) {
cursor++;
}
}
/**

View File

@ -613,6 +613,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
}
break;
case GD_EMERGENCYCALL:
case GD_ITEMEMERGENCYCALL:
if (
!(battle_config.emergency_call&((agit_flag || agit2_flag)?2:1)) ||
!(battle_config.emergency_call&(map[m].flag.gvg || map[m].flag.gvg_castle?8:4)) ||
@ -7498,24 +7499,36 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
}
break;
case GD_EMERGENCYCALL:
case GD_ITEMEMERGENCYCALL:
{
int dx[9]={-1, 1, 0, 0,-1, 1,-1, 1, 0};
int dy[9]={ 0, 0, 1,-1, 1,-1,-1, 1, 0};
int j = 0;
int8 dx[9] = {-1, 1, 0, 0,-1, 1,-1, 1, 0};
int8 dy[9] = { 0, 0, 1,-1, 1,-1,-1, 1, 0};
uint8 j = 0, calls = 0, called = 0;
struct guild *g;
// i don't know if it actually summons in a circle, but oh well. ;P
g = sd?sd->state.gmaster_flag:guild_search(status_get_guild_id(src));
if (!g)
break;
if (skill_id == GD_ITEMEMERGENCYCALL)
switch (skill_lv) {
case 1: calls = 7; break;
case 2: calls = 12; break;
case 3: calls = 20; break;
default: calls = 0; break;
}
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
for(i = 0; i < g->max_member; i++, j++) {
if (j>8) j=0;
for (i = 0; i < g->max_member && (!calls || (calls && called < calls)); i++, j++) {
if (j > 8)
j = 0;
if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd)) {
if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m))
continue;
if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH))
dx[j] = dy[j] = 0;
pc_setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN);
called++;
}
}
if (sd)
@ -13165,6 +13178,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
return 0;
}
case GD_EMERGENCYCALL:
case GD_ITEMEMERGENCYCALL:
// other checks were already done in skillnotok()
if (!sd->status.guild_id || !sd->state.gmaster_flag)
return 0;
@ -17897,7 +17911,7 @@ int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id) {
switch(skill_id){
case TF_HIDING: case AS_CLOAKING: case GC_CLOAKINGEXCEED: case SC_SHADOWFORM:
case MI_HARMONIZE: case CG_MARIONETTE: case AL_TELEPORT: case TF_BACKSLIDING:
case RA_CAMOUFLAGE: case ST_CHASEWALK: case GD_EMERGENCYCALL:
case RA_CAMOUFLAGE: case ST_CHASEWALK: case GD_EMERGENCYCALL: case GD_ITEMEMERGENCYCALL:
return 1; // needs more info
}
break;