New card subtype (#6394)

* Implemented new card subtype to differentiate normal cards from enchanted ones
* Available Subtypes:
** Normal (default)
** Enchant
* Updated the item database with the new subtype
* Updated the npc folders using getiteminfo ITEMINFO_SUBTYPE

Thanks to @Lemongrass3110 and @aleos89 !
This commit is contained in:
Atemo 2021-12-08 18:27:22 +01:00 committed by GitHub
parent 6c6da0c6e8
commit 546df9bc2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 1465 additions and 30 deletions

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)
@ -8570,6 +8570,7 @@ Body:
AegisName: Strength1
Name: STR+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8578,6 +8579,7 @@ Body:
AegisName: Strength2
Name: STR+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8586,6 +8588,7 @@ Body:
AegisName: Strength3
Name: STR+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8594,6 +8597,7 @@ Body:
AegisName: Strength4
Name: STR+4
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8602,6 +8606,7 @@ Body:
AegisName: Strength5
Name: STR+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8610,6 +8615,7 @@ Body:
AegisName: Strength6
Name: STR+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8618,6 +8624,7 @@ Body:
AegisName: Strength7
Name: STR+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8626,6 +8633,7 @@ Body:
AegisName: Strength8
Name: STR+8
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8634,6 +8642,7 @@ Body:
AegisName: Strength9
Name: STR+9
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8642,6 +8651,7 @@ Body:
AegisName: Strength10
Name: STR+10
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8650,6 +8660,7 @@ Body:
AegisName: Inteligence1
Name: INT+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8658,6 +8669,7 @@ Body:
AegisName: Inteligence2
Name: INT+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8666,6 +8678,7 @@ Body:
AegisName: Inteligence3
Name: INT+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8674,6 +8687,7 @@ Body:
AegisName: Inteligence4
Name: INT+4
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8682,6 +8696,7 @@ Body:
AegisName: Inteligence5
Name: INT+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8690,6 +8705,7 @@ Body:
AegisName: Inteligence6
Name: INT+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8698,6 +8714,7 @@ Body:
AegisName: Inteligence7
Name: INT+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8706,6 +8723,7 @@ Body:
AegisName: Inteligence8
Name: INT+8
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8714,6 +8732,7 @@ Body:
AegisName: Inteligence9
Name: INT+9
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8722,6 +8741,7 @@ Body:
AegisName: Inteligence10
Name: INT+10
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8730,6 +8750,7 @@ Body:
AegisName: Dexterity1
Name: DEX+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8738,6 +8759,7 @@ Body:
AegisName: Dexterity2
Name: DEX+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8746,6 +8768,7 @@ Body:
AegisName: Dexterity3
Name: DEX+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8754,6 +8777,7 @@ Body:
AegisName: Dexterity4
Name: DEX+4
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8762,6 +8786,7 @@ Body:
AegisName: Dexterity5
Name: DEX+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8770,6 +8795,7 @@ Body:
AegisName: Dexterity6
Name: DEX+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8778,6 +8804,7 @@ Body:
AegisName: Dexterity7
Name: DEX+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8786,6 +8813,7 @@ Body:
AegisName: Dexterity8
Name: DEX+8
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8794,6 +8822,7 @@ Body:
AegisName: Dexterity9
Name: DEX+9
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8802,6 +8831,7 @@ Body:
AegisName: Dexterity10
Name: DEX+10
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8810,6 +8840,7 @@ Body:
AegisName: Agility1
Name: AGI+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8818,6 +8849,7 @@ Body:
AegisName: Agility2
Name: AGI+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8826,6 +8858,7 @@ Body:
AegisName: Agility3
Name: AGI+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8834,6 +8867,7 @@ Body:
AegisName: Agility4
Name: AGI+4
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8842,6 +8876,7 @@ Body:
AegisName: Agility5
Name: AGI+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8850,6 +8885,7 @@ Body:
AegisName: Agility6
Name: AGI+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8858,6 +8894,7 @@ Body:
AegisName: Agility7
Name: AGI+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8866,6 +8903,7 @@ Body:
AegisName: Agility8
Name: AGI+8
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8874,6 +8912,7 @@ Body:
AegisName: Agility9
Name: AGI+9
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8882,6 +8921,7 @@ Body:
AegisName: Agility10
Name: AGI+10
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8890,6 +8930,7 @@ Body:
AegisName: Vitality1
Name: VIT+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8898,6 +8939,7 @@ Body:
AegisName: Vitality2
Name: VIT+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8906,6 +8948,7 @@ Body:
AegisName: Vitality3
Name: VIT+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8914,6 +8957,7 @@ Body:
AegisName: Vitality4
Name: VIT+4
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8922,6 +8966,7 @@ Body:
AegisName: Vitality5
Name: VIT+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8930,6 +8975,7 @@ Body:
AegisName: Vitality6
Name: VIT+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8938,6 +8984,7 @@ Body:
AegisName: Vitality7
Name: VIT+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8946,6 +8993,7 @@ Body:
AegisName: Vitality8
Name: VIT+8
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8954,6 +9002,7 @@ Body:
AegisName: Vitality9
Name: VIT+9
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8962,6 +9011,7 @@ Body:
AegisName: Vitality10
Name: VIT+10
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8970,6 +9020,7 @@ Body:
AegisName: Luck1
Name: LUK+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8978,6 +9029,7 @@ Body:
AegisName: Luck2
Name: LUK+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8986,6 +9038,7 @@ Body:
AegisName: Luck3
Name: LUK+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -8994,6 +9047,7 @@ Body:
AegisName: Luck4
Name: LUK+4
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9002,6 +9056,7 @@ Body:
AegisName: Luck5
Name: LUK+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9010,6 +9065,7 @@ Body:
AegisName: Luck6
Name: LUK+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9018,6 +9074,7 @@ Body:
AegisName: Luck7
Name: LUK+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9026,6 +9083,7 @@ Body:
AegisName: Luck8
Name: LUK+8
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9034,6 +9092,7 @@ Body:
AegisName: Luck9
Name: LUK+9
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9042,6 +9101,7 @@ Body:
AegisName: Luck10
Name: LUK+10
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9050,6 +9110,7 @@ Body:
AegisName: Matk1
Name: MATK+1%
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9058,6 +9119,7 @@ Body:
AegisName: Matk2
Name: MATK+2%
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9066,6 +9128,7 @@ Body:
AegisName: Evasion6
Name: FLEE+6
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9074,6 +9137,7 @@ Body:
AegisName: Evasion12
Name: FLEE+12
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9082,6 +9146,7 @@ Body:
AegisName: Critical5
Name: CRI+5
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9090,6 +9155,7 @@ Body:
AegisName: Critical7
Name: CRI+7
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9098,6 +9164,7 @@ Body:
AegisName: Atk2
Name: ATK+2%
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9106,6 +9173,7 @@ Body:
AegisName: Atk3
Name: ATK+3%
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
Script: |
@ -9114,108 +9182,126 @@ Body:
AegisName: Str1_J
Name: STR+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4769
AegisName: Str2_J
Name: STR+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4770
AegisName: Str3_J
Name: STR+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4771
AegisName: Int1_J
Name: INT+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4772
AegisName: Int2_J
Name: INT+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4773
AegisName: Int3_J
Name: INT+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4774
AegisName: Vit1_J
Name: VIT+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4775
AegisName: Vit2_J
Name: VIT+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4776
AegisName: Vit3_J
Name: VIT+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4777
AegisName: Agi1_J
Name: AGI+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4778
AegisName: Agi2_J
Name: AGI+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4779
AegisName: Agi3_J
Name: AGI+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4780
AegisName: Dex1_J
Name: DEX+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4781
AegisName: Dex2_J
Name: DEX+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4782
AegisName: Dex3_J
Name: DEX+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4783
AegisName: Luk1_J
Name: LUK+1
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4784
AegisName: Luk2_J
Name: LUK+2
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 4785
AegisName: Luk3_J
Name: LUK+3
Type: Card
SubType: Enchant
Buy: 20
Weight: 10
- Id: 6000

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

