Adds SC_MOVEHASTE_INFINITY status

* Partial fix for #5766.
* Removes bSpeedRate,25 bonuses for several items which should be applied via a status change.
Thanks to @mrjnumber1!
This commit is contained in:
aleos 2021-03-31 15:22:18 -04:00
parent b41043d393
commit 0beb30ad1b
5 changed files with 90 additions and 27 deletions

View File

@ -5693,6 +5693,9 @@ Body:
bonus bStr,10;
bonus2 bAddRace,RC_Demon,3;
skill "AL_HEAL",3;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 1316
AegisName: Adventure_Axe
Name: Adventure Axe
@ -6286,7 +6289,9 @@ Body:
Refineable: true
Script: |
bonus bStr,10;
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 1364
AegisName: Great_Axe
Name: Great Axe
@ -6361,6 +6366,9 @@ Body:
bonus bAtkEle,Ele_Holy;
skill "AL_HEAL",3;
bonus2 bAddRace,RC_Demon,3;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 1367
AegisName: Slaughter
Name: Slaughter
@ -26367,8 +26375,10 @@ Body:
bonus bMaxHPrate,20;
bonus bMaxSPrate,20;
bonus bSPrecovRate,25;
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
bonus bInt,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 2411
AegisName: Grave
Name: Greaves
@ -27452,7 +27462,9 @@ Body:
bonus bMaxHPrate,20;
bonus bMaxSPrate,20;
bonus bSPrecovRate,15;
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 2463
AegisName: Feral_Boots
Name: Feral Boots
@ -27993,8 +28005,10 @@ Body:
.@r = getrefine();
bonus bMdef,.@r;
if (.@r>=14) {
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
}
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 2492
AegisName: Bayani_Bangungot_Boots
Name: Bayani Bangungot Boots of Nightmare
@ -28011,8 +28025,10 @@ Body:
.@r = getrefine();
bonus bMdef,.@r;
if (.@r>=12) {
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
}
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 2493
AegisName: Goibne's_Combat_Boots_
Name: Goibne's Greaves
@ -41216,10 +41232,11 @@ Body:
Refineable: true
View: 305
Script: |
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
bonus bDef,4;
skill "TF_HIDING",1;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
sc_end SC_HIDING;
- Id: 5274
AegisName: Shiny_Wig
@ -41234,10 +41251,11 @@ Body:
Refineable: true
View: 306
Script: |
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
bonus bDef,4;
skill "TF_HIDING",1;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
sc_end SC_HIDING;
- Id: 5275
AegisName: Marvelous_Wig
@ -41252,10 +41270,11 @@ Body:
Refineable: true
View: 307
Script: |
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
bonus bDef,4;
skill "TF_HIDING",1;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
sc_end SC_HIDING;
- Id: 5276
AegisName: Fantastic_Wig
@ -41270,10 +41289,11 @@ Body:
Refineable: true
View: 308
Script: |
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
bonus bDef,4;
skill "TF_HIDING",1;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
sc_end SC_HIDING;
- Id: 5277
AegisName: Yellow_Bandana
@ -47641,9 +47661,11 @@ Body:
Head_Top: true
View: 314
Script: |
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
bonus bAspdRate,10;
bonus bVariableCastrate,-25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 5629
AegisName: F_Vacation_Hat
Name: F Vacation Hat
@ -47912,8 +47934,10 @@ Body:
View: 308
Script: |
bonus bDef,4;
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
skill "TF_HIDING",1;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 5646
AegisName: F_Whisper_Mask
Name: F Whisper Mask
@ -71799,7 +71823,9 @@ Body:
bonus bStr,2;
bonus bVit,1;
if (getrefine() > 7)
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 18638
AegisName: Citron_Hat
Name: Citron Hat
@ -79032,7 +79058,9 @@ Body:
Head_Low: true
EquipLevelMin: 30
Script: |
autobonus "{ bonus bSpeedRate,25; }",50,5000,BF_NORMAL,"{ showscript \"Smokie-formation!\"; active_transform 1056,5000; /*SMOKIE*/ }";
autobonus "{ sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25; }",50,5000,BF_NORMAL,"{ showscript \"Smokie-formation!\"; active_transform 1056,5000; /*SMOKIE*/ }";
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 19239
AegisName: PoringTownCarrot
Name: Poring Village Carrot
@ -79044,7 +79072,9 @@ Body:
Head_Low: true
EquipLevelMin: 30
Script: |
autobonus "{ bonus bSpeedRate,25; }",50,5000,BF_NORMAL,"{ showscript \"Lunatic-formation!\"; active_transform 1063,5000; /*LUNATIC*/ }";
autobonus "{ sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25; }",50,5000,BF_NORMAL,"{ showscript \"Lunatic-formation!\"; active_transform 1063,5000; /*LUNATIC*/ }";
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 19240
AegisName: Toy_Syringe_K
Name: Toy Syringe
@ -84683,7 +84713,8 @@ Body:
EquipLevelMin: 1
View: 717
Script: |
bonus bVariableCastrate,-10;
if (gettime(DT_MONTH) == OCTOBER)
bonus bVariableCastrate,-10;
- Id: 19910
AegisName: C_Halloween_Hat
Name: Costume Halloween Hat
@ -84734,7 +84765,10 @@ Body:
EquipLevelMin: 1
View: 691
Script: |
bonus bSpeedRate,25;
if (gettime(DT_MONTH) == OCTOBER)
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 19918
AegisName: C_Lude_Mask
Name: Costume Lude Mask
@ -84745,7 +84779,8 @@ Body:
EquipLevelMin: 1
View: 802
Script: |
bonus bAddItemHealRate,20;
if (gettime(DT_MONTH) == OCTOBER)
bonus bAddItemHealRate,20;
- Id: 19919
AegisName: C_Cube_Mask_
Name: Costume Quve Mask
@ -84756,7 +84791,8 @@ Body:
EquipLevelMin: 1
View: 472
Script: |
bonus bAspdRate,10;
if (gettime(DT_MONTH) == OCTOBER)
bonus bAspdRate,10;
- Id: 19920
AegisName: C_Adv_Whisper_Mask
Name: Costume Evolved Whisper Mask
@ -84768,7 +84804,8 @@ Body:
EquipLevelMin: 1
View: 458
Script: |
bonus bFlee,20;
if (gettime(DT_MONTH) == OCTOBER)
bonus bFlee,20;
- Id: 19922
AegisName: C_Noah_Hat
Name: Costume Noah's Hat
@ -85114,8 +85151,12 @@ Body:
EquipLevelMin: 1
View: 1144
Script: |
bonus bAspdRate,10;
bonus bSpeedRate,25;
if (gettime(DT_MONTH) == DECEMBER) {
bonus bAspdRate,10;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
}
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 19977
AegisName: C_Golden_Exclamation
Name: Costume Golden Exclamation Mark
@ -92480,6 +92521,7 @@ Body:
bonus bMaxHPrate,3;
bonus bMaxSPrate,3;
bonus2 bSubRace,RC_Player_Human,5;
bonus2 bSubRace,RC_Player_Doram,5;
if (.@r>=7) {
bonus bMaxHPrate,7;
bonus bMaxSPrate,7;
@ -92488,7 +92530,7 @@ Body:
bonus bLongHPGainValue,5;
}
if (.@r>=8)
bonus bSpeedRate,40;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
if (.@r>=9) {
bonus bMaxHPrate,10;
bonus bMaxSPrate,10;
@ -92498,6 +92540,8 @@ Body:
}
if (.@r>=10)
skill "AS_CLOAKING",3;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 20953
AegisName: H_AD_Hood
Name: High Adventurer Hood
@ -95701,13 +95745,15 @@ Body:
.@r = getrefine();
.@bonus = 5;
if (.@r >=7) {
.@bonus += 5;
.@bonus += 5;
}
if (.@r >=9) {
.@bonus += 5;
.@bonus += 5;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
}
bonus bMaxSPrate,.@bonus;
bonus bSpeedRate,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 22133
AegisName: Shoes_IL
Name: Illusion Shoes

