summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/const.txt1
-rw-r--r--db/pre-re/item_db.conf2
-rw-r--r--db/re/item_db.conf27
-rw-r--r--db/sc_config.txt24
-rw-r--r--src/map/status.c84
-rw-r--r--src/map/status.h3
6 files changed, 80 insertions, 61 deletions
diff --git a/db/const.txt b/db/const.txt
index da0293660..3f0fbdbd0 100644
--- a/db/const.txt
+++ b/db/const.txt
@@ -1315,6 +1315,7 @@ SC_ATKER_ASPD 608
SC_ATKER_MOVESPEED 609
SC_FOOD_CRITICALSUCCESSVALUE 610
+SC_CUP_OF_BOZA 611
e_gasp 0
e_what 1
diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf
index 9a823e16a..3219e02df 100644
--- a/db/pre-re/item_db.conf
+++ b/db/pre-re/item_db.conf
@@ -88886,7 +88886,7 @@ item_db: (
View: 8
},
-// More Bows
+// More Bows
// ===================================================================
{
Id: 18100
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index 8ab0ff10c..66d1d6e30 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -111848,7 +111848,7 @@ item_db: (
},
{
Id: 14619
- AegisName: "Int_Biscuit_Stick"
+ AegisName: "INT_Biscuit_Stick"
Name: "Bar of Knowledge"
Type: 11
Buy: 0
@@ -111869,7 +111869,7 @@ item_db: (
},
{
Id: 14620
- AegisName: "Dex_Biscuit_Stick"
+ AegisName: "DEX_Biscuit_Stick"
Name: "Bar of Tricks"
Type: 11
Buy: 0
@@ -111890,7 +111890,7 @@ item_db: (
},
{
Id: 14621
- AegisName: "Luk_Biscuit_Stick"
+ AegisName: "LUK_Biscuit_Stick"
Name: "Bar of Luck"
Type: 11
Buy: 0
@@ -111909,6 +111909,17 @@ item_db: (
sc_start SC_CRITICALSUCCESSVALUE,60000,rand(11,13);
">
},
+{
+ Id: 14674
+ AegisName: "Cup_Of_Boza"
+ Name: "Cup Of Boza"
+ Type: 2
+ Buy: 20
+ Weight: 10
+ Script: <"
+ sc_start2 SC_CUP_OF_BOZA,120000,10,5;
+ ">
+},
// More Armors
// ===================================================================
@@ -118153,7 +118164,7 @@ item_db: (
{
Id: 17271
AegisName: "VIT_Biscuit_Stick_Box"
- Name: "VIT Biscuit Stick Box"
+ Name: "Bar of Fitness Box"
Type: 18
Buy: 0
Weight: 10
@@ -118171,7 +118182,7 @@ item_db: (
{
Id: 17272
AegisName: "AGI_Biscuit_Stick_Box"
- Name: "AGI Biscuit Stick Box"
+ Name: "Bar of Agility Box"
Type: 18
Buy: 0
Weight: 10
@@ -118189,7 +118200,7 @@ item_db: (
{
Id: 17273
AegisName: "INT_Biscuit_Stick_Box"
- Name: "INT Biscuit Stick Box"
+ Name: "Bar of Knowledge Box"
Type: 18
Buy: 0
Weight: 10
@@ -118207,7 +118218,7 @@ item_db: (
{
Id: 17274
AegisName: "DEX_Biscuit_Stick_Box"
- Name: "DEX Biscuit Stick Box"
+ Name: "Bar of Tricks Box"
Type: 18
Buy: 0
Weight: 10
@@ -118225,7 +118236,7 @@ item_db: (
{
Id: 17275
AegisName: "LUK_Biscuit_Stick_Box"
- Name: "LUK Biscuit Stick Box"
+ Name: "Bar of Luck Box"
Type: 18
Buy: 0
Weight: 10
diff --git a/db/sc_config.txt b/db/sc_config.txt
index 303f8a158..14ba7b500 100644
--- a/db/sc_config.txt
+++ b/db/sc_config.txt
@@ -400,15 +400,15 @@ SC_REBOUND, 18
SC_TELEKINESIS_INTENSE, 18
// Geffen Scrolls
-SC_SKELSCROLL, 90
-SC_DISTRUCTIONSCROLL, 90
-SC_ROYALSCROLL, 90
-SC_IMMUNITYSCROLL, 90
-SC_MYSTICSCROLL, 90
-SC_BATTLESCROLL, 90
-SC_ARMORSCROLL, 90
-SC_FREYJASCROLL, 90
-SC_SOULSCROLL, 90
+SC_SKELSCROLL, 69
+SC_DISTRUCTIONSCROLL, 69
+SC_ROYALSCROLL, 69
+SC_IMMUNITYSCROLL, 69
+SC_MYSTICSCROLL, 69
+SC_BATTLESCROLL, 69
+SC_ARMORSCROLL, 69
+SC_FREYJASCROLL, 69
+SC_SOULSCROLL, 69
// Eden Crystal Synthesis [Needs more info]
//SC_QUEST_BUFF1, ??
@@ -416,9 +416,9 @@ SC_SOULSCROLL, 90
//SC_QUEST_BUFF3, ??
// Geffen Magic Tournament [Needs more info]
-//SC_GEFFEN_MAGIC1, ??
-//SC_GEFFEN_MAGIC2, ??
-//SC_GEFFEN_MAGIC3, ??
+SC_GEFFEN_MAGIC1, 2
+SC_GEFFEN_MAGIC2, 2
+SC_GEFFEN_MAGIC3, 2
//SC_FENRIR_CARD, ??
// Guild Auras should not be saved
diff --git a/src/map/status.c b/src/map/status.c
index a9ae112df..9062e7227 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -829,6 +829,7 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_TARGET_ASPD] = SI_TARGET_ASPD;
status->dbs->IconChangeTable[SC_ATKER_ASPD] = SI_ATKER_ASPD;
status->dbs->IconChangeTable[SC_ATKER_MOVESPEED] = SI_ATKER_MOVESPEED;
+ status->dbs->IconChangeTable[SC_CUP_OF_BOZA] = SI_CUP_OF_BOZA;
// Eden Crystal Synthesis
status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1;
@@ -995,6 +996,7 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_ATKER_ASPD] |= SCB_MAXHP | SCB_ALL;
status->dbs->ChangeFlagTable[SC_ATKER_MOVESPEED] |= SCB_MAXSP | SCB_ALL;
status->dbs->ChangeFlagTable[SC_FOOD_CRITICALSUCCESSVALUE] |= SCB_CRI;
+ status->dbs->ChangeFlagTable[SC_CUP_OF_BOZA] |= SCB_VIT | SCB_ALL;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR;
@@ -2891,33 +2893,33 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
sd->sprecov_rate = 0;
// Anti-element and anti-race
- if((skill_lv=pc->checkskill(sd,CR_TRUST))>0)
- sd->subele[ELE_HOLY] += skill_lv*5;
- if((skill_lv=pc->checkskill(sd,BS_SKINTEMPER))>0) {
+ if ((skill_lv = pc->checkskill(sd, CR_TRUST)) > 0)
+ sd->subele[ELE_HOLY] += skill_lv * 5;
+ if ((skill_lv = pc->checkskill(sd, BS_SKINTEMPER)) > 0) {
sd->subele[ELE_NEUTRAL] += skill_lv;
sd->subele[ELE_FIRE] += skill_lv*4;
}
- if((skill_lv=pc->checkskill(sd,NC_RESEARCHFE))>0) {
- sd->subele[ELE_EARTH] += skill_lv*10;
- sd->subele[ELE_FIRE] += skill_lv*10;
+ if ((skill_lv = pc->checkskill(sd, NC_RESEARCHFE)) > 0) {
+ sd->subele[ELE_EARTH] += skill_lv * 10;
+ sd->subele[ELE_FIRE] += skill_lv * 10;
}
- if((skill_lv=pc->checkskill(sd,SA_DRAGONOLOGY))>0 ) {
+ if ((skill_lv = pc->checkskill(sd, SA_DRAGONOLOGY)) > 0) {
#ifdef RENEWAL
- skill_lv = skill_lv*2;
+ skill_lv = skill_lv * 2;
#else
- skill_lv = skill_lv*4;
+ skill_lv = skill_lv * 4;
#endif
- sd->right_weapon.addrace[RC_DRAGON]+=skill_lv;
- sd->left_weapon.addrace[RC_DRAGON]+=skill_lv;
- sd->magic_addrace[RC_DRAGON]+=skill_lv;
+ sd->right_weapon.addrace[RC_DRAGON] += skill_lv;
+ sd->left_weapon.addrace[RC_DRAGON] += skill_lv;
+ sd->magic_addrace[RC_DRAGON] += skill_lv;
#ifdef RENEWAL
sd->race_tolerance[RC_DRAGON] += skill_lv;
#else
- sd->subrace[RC_DRAGON]+=skill_lv;
+ sd->subrace[RC_DRAGON] += skill_lv;
#endif
}
- if( (skill_lv = pc->checkskill(sd, AB_EUCHARISTICA)) > 0 ) {
+ if ((skill_lv = pc->checkskill(sd, AB_EUCHARISTICA)) > 0) {
sd->right_weapon.addrace[RC_DEMON] += skill_lv;
sd->right_weapon.addele[ELE_DARK] += skill_lv;
sd->left_weapon.addrace[RC_DEMON] += skill_lv;
@@ -2932,12 +2934,12 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
sd->subele[ELE_DARK] += skill_lv;
}
- if(sc->count) {
- if(sc->data[SC_CONCENTRATION]) { //Update the card-bonus data
- sc->data[SC_CONCENTRATION]->val3 = sd->param_bonus[1]; //Agi
- sc->data[SC_CONCENTRATION]->val4 = sd->param_bonus[4]; //Dex
+ if (sc->count) {
+ if (sc->data[SC_CONCENTRATION]) { // Update the card-bonus data
+ sc->data[SC_CONCENTRATION]->val3 = sd->param_bonus[1]; // Agi
+ sc->data[SC_CONCENTRATION]->val4 = sd->param_bonus[4]; // Dex
}
- if(sc->data[SC_SIEGFRIED]){
+ if (sc->data[SC_SIEGFRIED]){
i = sc->data[SC_SIEGFRIED]->val2;
sd->subele[ELE_WATER] += i;
sd->subele[ELE_EARTH] += i;
@@ -2949,7 +2951,7 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
sd->subele[ELE_GHOST] += i;
sd->subele[ELE_UNDEAD] += i;
}
- if(sc->data[SC_PROVIDENCE]){
+ if (sc->data[SC_PROVIDENCE]){
sd->subele[ELE_HOLY] += sc->data[SC_PROVIDENCE]->val2;
#ifdef RENEWAL
sd->race_tolerance[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2;
@@ -2957,48 +2959,48 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
sd->subrace[RC_DEMON] += sc->data[SC_PROVIDENCE]->val2;
#endif
}
- if(sc->data[SC_ARMORPROPERTY]) {
+ if (sc->data[SC_ARMORPROPERTY]) {
//This status change should grant card-type elemental resist.
sd->subele[ELE_WATER] += sc->data[SC_ARMORPROPERTY]->val1;
sd->subele[ELE_EARTH] += sc->data[SC_ARMORPROPERTY]->val2;
sd->subele[ELE_FIRE] += sc->data[SC_ARMORPROPERTY]->val3;
sd->subele[ELE_WIND] += sc->data[SC_ARMORPROPERTY]->val4;
}
- if(sc->data[SC_ARMOR_RESIST]) { // Undead Scroll
+ if (sc->data[SC_ARMOR_RESIST]) { // Undead Scroll
sd->subele[ELE_WATER] += sc->data[SC_ARMOR_RESIST]->val1;
sd->subele[ELE_EARTH] += sc->data[SC_ARMOR_RESIST]->val2;
sd->subele[ELE_FIRE] += sc->data[SC_ARMOR_RESIST]->val3;
sd->subele[ELE_WIND] += sc->data[SC_ARMOR_RESIST]->val4;
}
- if( sc->data[SC_FIRE_CLOAK_OPTION] ) {
+ if (sc->data[SC_FIRE_CLOAK_OPTION]) {
i = sc->data[SC_FIRE_CLOAK_OPTION]->val2;
sd->subele[ELE_FIRE] += i;
sd->subele[ELE_WATER] -= i;
}
- if( sc->data[SC_WATER_DROP_OPTION] ) {
+ if (sc->data[SC_WATER_DROP_OPTION]) {
i = sc->data[SC_WATER_DROP_OPTION]->val2;
sd->subele[ELE_WATER] += i;
sd->subele[ELE_WIND] -= i;
}
- if( sc->data[SC_WIND_CURTAIN_OPTION] ) {
+ if (sc->data[SC_WIND_CURTAIN_OPTION]) {
i = sc->data[SC_WIND_CURTAIN_OPTION]->val2;
sd->subele[ELE_WIND] += i;
sd->subele[ELE_EARTH] -= i;
}
- if( sc->data[SC_STONE_SHIELD_OPTION] ) {
+ if (sc->data[SC_STONE_SHIELD_OPTION]) {
i = sc->data[SC_STONE_SHIELD_OPTION]->val2;
sd->subele[ELE_EARTH] += i;
sd->subele[ELE_FIRE] -= i;
}
- if( sc->data[SC_MTF_MLEATKED] )
+ if (sc->data[SC_MTF_MLEATKED])
sd->subele[ELE_NEUTRAL] += 2;
- if( sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3 )
+ if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
sd->magic_addele[ELE_FIRE] += 25;
- if( sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 3 )
+ if (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 3)
sd->magic_addele[ELE_WATER] += 25;
- if( sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 3 )
+ if (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 3)
sd->magic_addele[ELE_WIND] += 25;
- if( sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 3 )
+ if (sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 3)
sd->magic_addele[ELE_EARTH] += 25;
// Geffen Scrolls
@@ -3025,12 +3027,12 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
#endif
}
if (sc->data[SC_IMMUNITYSCROLL])
- sd->subele[ELE_NEUTRAL] += sd->subele[ELE_NEUTRAL] * sc->data[SC_IMMUNITYSCROLL]->val1 / 100;
+ sd->subele[ELE_NEUTRAL] += sc->data[SC_IMMUNITYSCROLL]->val1;
// Geffen Magic Tournament
if (sc->data[SC_GEFFEN_MAGIC1]) {
- sd->right_weapon.addrace[RC_DEMIHUMAN] += sc->data[SC_DISTRUCTIONSCROLL]->val1;
- sd->left_weapon.addrace[RC_DEMIHUMAN] += sc->data[SC_DISTRUCTIONSCROLL]->val1;
+ sd->right_weapon.addrace[RC_DEMIHUMAN] += sc->data[SC_GEFFEN_MAGIC1]->val1;
+ sd->left_weapon.addrace[RC_DEMIHUMAN] += sc->data[SC_GEFFEN_MAGIC1]->val1;
}
if (sc->data[SC_GEFFEN_MAGIC2])
sd->magic_addrace[RC_DEMIHUMAN] += sc->data[SC_GEFFEN_MAGIC2]->val1;
@@ -3040,7 +3042,9 @@ int status_calc_pc_(struct map_session_data* sd, enum e_status_calc_opt opt) {
#else
sd->subrace[RC_DEMIHUMAN] += sc->data[SC_GEFFEN_MAGIC3]->val1;
#endif
- }
+ }
+ if (sc->data[SC_CUP_OF_BOZA])
+ sd->subele[ELE_FIRE] += sc->data[SC_CUP_OF_BOZA]->val2;
}
status_cpy(&sd->battle_status, bstatus);
@@ -4387,9 +4391,10 @@ unsigned short status_calc_vit(struct block_list *bl, struct status_change *sc,
vit -= sc->data[SC_STOMACHACHE]->val1;
if(sc->data[SC_KYOUGAKU])
vit -= sc->data[SC_KYOUGAKU]->val3;
-
if(sc->data[SC_NOEQUIPARMOR])
- vit -= vit * sc->data[SC_NOEQUIPARMOR]->val2/100;
+ vit -= vit * sc->data[SC_NOEQUIPARMOR]->val2 / 100;
+ if (sc->data[SC_CUP_OF_BOZA])
+ vit += sc->data[SC_CUP_OF_BOZA]->val1;
return (unsigned short)cap_value(vit,0,USHRT_MAX);
}
@@ -5409,10 +5414,11 @@ unsigned short status_calc_speed(struct block_list *bl, struct status_change *sc
val = max( val, sc->data[SC_POWER_OF_GAIA]->val2 );
if( sc->data[SC_MELON_BOMB] )
val = max( val, sc->data[SC_MELON_BOMB]->val1 );
- if( sc->data[SC_MARSHOFABYSS] ) // It stacks to other statuses so always put this at the end.
- val = max( 50, val + 10 * sc->data[SC_MARSHOFABYSS]->val1 );
if (sc->data[SC_STOMACHACHE])
val = max(val, 50);
+
+ if( sc->data[SC_MARSHOFABYSS] ) // It stacks to other statuses so always put this at the end.
+ val = max( 50, val + 10 * sc->data[SC_MARSHOFABYSS]->val1 );
if( sd && sd->bonus.speed_rate + sd->bonus.speed_add_rate > 0 ) // permanent item-based speedup
val = max( val, sd->bonus.speed_rate + sd->bonus.speed_add_rate );
diff --git a/src/map/status.h b/src/map/status.h
index 99916c291..a9538724d 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -775,6 +775,7 @@ typedef enum sc_type {
SC_ATKER_MOVESPEED,
SC_FOOD_CRITICALSUCCESSVALUE, // 610
+ SC_CUP_OF_BOZA,
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;
@@ -1540,7 +1541,7 @@ enum si_type {
//SI_JITTER_BUFF8 = 748,
//SI_JITTER_BUFF9 = 749,
//SI_JITTER_BUFF10 = 750,
- //SI_CUP_OF_BOZA = 751,
+ SI_CUP_OF_BOZA = 751,
SI_B_TRAP = 752,
SI_E_CHAIN = 753,
SI_E_QD_SHOT_READY = 754,