File diff suppressed because it is too large Load Diff

View File

@ -26,7 +26,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -78,6 +78,10 @@ Kunai
CannonBall
ThrowWeapon
For cards, the types are:
Normal (default)
Enchant
---------------------------------------
Buy: Default buying price. When not specified, becomes double the sell price.

View File

@ -3055,6 +3055,7 @@ Valid types are:
ITEMINFO_ID (17) - item ID
ITEMINFO_AEGISNAME (18) - aegis item name
ITEMINFO_ARMORLEVEL (19) - armor LV
ITEMINFO_SUBTYPE (20) - Subtype
See the sample in 'doc/sample/getiteminfo.txt'.

View File

@ -9,7 +9,7 @@
# AegisName Server name to reference the item in scripts and lookups, should use no spaces.
# Name Name in English for displaying as output.
# Type Item type. (Default: Etc)
# SubType Weapon or Ammo type. (Default: 0)
# SubType Weapon, Ammo or Card type. (Default: 0)
# Buy Buying price. When not specified, becomes double the sell price. (Default: 0)
# Sell Selling price. When not specified, becomes half the buy price. (Default: 0)
# Weight Item weight. Each 10 is 1 weight. (Default: 0)

View File

@ -61,7 +61,7 @@ OnInit:
.alphabet_menu$ = .alphabet_menu$ + .@alphabet$[.@i] +" Cards:";
npcshopdelitem "card_mob#"+ .@alphabet$[.@i], 501;
for ( .@j = 0; .@j < .@nb; .@j++ ) {
if (callfunc( "F_IsCharm", .@id[.@j] ) == true)// Skip enchants in case someone added them as card drop
if (getiteminfo(.@id[.@j], ITEMINFO_SUBTYPE) == CARD_ENCHANT)// Skip enchants in case someone added them as card drop
continue;
npcshopadditem "card_mob#"+ .@alphabet$[.@i], .@id[.@j], 1000000;
}

