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

View File

@ -4400,7 +4400,9 @@ Body:
BuyingStore: true BuyingStore: true
DropEffect: CLIENT DropEffect: CLIENT
Script: | Script: |
bonus bSpeedRate,25; sc_start SC_MOVEHAST_INFINITY,INFINITE_TICK,25;
UnEquipScript: |
sc_end SC_MOVEHAST_INFINITY;
- Id: 4132 - Id: 4132
AegisName: Mistress_Card AegisName: Mistress_Card
Name: Mistress Card Name: Mistress Card
@ -11018,7 +11020,9 @@ Body:
BuyingStore: true BuyingStore: true
DropEffect: CLIENT DropEffect: CLIENT
Script: | 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 - Id: 4582
AegisName: Bungisngis_Card AegisName: Bungisngis_Card
Name: Bungisngis Card Name: Bungisngis Card

View File

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

View File

@ -1412,6 +1412,8 @@ void initChangeTables(void)
StatusIconChangeTable[SC_MADOGEAR] = EFST_RIDING; StatusIconChangeTable[SC_MADOGEAR] = EFST_RIDING;
#endif #endif
StatusIconChangeTable[SC_MOVEHASTE_INFINITY] = EFST_MOVHASTE_INFINITY;
/* Other SC which are not necessarily associated to skills */ /* Other SC which are not necessarily associated to skills */
StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD; StatusChangeFlagTable[SC_ASPDPOTION0] |= SCB_ASPD;
StatusChangeFlagTable[SC_ASPDPOTION1] |= SCB_ASPD; StatusChangeFlagTable[SC_ASPDPOTION1] |= SCB_ASPD;
@ -1600,6 +1602,8 @@ void initChangeTables(void)
StatusChangeFlagTable[SC_MADOGEAR] |= SCB_SPEED; StatusChangeFlagTable[SC_MADOGEAR] |= SCB_SPEED;
StatusChangeFlagTable[SC_MOVEHASTE_INFINITY] |= SCB_SPEED;
/* StatusDisplayType Table [Ind] */ /* StatusDisplayType Table [Ind] */
StatusDisplayType[SC_ALL_RIDING] = BL_PC; StatusDisplayType[SC_ALL_RIDING] = BL_PC;
StatusDisplayType[SC_PUSH_CART] = 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 val = max(val, 25); // !TODO: Confirm bonus movement speed
if (sc->data[SC_EMERGENCY_MOVE]) if (sc->data[SC_EMERGENCY_MOVE])
val = max(val, sc->data[SC_EMERGENCY_MOVE]->val2); 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] // !FIXME: official items use a single bonus for this [ultramage]
if( sc->data[SC_SPEEDUP0] ) // Temporary item-based speedup 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_SPRITEMABLE:
case SC_CLAN_INFO: case SC_CLAN_INFO:
case SC_DAILYSENDMAILCNT: case SC_DAILYSENDMAILCNT:
case SC_MOVEHASTE_INFINITY:
tick = INFINITE_TICK; tick = INFINITE_TICK;
break; break;
@ -12899,6 +12906,7 @@ int status_change_clear(struct block_list* bl, int type)
case SC_REUSE_LIMIT_LUXANIMA: case SC_REUSE_LIMIT_LUXANIMA:
case SC_SOULENERGY: case SC_SOULENERGY:
case SC_MADOGEAR: case SC_MADOGEAR:
case SC_MOVEHASTE_INFINITY:
// Costumes // Costumes
case SC_MOONSTAR: case SC_MOONSTAR:
case SC_SUPER_STAR: 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_APPLY_DELAY:
case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT: case SC_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT:
case SC_MADOGEAR: case SC_MADOGEAR:
case SC_MOVEHASTE_INFINITY:
// Costumes // Costumes
case SC_MOONSTAR: case SC_MOONSTAR:
case SC_SUPER_STAR: 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_SS:
case SC_EP16_2_BUFF_SC: case SC_EP16_2_BUFF_SC:
case SC_EP16_2_BUFF_AC: case SC_EP16_2_BUFF_AC:
case SC_MOVEHASTE_INFINITY:
// Clans // Clans
case SC_CLAN_INFO: case SC_CLAN_INFO:
case SC_SWORDCLAN: case SC_SWORDCLAN:

View File

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