View File

@ -4400,7 +4400,9 @@ Body:
BuyingStore: true
DropEffect: CLIENT
Script: |
bonus bSpeedRate,25;
sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 4132
AegisName: Mistress_Card
Name: Mistress Card
@ -11018,7 +11020,9 @@ Body:
BuyingStore: true
DropEffect: CLIENT
Script: |
autobonus "{ bonus bAgi,44; heal 0,-40; }",500,3000,0,"{ sc_start SC_SPEEDUP1,3000,50; }";
autobonus "{ bonus bAgi,44; sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25; heal 0,-40; }",500,3000,0,"{ specialeffect2 EF_POTION_BERSERK; showscript \"I got the signal!!!!\"; }";
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 4582
AegisName: Bungisngis_Card
Name: Bungisngis Card

View File

@ -1612,6 +1612,7 @@
export_constant(SC_EMERGENCY_MOVE);
export_constant(SC_MADOGEAR);
export_constant(SC_NPC_HALLUCINATIONWALK);
export_constant(SC_MOVEHASTE_INFINITY);
#ifdef RENEWAL
export_constant(SC_EXTREMITYFIST2);
#endif

View File

@ -1412,6 +1412,8 @@ void initChangeTables(void)
StatusIconChangeTable[SC_MADOGEAR] = EFST_RIDING;
#endif
StatusIconChangeTable[SC_MOVEHASTE_INFINITY] = EFST_MOVHASTE_INFINITY;
/* Other SC which are not necessarily associated to skills */
StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD;
StatusChangeFlagTable[SC_ASPDPOTION1] |= SCB_ASPD;
@ -1600,6 +1602,8 @@ void initChangeTables(void)
StatusChangeFlagTable[SC_MADOGEAR] |= SCB_SPEED;
StatusChangeFlagTable[SC_MOVEHASTE_INFINITY] |= SCB_SPEED;
/* StatusDisplayType Table [Ind] */
StatusDisplayType[SC_ALL_RIDING] = BL_PC;
StatusDisplayType[SC_PUSH_CART] = BL_PC;
@ -7447,6 +7451,8 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
val = max(val, 25); // !TODO: Confirm bonus movement speed
if (sc->data[SC_EMERGENCY_MOVE])
val = max(val, sc->data[SC_EMERGENCY_MOVE]->val2);
if (sc->data[SC_MOVEHASTE_INFINITY])
val = max(val, sc->data[SC_MOVEHASTE_INFINITY]->val1);
// !FIXME: official items use a single bonus for this [ultramage]
if( sc->data[SC_SPEEDUP0] ) // Temporary item-based speedup
@ -10224,6 +10230,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
case SC_SPRITEMABLE:
case SC_CLAN_INFO:
case SC_DAILYSENDMAILCNT:
case SC_MOVEHASTE_INFINITY:
tick = INFINITE_TICK;
break;
@ -12899,6 +12906,7 @@ int status_change_clear(struct block_list* bl, int type)
case SC_REUSE_LIMIT_LUXANIMA:
case SC_SOULENERGY:
case SC_MADOGEAR:
case SC_MOVEHASTE_INFINITY:
// Costumes
case SC_MOONSTAR:
case SC_SUPER_STAR:
@ -12936,6 +12944,7 @@ int status_change_clear(struct block_list* bl, int type)
case SC_ENTRY_QUEUE_APPLY_DELAY:
case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT:
case SC_MADOGEAR:
case SC_MOVEHASTE_INFINITY:
// Costumes
case SC_MOONSTAR:
case SC_SUPER_STAR:
@ -15074,6 +15083,7 @@ void status_change_clear_buffs(struct block_list* bl, uint8 type)
case SC_EP16_2_BUFF_SS:
case SC_EP16_2_BUFF_SC:
case SC_EP16_2_BUFF_AC:
case SC_MOVEHASTE_INFINITY:
// Clans
case SC_CLAN_INFO:
case SC_SWORDCLAN:

View File

@ -944,6 +944,8 @@ enum sc_type : int16 {
SC_NPC_HALLUCINATIONWALK,
SC_MOVEHASTE_INFINITY,
#ifdef RENEWAL
SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled
#endif