View File

@ -315,7 +315,7 @@ prontera,147,59,3 script Goldberg#pron 878,{
mes "I'm sorry. But you don't have the RWC Initialization coupon. Can you check your inventory?";
close;
}
if (callfunc("F_IsCharm",.@equip_card[3]) == false) {
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_NORMAL) {
mes "[Goldberg]";
mes "Hm... this equipment is clean. I cannot initialize it if there's nothing! Check it again.";
close;
@ -328,7 +328,7 @@ prontera,147,59,3 script Goldberg#pron 878,{
// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
for ( .@i = getiteminfo(.@equip_id, ITEMINFO_SLOT); .@i < MAX_SLOTS; .@i++ ) {
if (callfunc("F_IsCharm",.@equip_card[.@i]) == true)
if (getiteminfo(.@equip_card[.@i], ITEMINFO_SUBTYPE) == CARD_ENCHANT)
.@equip_card[.@i] = 0;// Armor Enchant System
}
getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];

View File

@ -120,7 +120,7 @@
if (.@Jeremy) {
for ( .@i = 0; .@i < MAX_SLOTS; .@i++ ) {
if (callfunc("F_IsCharm",.@equip_card[.@i]) == true)
if (getiteminfo(.@equip_card[.@i], ITEMINFO_SUBTYPE) == CARD_ENCHANT)
.@equip_card[.@i] = 0;// Armor Enchant System
}
if (!getarraysize(.@equip_card)) {
@ -146,7 +146,7 @@
next;
set .@menu$,"";
for ( .@i = 0; .@i < MAX_SLOTS; .@i++ ) {
if (.@equip_card[.@i] && callfunc("F_IsCharm",.@equip_card[.@i]) == false) // Armor Enchant System
if (.@equip_card[.@i] && getiteminfo(.@equip_card[.@i], ITEMINFO_SUBTYPE) == CARD_NORMAL) // Armor Enchant System
.@menu$ = .@menu$ + "Socket " + (.@i+1) + " - " + getitemname(.@equip_card[.@i])+":";
else {
.@menu$ = .@menu$ + "^777777Socket " + (.@i+1) + " - No card^000000:";
@ -160,7 +160,7 @@
close;
default:
set .@slot, .@i-2;
if (.@equip_card[.@slot] == 0 || callfunc("F_IsCharm",.@equip_card[.@slot]) == true) {
if (.@equip_card[.@slot] == 0 || getiteminfo(.@equip_card[.@slot], ITEMINFO_SUBTYPE) == CARD_ENCHANT) {
mes .@n$;
mes "This socket is not equipped with any card. Why don't you check again?";
close;

View File

@ -263,14 +263,14 @@ que_ng,75,20,3 script Artisan Tene#ko 762,{
// Initialization
if (.@select == 2) {
if (.@sot03_ck) {// reset only 3rd slot
if (callfunc("F_IsCharm",.@equip_card[2]) == false) { // Armor Enchant System
if (getiteminfo(.@equip_card[2], ITEMINFO_SUBTYPE) == CARD_NORMAL) { // Armor Enchant System
mes "[Artisan Tene]";
mes "The third slot is is not enchanted. Please check again."; //custom translation
close;
}
set .@equip_card[2],0;
} else {
if (callfunc("F_IsCharm",.@equip_card[3]) == false) { // Armor Enchant System
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_NORMAL) { // Armor Enchant System
mes "[Artisan Tene]";
mes "This equipment is is not enchanted. Please check again."; //custom translation
close;
@ -302,8 +302,8 @@ que_ng,75,20,3 script Artisan Tene#ko 762,{
else set .@ko_type01,5;
//custom translations
if (callfunc("F_IsCharm",.@equip_card[3]) == true) { // Armor Enchant System
if (callfunc("F_IsCharm",.@equip_card[2]) == true) {
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_ENCHANT) { // Armor Enchant System
if (getiteminfo(.@equip_card[2], ITEMINFO_SUBTYPE) == CARD_ENCHANT) {
mes "[Artisan Tene]";
mes "This equipment cannot be further enchanted.";
next;

View File

@ -676,7 +676,7 @@ L_Socket:
// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
for ( .@i = getiteminfo(.@equip_id, ITEMINFO_SLOT); .@i < MAX_SLOTS; .@i++ ) {
if (callfunc("F_IsCharm",.@equip_card[.@i]) == true)
if (getiteminfo(.@equip_card[.@i], ITEMINFO_SUBTYPE) == CARD_ENCHANT)
.@equip_card[.@i] = 0;// Armor Enchant System
}
getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];

View File

@ -1156,7 +1156,7 @@ L_Socket:
// GetNonSlotItemSock2 .@equip_refine .@equip_id .@equip_card[0] .@equip_card[1] .@equip_card[2] .@equip_card[3]
for ( .@i = getiteminfo(.@equip_id, ITEMINFO_SLOT); .@i < MAX_SLOTS; .@i++ ) {
if (callfunc("F_IsCharm",.@equip_card[.@i]) == true)
if (getiteminfo(.@equip_card[.@i], ITEMINFO_SUBTYPE) == CARD_ENCHANT)
.@equip_card[.@i] = 0;// Armor Enchant System
}
getitem2 .@equip_id,1,1,.@equip_refine,0,.@equip_card[0],.@equip_card[1],.@equip_card[2],.@equip_card[3];

View File

@ -67,7 +67,7 @@ har_in01,17,74,7 script Contraband Processor#pa 4_DR_SOLDIER,{
.@refine = getequiprefinerycnt(.@part);
setarray .@card[0], getequipcardid(.@part,0), getequipcardid(.@part,1), getequipcardid(.@part,2), getequipcardid(.@part,3);
copyarray .@tmp_card[0], .@card[0], 4;
if ((.@card[1] && callfunc("F_IsCharm",.@card[1]) == false) || (.@card[2] && callfunc("F_IsCharm",.@card[2]) == false) || (.@card[3] && callfunc("F_IsCharm",.@card[3]) == false)) {// armor enchant system custom check
if ((.@card[1] && getiteminfo(.@card[1], ITEMINFO_SUBTYPE) == CARD_NORMAL) || (.@card[2] && getiteminfo(.@card[2], ITEMINFO_SUBTYPE) == CARD_NORMAL) || (.@card[3] && getiteminfo(.@card[3], ITEMINFO_SUBTYPE) == CARD_NORMAL)) {// armor enchant system custom check
mes "[Contraband Processor]";
mes "Something wrong happened.";
close;

View File

@ -250,7 +250,7 @@ prt_in,28,73,3 script Devil Enchant Master#prq 63,{
mes "You need to bring some money to initialize!!";
close;
}
if (callfunc("F_IsCharm",.@equip_card[3]) == false) {
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_NORMAL) {
mes "This item is not enchanted!";
close;
}

View File

@ -762,10 +762,10 @@ verus04,71,106,5 script Mass Charleston#2 4_F_CHARLESTON01,{
}
case 2: // Reset
// Note: the NPC doesn't check if the equipment is already enhanced
if (F_IsCharm(.@card[0]) == true) .@card[0] = 0;
if (F_IsCharm(.@card[1]) == true) .@card[1] = 0;
if (F_IsCharm(.@card[2]) == true) .@card[2] = 0;
if (F_IsCharm(.@card[3]) == true) .@card[3] = 0;
if (getiteminfo(.@card[0], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[0] = 0;
if (getiteminfo(.@card[1], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[1] = 0;
if (getiteminfo(.@card[2], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[2] = 0;
if (getiteminfo(.@card[3], ITEMINFO_SUBTYPE) == CARD_ENCHANT) .@card[3] = 0;
specialeffect2 EF_REPAIRWEAPON;
mes "[Mass Charleston]";
mes "Reset the product's abilities.";

View File

@ -10678,7 +10678,7 @@ mal_in01,15,16,3 script Fallen Angel#mal 403,{
mes "I can't do it if you can't pay!";
close;
}
if (callfunc("F_IsCharm",.@equip_card[3]) == false) {
if (getiteminfo(.@equip_card[3], ITEMINFO_SUBTYPE) == CARD_NORMAL) {
mes "[Fallen Angel]";
mes "This equipment has not been enchanted, please check it again!";
close;

View File

@ -172,6 +172,16 @@ uint64 ItemDatabase::parseBodyNode(const YAML::Node &node) {
}
item->subtype = static_cast<e_ammo_type>(constant);
} else if (item->type == IT_CARD) {
std::string type_constant = "CARD_" + type;
int64 constant;
if (!script_get_constant(type_constant.c_str(), &constant) || constant < CARD_NORMAL || constant >= MAX_CARD_TYPE) {
this->invalidWarning(node["SubType"], "Invalid card type %s, defaulting to CARD_NORMAL.\n", type.c_str());
item->subtype = CARD_NORMAL;
}
item->subtype = static_cast<e_card_type>(constant);
} else
this->invalidWarning(node["SubType"], "Item sub type is not supported for this item type.\n");
} else {

View File

@ -913,6 +913,12 @@ enum e_ammo_type : uint8 {
MAX_AMMO_TYPE
};
enum e_card_type : uint8 {
CARD_NORMAL = 0,
CARD_ENCHANT,
MAX_CARD_TYPE
};
enum idletime_option {
IDLE_WALK = 0x0001,
IDLE_USESKILLTOID = 0x0002,

View File

@ -14161,6 +14161,7 @@ BUILDIN_FUNC(getiteminfo)
}
case ITEMINFO_ID: script_pushint(st, i_data->nameid); break;
case ITEMINFO_AEGISNAME: script_pushstrcopy(st, i_data->name.c_str()); break;
case ITEMINFO_SUBTYPE: script_pushint(st, i_data->subtype); break;
default:
script_pushint(st, -1);
break;
@ -14247,6 +14248,7 @@ BUILDIN_FUNC(setiteminfo)
#endif
break;
}
case ITEMINFO_SUBTYPE: i_data->subtype = static_cast<uint8>(value); break;
default:
script_pushint(st, -1);
break;

View File

@ -2059,6 +2059,7 @@ enum e_iteminfo : uint8 {
ITEMINFO_ID,
ITEMINFO_AEGISNAME, // 18
ITEMINFO_ARMORLEVEL,
ITEMINFO_SUBTYPE,
};
class ConstantDatabase : public YamlDatabase {

View File

@ -4180,6 +4180,10 @@
export_constant(AMMO_THROWWEAPON);
export_constant(MAX_AMMO_TYPE);
/* card subtypes */
export_constant(CARD_NORMAL);
export_constant(CARD_ENCHANT);
/* monsterinfo types */
export_constant(MOB_NAME);
export_constant(MOB_LV);
@ -8218,6 +8222,7 @@
export_constant(ITEMINFO_MAGICATTACK);
export_constant(ITEMINFO_ID);
export_constant(ITEMINFO_AEGISNAME);
export_constant(ITEMINFO_SUBTYPE);
/* refine types */
export_constant(REFINE_TYPE_ARMOR);