Corrected Enchant Arms status icon (#3661)

* Enchant Arms should display a status icon depending on the element (skill level) being used.
Thanks to @mrjnumber1!
This commit is contained in:
Aleos 2019-04-19 21:30:03 -04:00 committed by GitHub
parent 53f5013149
commit ce1508a01c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 15 deletions

View File

@ -1035,9 +1035,9 @@ SC_JAILED ()
desc:
val1:
SC_ENCHANTARMS ()
desc:
val1:
SC_ENCHANTARMS (EFST_WEAPONPROPERTY)
desc: Changes the element of a target's weapon.
val1: Element value from skill_db
SC_MAGICALATTACK ()
desc:

View File

@ -2782,7 +2782,7 @@ static int battle_get_weapon_element(struct Damage* wd, struct block_list *src,
element = sd->spiritcharm_type; // Summoning 10 spiritcharm will endow your weapon
// on official endows override all other elements [helvetica]
if(sc && sc->data[SC_ENCHANTARMS]) // Check for endows
element = sc->data[SC_ENCHANTARMS]->val2;
element = sc->data[SC_ENCHANTARMS]->val1;
} else if( element == -2 ) //Use enchantment's element
element = status_get_attack_sc_element(src,sc);
else if( element == -3 ) //Use random element

View File

@ -6596,9 +6596,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
break;
case ITEM_ENCHANTARMS:
clif_skill_nodamage(src,bl,skill_id,skill_lv,
sc_start2(src,bl,type,100,skill_lv,
skill_get_ele(skill_id,skill_lv), skill_get_time(skill_id,skill_lv)));
clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_get_ele(skill_id, skill_lv), skill_get_time(skill_id, skill_lv)));
break;
case TK_SEVENWIND:
@ -13035,7 +13033,7 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_
else if (ele == -1) {
val1 = status->rhw.ele;
if (sc && sc->data[SC_ENCHANTARMS])
val1 = sc->data[SC_ENCHANTARMS]->val2;
val1 = sc->data[SC_ENCHANTARMS]->val1;
}
switch (val1) {
@ -17749,7 +17747,7 @@ int skill_maelstrom_suction(struct block_list *bl, va_list ap)
void skill_enchant_elemental_end(struct block_list *bl, int type)
{
struct status_change *sc;
const enum sc_type scs[] = { SC_ENCPOISON, SC_ASPERSIO, SC_FIREWEAPON, SC_WATERWEAPON, SC_WINDWEAPON, SC_EARTHWEAPON, SC_SHADOWWEAPON, SC_GHOSTWEAPON, SC_ENCHANTARMS };
const enum sc_type scs[] = { SC_ENCPOISON, SC_ASPERSIO, SC_FIREWEAPON, SC_WATERWEAPON, SC_WINDWEAPON, SC_EARTHWEAPON, SC_SHADOWWEAPON, SC_GHOSTWEAPON };
int i;
nullpo_retv(bl);
@ -17758,6 +17756,7 @@ void skill_enchant_elemental_end(struct block_list *bl, int type)
if (!sc->count)
return;
status_change_end(bl, SC_ENCHANTARMS, INVALID_TIMER); // Should always end
for (i = 0; i < ARRAYLENGTH(scs); i++)
if (type != scs[i] && sc->data[scs[i]])
status_change_end(bl, scs[i], INVALID_TIMER);

View File

@ -495,7 +495,7 @@ void initChangeTables(void)
set_sc( CG_LONGINGFREEDOM , SC_LONGING , EFST_LONGING , SCB_SPEED|SCB_ASPD );
set_sc( CG_HERMODE , SC_HERMODE , EFST_HERMODE , SCB_NONE );
set_sc( CG_TAROTCARD , SC_TAROTCARD , EFST_TAROTCARD, SCB_NONE );
set_sc( ITEM_ENCHANTARMS , SC_ENCHANTARMS , EFST_BLANK , SCB_ATK_ELE );
set_sc( ITEM_ENCHANTARMS , SC_ENCHANTARMS , EFST_WEAPONPROPERTY, SCB_ATK_ELE );
set_sc( SL_HIGH , SC_SPIRIT , EFST_SOULLINK, SCB_ALL );
set_sc( KN_ONEHAND , SC_ONEHAND , EFST_ONEHANDQUICKEN, SCB_ASPD );
set_sc( GS_FLING , SC_FLING , EFST_BLANK , SCB_DEF|SCB_DEF2 );
@ -7372,7 +7372,7 @@ unsigned char status_calc_attack_element(struct block_list *bl, struct status_ch
if(!sc || !sc->count)
return cap_value(element, 0, UCHAR_MAX);
if(sc->data[SC_ENCHANTARMS])
return sc->data[SC_ENCHANTARMS]->val2;
return sc->data[SC_ENCHANTARMS]->val1;
if(sc->data[SC_WATERWEAPON]
|| (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2) )
return ELE_WATER;
@ -10321,10 +10321,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
// end previous enchants
skill_enchant_elemental_end(bl,type);
// Make sure the received element is valid.
if (val2 >= ELE_ALL)
val2 = val2%ELE_ALL;
else if (val2 < 0)
val2 = rnd()%ELE_ALL;
if (val1 >= ELE_ALL)
val1 = val1%ELE_ALL;
else if (val1 < 0)
val1 = rnd()%ELE_ALL;
break;
case SC_CRITICALWOUND:
val2 = 20*val1; // Heal effectiveness decrease
@ -11339,6 +11339,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
// Values that must be set regardless of flag&4 e.g. val_flag [Ind]
switch(type) {
// Start |1 val_flag setting
case SC_ENCHANTARMS:
case SC_ROLLINGCUTTER:
case SC_BANDING:
case SC_SPHERE_1: