* Corrected Triple Blow
* Added 'Guardian Angel' code for supernovices git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@492 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
edad41e71d
commit
1a437b3c75
@ -6,10 +6,12 @@ Date Added
|
||||
- Level 6-10 Stone Curse will not consume a red gem now when it fails
|
||||
- Players should be able to use items when they're stoned but not yet
|
||||
completely petrified
|
||||
- Corrected Triple Blow to work with bows (they actually do ^^)
|
||||
* Added 'guildgetexp' script command [celest]
|
||||
* Added bLongAtkRate item effect [celest]
|
||||
* Implemented Confusion (50%) - still need more info on how monsters act
|
||||
when they're confused [celest]
|
||||
* Added 'Guardian Angel' code for supernovices [celest]
|
||||
|
||||
12/6
|
||||
* Fixed file props for new npcs [MouseJstr]
|
||||
|
@ -2926,7 +2926,8 @@ static struct Damage battle_calc_pc_weapon_attack(
|
||||
}
|
||||
|
||||
//ŽO’i<E28099>¶
|
||||
if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16 && !sd->state.arrow_atk) {
|
||||
//if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16 && !sd->state.arrow_atk) {
|
||||
if(skill_num == 0 && skill_lv >= 0 && (skill = pc_checkskill(sd,MO_TRIPLEATTACK)) > 0 && sd->status.weapon <= 16) { // triple blow works with bows ^^ [celest]
|
||||
da = (rand()%100 < (30 - skill)) ? 2:0;
|
||||
}
|
||||
|
||||
|
@ -7728,6 +7728,28 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd) { // S 008c <
|
||||
WFIFOW(fd,0) = 0x8e;
|
||||
WFIFOSET(fd, WFIFOW(fd,2));
|
||||
|
||||
// Celest
|
||||
if (pc_calc_base_job2 (sd->status.class) == 23 && (sd->status.base_exp*100/pc_nextbaseexp(sd))%10 == 0) {
|
||||
estr_lower(RFIFOP(fd,4));
|
||||
if (sd->state.snovice_flag == 0 && strstr(RFIFOP(fd,4), "guardian angel, can you hear my voice? ^^;"))
|
||||
sd->state.snovice_flag = 1;
|
||||
else if (sd->state.snovice_flag == 1) {
|
||||
sprintf(message, "my name is %s, and i'm a super novice~", sd->status.name);
|
||||
estr_lower(message);
|
||||
if (strstr(RFIFOP(fd,4), message))
|
||||
sd->state.snovice_flag = 2;
|
||||
}
|
||||
else if (sd->state.snovice_flag == 2 && strstr(RFIFOP(fd,4), "please help me~ t.t"))
|
||||
sd->state.snovice_flag = 3;
|
||||
else if (sd->state.snovice_flag == 3) {
|
||||
int i;
|
||||
skill_status_change_start(&sd->bl,SkillStatusChangeTable[MO_EXPLOSIONSPIRITS],1,0,0,0,skill_get_time(MO_EXPLOSIONSPIRITS,1),0 );
|
||||
for(i=0;i<5;i++)
|
||||
pc_addspiritball(sd,skill_get_time(MO_CALLSPIRITS,1),5);
|
||||
sd->state.snovice_flag = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(message) free(message);
|
||||
if(buf) free(buf);
|
||||
|
||||
|
@ -137,6 +137,7 @@ struct map_session_data {
|
||||
unsigned make_arrow_flag : 1;
|
||||
unsigned potionpitcher_flag : 1;
|
||||
unsigned storage_flag : 1;
|
||||
unsigned snovice_flag : 4;
|
||||
} state;
|
||||
struct {
|
||||
unsigned killer : 1;
|
||||
|
11
src/map/pc.c
11
src/map/pc.c
@ -280,9 +280,14 @@ int pc_setrestartvalue(struct map_session_data *sd,int type) {
|
||||
|
||||
//-----------------------
|
||||
// 死亡した
|
||||
if(sd->special_state.restart_full_recover) { // オシリスカ?ド
|
||||
if(sd->special_state.restart_full_recover || // オシリスカ?ド
|
||||
sd->state.snovice_flag == 4) { // [Celest]
|
||||
sd->status.hp=sd->status.max_hp;
|
||||
sd->status.sp=sd->status.max_sp;
|
||||
if (sd->state.snovice_flag == 4) {
|
||||
sd->state.snovice_flag = 0;
|
||||
skill_status_change_start(&sd->bl,SkillStatusChangeTable[MO_STEELBODY],1,0,0,0,skill_get_time(MO_STEELBODY,1),0 );
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(s_class.job == 0 && battle_config.restart_hp_rate < 50) { //ノビは半分回復
|
||||
@ -5427,6 +5432,10 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage)
|
||||
clif_updatestatus(sd,SP_HP);
|
||||
pc_calcstatus(sd,0);
|
||||
|
||||
// activate Steel body if a super novice dies at 99+% exp [celest]
|
||||
if (s_class.job == 23 && (i=sd->status.base_exp*1000/pc_nextbaseexp(sd))>=990 && i<=1000)
|
||||
sd->state.snovice_flag = 4;
|
||||
|
||||
for(i=0;i<5;i++)
|
||||
if(sd->dev.val1[i]){
|
||||
skill_status_change_end(&map_id2sd(sd->dev.val1[i])->bl,SC_DEVOTION,-1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user