# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: /home/lighta/Documents/Myscript/RO/Servs/rathena
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: db/re/skill_cast_db.txt
--- db/re/skill_cast_db.txt Base (BASE)
+++ db/re/skill_cast_db.txt Locally Modified (Based On LOCAL)
@@ -1511,7 +1511,7 @@
//-- WM_SOUND_OF_DESTRUCTION
2429,0:500:1000:1500:2000,1000,0,0,0,20000,500
//-- WM_SATURDAY_NIGHT_FEVER
-2430,1000:2000:3000:4000:5000,1000,0,10000:15000:20000:25000:30000,3000,180000,1000
\ No newline at end of file
+2430,1000:2000:3000:4000:5000,1000,0,10000:15000:20000:25000:30000,10000:8000:6000:4000:2000,180000,1000
//-- WM_LERADS_DEW
2431,1000,1000,0,20000:30000:40000:50000:60000,0,180000,500
//-- WM_MELODYOFSINK
Index: src/map/battle.c
--- src/map/battle.c Base (BASE)
+++ src/map/battle.c Locally Modified (Based On LOCAL)
@@ -364,9 +364,10 @@
status_change_end(target, SC_THORNSTRAP, INVALID_TIMER);
if( tsc->data[SC_FIRE_CLOAK_OPTION])
damage -= damage * tsc->data[SC_FIRE_CLOAK_OPTION]->val2 / 100;
- if( tsc->data[SC_CRYSTALIZE] && target->type != BL_MOB){
+ if( tsc->data[SC_CRYSTALIZE] && target->type != BL_MOB)
status_change_end(target, SC_CRYSTALIZE, INVALID_TIMER);
- }
+ if (tsc->data[SC_EARTH_INSIGNIA])
+ damage += damage * 50 / 100;
break;
case ELE_HOLY:
if( tsc->data[SC_ORATIO])
@@ -379,7 +380,17 @@
case ELE_WIND:
if( tsc->data[SC_CRYSTALIZE] && target->type != BL_MOB)
damage = damage * 150 / 100;
+ if (tsc->data[SC_WATER_INSIGNIA])
+ damage += damage * 50 / 100;
break;
+ case ELE_WATER:
+ if (tsc->data[SC_FIRE_INSIGNIA])
+ damage += damage * 50 / 100;
+ break;
+ case ELE_EARTH:
+ if (tsc->data[SC_WIND_INSIGNIA] && atk_elem == ELE_EARTH)
+ damage += damage * 50 / 100;
+ break;
}
} //end tsc check
if( src && src->type == BL_PC ){
Index: src/map/pc.c
--- src/map/pc.c Base (BASE)
+++ src/map/pc.c Locally Modified (Based On LOCAL)
@@ -2020,7 +2020,7 @@
}
/*==========================================
- * ? ���i�ɂ��\�͓��̃{?�i�X�ݒ�
+ * Add a bonus(type) to player sd
*------------------------------------------*/
int pc_bonus(struct map_session_data *sd,int type,int val)
{
@@ -8944,7 +8944,7 @@
nullpo_retv(sd);
status_change_end(&sd->bl, SC_TENSIONRELAX, INVALID_TIMER);
-
+ clif_status_load(&sd->bl,SI_SIT,0);
//Reset sitting tick.
sd->ssregen.tick.hp = sd->ssregen.tick.sp = 0;
sd->state.dead_sit = sd->vd.dead_sit = 0;
Index: src/map/skill.c
--- src/map/skill.c Base (BASE)
+++ src/map/skill.c Locally Modified (Based On LOCAL)
@@ -591,6 +591,7 @@
break;
case WM_LULLABY_DEEPSLEEP:
case WM_SIRCLEOFNATURE:
+ case WM_SATURDAY_NIGHT_FEVER:
if( !map_flag_vs(m) ) {
clif_skill_teleportmessage(sd,2); // This skill uses this msg instead of skill fails.
return 1;
@@ -8335,7 +8336,8 @@
if( src->id != bl->id && battle_check_target(src,bl,BCT_ENEMY) > 0 )
status_fix_damage(src,bl,9999,clif_damage(src,bl,tick,0,0,9999,0,0,0));
} else if( sd ) {
- if( !sd->status.party_id ) {
+ short chance = sstatus->int_/6 + sd->status.job_level/5 + skilllv*4;
+ if( !sd->status.party_id || (rnd()%100 > chance)) {
clif_skill_fail(sd,skillid,USESKILL_FAIL_NEED_HELPER,0);
break;
}
@@ -11567,6 +11569,23 @@
case UNT_EARTH_INSIGNIA:
case UNT_ZEPHYR:
sc_start(bl,type, 100, sg->skill_lv, sg->interval);
+ if (!battle_check_undead(tstatus->race, tstatus->def_ele)) {
+ int hp = tstatus->max_hp / 100; //+1% each 5s
+ if ((sg->val3) % 5) { //each 5s
+ if (tstatus->def_ele == skill_get_ele(sg->skill_id,sg->skill_lv)){
+ status_heal(bl, hp, 0, 2);
+ } else if((sg->unit_id == UNT_FIRE_INSIGNIA && tstatus->def_ele == ELE_EARTH)
+ ||(sg->unit_id == UNT_WATER_INSIGNIA && tstatus->def_ele == ELE_FIRE)
+ ||(sg->unit_id == UNT_WIND_INSIGNIA && tstatus->def_ele == ELE_WATER)
+ ||(sg->unit_id == UNT_EARTH_INSIGNIA && tstatus->def_ele == ELE_WIND)
+ ){
+ status_heal(bl, -hp, 0, 0);
+ }
+ }
+ }
+ sg->val3++; //timer
+ if (sg->val3 > 5)
+ sg->val3 = 0;
break;
case UNT_VACUUM_EXTREME:
@@ -13475,6 +13494,8 @@
VARCAST_REDUCTION(sc->data[SC_POEMBRAGI]->val2);
if (sc->data[SC_IZAYOI])
VARCAST_REDUCTION(50);
+ if (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 3 && (skill_get_ele(skill_id, skill_lv) == ELE_WATER))
+ VARCAST_REDUCTION(30);; //Reduces 30% Variable Cast Time of Water spells.
// Fixed cast reduction bonuses
if( sc->data[SC__LAZINESS] )
fixcast_r = max(fixcast_r, sc->data[SC__LAZINESS]->val2);
@@ -13580,7 +13601,10 @@
if (sc && sc->count) {
if (sc->data[SC_POEMBRAGI])
time -= time * sc->data[SC_POEMBRAGI]->val3 / 100;
+ if (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 3 && (skill_get_ele(skill_id, skill_lv) == ELE_WIND))
+ time /= 2; // After Delay of Wind element spells reduced by 50%.
}
+
}
if( !(delaynodex&4) && sd && sd->delayrate != 100 )
Index: src/map/status.c
--- src/map/status.c Base (BASE)
+++ src/map/status.c Locally Modified (Based On LOCAL)
@@ -670,10 +670,10 @@
set_sc( SO_WARMER , SC_WARMER , SI_WARMER , SCB_NONE );
set_sc( SO_VACUUM_EXTREME , SC_VACUUM_EXTREME , SI_VACUUM_EXTREME , SCB_NONE );
set_sc( SO_ARRULLO , SC_DEEPSLEEP , SI_DEEPSLEEP , SCB_NONE );
- set_sc( SO_FIRE_INSIGNIA , SC_FIRE_INSIGNIA , SI_FIRE_INSIGNIA , SCB_MATK );
- set_sc( SO_WATER_INSIGNIA , SC_WATER_INSIGNIA , SI_WATER_INSIGNIA , SCB_NONE );
- set_sc( SO_WIND_INSIGNIA , SC_WIND_INSIGNIA , SI_WIND_INSIGNIA , SCB_NONE );
- set_sc( SO_EARTH_INSIGNIA , SC_EARTH_INSIGNIA , SI_EARTH_INSIGNIA , SCB_MDEF|SCB_DEF|SCB_MAXHP|SCB_MAXSP|SCB_WATK );
+ set_sc( SO_FIRE_INSIGNIA , SC_FIRE_INSIGNIA , SI_FIRE_INSIGNIA , SCB_MATK | SCB_BATK | SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ set_sc( SO_WATER_INSIGNIA , SC_WATER_INSIGNIA , SI_WATER_INSIGNIA , SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ set_sc( SO_WIND_INSIGNIA , SC_WIND_INSIGNIA , SI_WIND_INSIGNIA , SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ set_sc( SO_EARTH_INSIGNIA , SC_EARTH_INSIGNIA , SI_EARTH_INSIGNIA , SCB_MDEF|SCB_DEF|SCB_MAXHP|SCB_MAXSP|SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
/**
* Genetic
**/
@@ -3433,6 +3433,11 @@
regen->hp = cap_value(regen->hp*sc->data[SC_GT_REVITALIZE]->val3/100, 1, SHRT_MAX);
regen->state.walk= 1;
}
+ if ((sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 1) //if insignia lvl 1
+ || (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 1)
+ || (sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 1)
+ || (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 1))
+ regen->rate.hp *= 2;
}
void status_calc_state( struct block_list *bl, struct status_change *sc, enum scs_flag flag, bool start ) {
@@ -5283,9 +5288,7 @@
if(sc->data[SC_BERSERK])
aspd_rate -= 300;
- else
-
- if(sc->data[SC_MADNESSCANCEL])
+ else if(sc->data[SC_MADNESSCANCEL])
aspd_rate -= 200;
}
@@ -6378,7 +6381,6 @@
case SC_INCREASEAGI:
if(sd && pc_issit(sd)){
pc_setstand(sd);
- clif_status_load(&sd->bl,SI_SIT,0);
}
case SC_CONCENTRATE:
@@ -6572,6 +6574,9 @@
if(sc->data[i]) return 0;
}
break;
+ case SC_INTRAVISION:
+ if(sd && sd->special_state.intravision) return 0; //we already have the status by maya P
+ break;
}
//Check for BOSS resistances
@@ -10118,7 +10123,7 @@
case SC_SATURDAYNIGHTFEVER:
- // 1% HP/SP drain every 3 seconds [Jobbie]
+ // 1% HP/SP drain every val4 seconds [Jobbie]
if( --(sce->val3) >= 0 )
{
int hp = status->hp / 100;