Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions db/constants.conf
Original file line number Diff line number Diff line change
Expand Up @@ -1319,6 +1319,8 @@ constants_db: {

SC_ENSEMBLEFATIGUE: 724
SC_ADAPTATION: 725
SC_BASILICA_BUFF: 726
SC_ASSUMPTIO_BUFF: 727

comment__: "Emotes"
e_gasp: 0
Expand Down Expand Up @@ -4946,6 +4948,8 @@ constants_db: {
SI_SP_SHA: 1064
SI_ENSEMBLEFATIGUE: 1088
SI_ADAPTATION: 1089
SI_ASSUMPTIO_BUFF: 1121
SI_BASILICA_BUFF: 1122
SI_SOULCURSE: 1125
SI_MADOGEAR: 1149
}
26 changes: 25 additions & 1 deletion db/re/sc_config.conf
Original file line number Diff line number Diff line change
Expand Up @@ -853,7 +853,7 @@ SC_ASSUMPTIO: {
NoMagicBlocked: true
}
Icon: "SI_ASSUMPTIO"
Skill: "HP_ASSUMPTIO"
// Skill: "HP_ASSUMPTIO" // 2018.11 rebalance - HP_ASSUMPTIO now uses SP_ASSUMPTIO_BUFF
}
SC_BASILICA: {
Flags: {
Expand Down Expand Up @@ -6532,3 +6532,27 @@ SC_ADAPTATION: {
Icon: "SI_ADAPTATION"
Skills: ["BD_ADAPTATION"]
}

SC_BASILICA_BUFF: {
Visible: true
Flags: {
Buff: true
NoMadoReset: true
NoMagicBlocked: true
}
CalcFlags: {
All: true
}
Icon: "SI_BASILICA_BUFF"
Skills: ["HP_BASILICA"]
}

SC_ASSUMPTIO_BUFF: {
Visible: true
Flags: {
Buff: true
NoMagicBlocked: true
}
Icon: "SI_ASSUMPTIO_BUFF"
Skill: "HP_ASSUMPTIO"
}
91 changes: 17 additions & 74 deletions db/re/skill_db.conf
Original file line number Diff line number Diff line change
Expand Up @@ -10998,7 +10998,7 @@ skill_db: (
{
Id: 361
Name: "HP_ASSUMPTIO"
StatusChange: "SC_ASSUMPTIO"
StatusChange: "SC_ASSUMPTIO_BUFF"
Description: "Assumptio"
MaxLevel: 5
Range: 9
Expand All @@ -11024,18 +11024,7 @@ skill_db: (
Lv9: 2400
Lv10: 2400
}
AfterCastActDelay: {
Lv1: 1100
Lv2: 1200
Lv3: 1300
Lv4: 1400
Lv5: 1500
Lv6: 1600
Lv7: 1700
Lv8: 1800
Lv9: 1900
Lv10: 2000
}
AfterCastActDelay: 500
SkillData1: {
Lv1: 20000
Lv2: 40000
Expand Down Expand Up @@ -11078,10 +11067,9 @@ skill_db: (
{
Id: 362
Name: "HP_BASILICA"
StatusChange: "SC_BASILICA"
StatusChange: "SC_BASILICA_BUFF"
Description: "Basilica"
MaxLevel: 5
Range: 4
Hit: "BDT_SKILL"
SkillType: {
Self: true
Expand All @@ -11091,19 +11079,8 @@ skill_db: (
NoDamage: true
}
InterruptCast: true
KnockBackTiles: 2
AfterCastActDelay: {
Lv1: 2000
Lv2: 3000
Lv3: 4000
Lv4: 5000
Lv5: 6000
Lv6: 7000
Lv7: 8000
Lv8: 9000
Lv9: 10000
Lv10: 11000
}
AfterCastActDelay: 1_000
CoolDown: 30_000
SkillData1: {
Lv1: 20000
Lv2: 25000
Expand All @@ -11116,56 +11093,22 @@ skill_db: (
Lv9: 60000
Lv10: 65000
}
SkillData2: {
Lv1: 20000
Lv2: 25000
Lv3: 30000
Lv4: 35000
Lv5: 40000
Lv6: 45000
Lv7: 50000
Lv8: 55000
Lv9: 60000
Lv10: 65000
}
FixedCastTime: {
Lv1: 5000
Lv2: 6000
Lv3: 7000
Lv4: 8000
Lv5: 9000
Lv6: 10000
Lv7: 11000
Lv8: 12000
Lv9: 13000
Lv10: 14000
}
FixedCastTime: 1_000
CastTime: 3_000
Requirements: {
SPCost: {
Lv1: 80
Lv2: 90
Lv3: 100
Lv4: 110
Lv5: 120
Lv6: 130
Lv7: 140
Lv8: 150
Lv9: 160
Lv10: 170
}
Items: {
Yellow_Gemstone: 1
Red_Gemstone: 1
Blue_Gemstone: 1
Holy_Water: 1
Lv1: 40
Lv2: 50
Lv3: 60
Lv4: 70
Lv5: 80
Lv6: 90
Lv7: 100
Lv8: 110
Lv9: 120
Lv10: 130
}
}
Unit: {
Id: 0xb4
Range: 2
Interval: 300
Target: "All"
}
},
{
Id: 363
Expand Down
1 change: 1 addition & 0 deletions npc/events/nguild/nguild_warper.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ prontera,146,163,6 script Novice Castles 4_F_NOVICE,{
} else if (select("Warp me to Novice Castles","Cancel") == 1) {
// remove several unallowed buffs
sc_end SC_ASSUMPTIO;
sc_end SC_ASSUMPTIO_BUFF;
sc_end SC_IMPOSITIO;
sc_end SC_SUFFRAGIUM;
sc_end SC_MAGNIFICAT;
Expand Down
3 changes: 3 additions & 0 deletions src/map/battle.c
Original file line number Diff line number Diff line change
Expand Up @@ -880,6 +880,9 @@ static int64 battle_calc_masteryfix(struct block_list *src, struct block_list *t
}

if( sc ){ // sc considered as masteries
enum elements target_ele = status_get_element(target);
if (sc->data[SC_BASILICA_BUFF] != NULL && (target_ele == ELE_UNDEAD || target_ele == ELE_DARK))
damage += damage * sc->data[SC_BASILICA_BUFF]->val2 / 100;
if(sc->data[SC_GN_CARTBOOST])
damage += 10 * sc->data[SC_GN_CARTBOOST]->val1;
if(sc->data[SC_CAMOUFLAGE])
Expand Down
32 changes: 32 additions & 0 deletions src/map/skill.c
Original file line number Diff line number Diff line change
Expand Up @@ -1221,6 +1221,8 @@ static int skill_calc_heal(struct block_list *src, struct block_list *target, ui
hp += hp * sc->data[SC_VITALIZE_POTION]->val3 / 100;
if(sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2)
hp += hp / 10;
if (sc->data[SC_ASSUMPTIO_BUFF] != NULL)
hp += hp * 2 * sc->data[SC_ASSUMPTIO_BUFF]->val1 / 100;
if (sc->data[SC_VITALITYACTIVATION])
hp = hp * 150 / 100;
if (sc->data[SC_NO_RECOVER_STATE])
Expand Down Expand Up @@ -2104,6 +2106,7 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
//Deactivatable Statuses: Kyrie Eleison, Auto Guard, Steel Body, Assumptio, and Millennium Shield
status_change_end(bl, SC_KYRIE, INVALID_TIMER);
status_change_end(bl, SC_ASSUMPTIO, INVALID_TIMER);
status_change_end(bl, SC_ASSUMPTIO_BUFF, INVALID_TIMER);
status_change_end(bl, SC_STEELBODY, INVALID_TIMER);
status_change_end(bl, SC_GENTLETOUCH_CHANGE, INVALID_TIMER);
status_change_end(bl, SC_GENTLETOUCH_REVITALIZE, INVALID_TIMER);
Expand Down Expand Up @@ -2347,6 +2350,7 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
continue;
break;
case SC_ASSUMPTIO:
case SC_ASSUMPTIO_BUFF:
if (bl->type == BL_MOB)
continue;
break;
Expand Down Expand Up @@ -4108,7 +4112,9 @@ static int skill_check_unit_range_sub(struct block_list *bl, va_list ap)
case HT_BLASTMINE:
case HT_CLAYMORETRAP:
case HT_TALKIEBOX:
#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
#endif
case RA_ELECTRICSHOCKER:
case RA_CLUSTERBOMB:
case RA_MAGENTATRAP:
Expand Down Expand Up @@ -4161,8 +4167,10 @@ static int skill_check_unit_range2_sub(struct block_list *bl, va_list ap)
if( status->isdead(bl) && skill_id != AL_WARP )
return 0;

#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
if( skill_id == HP_BASILICA && bl->type == BL_PC )
return 0;
#endif

if (skill_id == AM_DEMONSTRATION && bl->type == BL_MOB && BL_UCCAST(BL_MOB, bl)->class_ == MOBID_EMPELIUM)
return 0; //Allow casting Bomb/Demonstration Right under emperium [Skotlex]
Expand Down Expand Up @@ -7506,6 +7514,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
case SP_SOULREAPER:
#ifdef RENEWAL
case BD_ADAPTATION:
case HP_BASILICA: // 2018.11 rebalance - Basilica changed to a self buff
#endif
clif->skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src, bl, type, 100, skill_lv, skill->get_time(skill_id, skill_lv), skill_id));
Expand Down Expand Up @@ -8841,6 +8850,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
#endif

case SC_ASSUMPTIO:
case SC_ASSUMPTIO_BUFF:
if( bl->type == BL_MOB )
continue;
break;
Expand Down Expand Up @@ -10365,6 +10375,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
PRAGMA_GCC46(GCC diagnostic ignored "-Wswitch-enum")
switch (i) {
case SC_ASSUMPTIO:
case SC_ASSUMPTIO_BUFF:
if( bl->type == BL_MOB )
continue;
break;
Expand Down Expand Up @@ -12601,6 +12612,8 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
skill->unitsetting(src,skill_id,skill_lv,x,y,0);
flag|=1;
break;

#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
if( sc && sc->data[SC_BASILICA] )
status_change_end(src, SC_BASILICA, INVALID_TIMER); // Cancel Basilica
Expand All @@ -12617,6 +12630,8 @@ static int skill_castend_pos2(struct block_list *src, int x, int y, uint16 skill
flag|=1;
}
break;
#endif

case CG_HERMODE:
skill->clear_unitgroup(src);
if ((sg = skill->unitsetting(src,skill_id,skill_lv,x,y,0)))
Expand Down Expand Up @@ -13394,9 +13409,12 @@ static struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16
val3 = group->val3; //as well as the mapindex to warp to.
}
break;

#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
val1 = src->id; // Store caster id.
break;
#endif

case PR_SANCTUARY:
case NPC_EVILLAND:
Expand Down Expand Up @@ -17737,10 +17755,14 @@ static int skill_delay_fix(struct block_list *bl, uint16 skill_id, uint16 skill_
case SJ_PROMINENCEKICK:
time -= (4 * status_get_agi(bl) + 2 * status_get_dex(bl));
break;

#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
if( sc && !sc->data[SC_BASILICA] )
time = 0; // There is no Delay on Basilica creation, only on cancel
break;
#endif

default:
if (battle_config.delay_dependon_dex && !(delaynodex&1)) {
// if skill delay is allowed to be reduced by dex
Expand Down Expand Up @@ -18717,7 +18739,9 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
}
break;
case WZ_ICEWALL:
#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
#endif
if (su->group->skill_id == skill_id) {
//These can't be placed on top of themselves (duration can't be refreshed)
(*alive) = 0;
Expand Down Expand Up @@ -19105,9 +19129,13 @@ static struct skill_unit *skill_initunit(struct skill_unit_group *group, int idx
case SA_LANDPROTECTOR:
skill->unitsetmapcell(su,SA_LANDPROTECTOR,group->skill_lv,CELL_LANDPROTECTOR,true);
break;

#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
skill->unitsetmapcell(su,HP_BASILICA,group->skill_lv,CELL_BASILICA,true);
break;
#endif

default:
if (group->state.song_dance&0x1) //Check for dissonance.
skill->dance_overlap(su, 1);
Expand Down Expand Up @@ -19167,9 +19195,13 @@ static int skill_delunit(struct skill_unit *su)
case SA_LANDPROTECTOR:
skill->unitsetmapcell(su,SA_LANDPROTECTOR,group->skill_lv,CELL_LANDPROTECTOR,false);
break;

#ifndef RENEWAL // 2018.11 rebalance - Basilica changed to a self buff
case HP_BASILICA:
skill->unitsetmapcell(su,HP_BASILICA,group->skill_lv,CELL_BASILICA,false);
break;
#endif

case RA_ELECTRICSHOCKER: {
struct block_list* target = map->id2bl(group->val2);
if( target )
Expand Down
Loading
Loading