From 5bdf402cff0d71b3791ee7782280b8889a51e10e Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 10 Jul 2016 16:22:29 +0300 Subject: Add sc_config.txt flag for always visible effects. Remove hardcoded visible effects from status.c and add visible flag into sc_config.txt --- src/map/status.c | 44 ++++---------------------------------------- src/map/status.h | 17 +++++++++-------- 2 files changed, 13 insertions(+), 48 deletions(-) (limited to 'src/map') diff --git a/src/map/status.c b/src/map/status.c index 83d8943c9..e5fdd26ea 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1170,46 +1170,6 @@ void initChangeTables(void) { status->dbs->ChangeFlagTable[SC_MAGICAL_FEATHER] |= SCB_NONE; status->dbs->ChangeFlagTable[SC_BLOSSOM_FLUTTERING] |= SCB_NONE; - /* status->dbs->DisplayType Table [Ind/Hercules] */ - status->dbs->DisplayType[SC_ALL_RIDING] = true; - status->dbs->DisplayType[SC_PUSH_CART] = true; - status->dbs->DisplayType[SC_SUMMON1] = true; - status->dbs->DisplayType[SC_SUMMON2] = true; - status->dbs->DisplayType[SC_SUMMON3] = true; - status->dbs->DisplayType[SC_SUMMON4] = true; - status->dbs->DisplayType[SC_SUMMON5] = true; - status->dbs->DisplayType[SC_CAMOUFLAGE] = true; - status->dbs->DisplayType[SC_DUPLELIGHT] = true; - status->dbs->DisplayType[SC_ORATIO] = true; - status->dbs->DisplayType[SC_FROSTMISTY] = true; - status->dbs->DisplayType[SC_VENOMIMPRESS] = true; - status->dbs->DisplayType[SC_HALLUCINATIONWALK] = true; - status->dbs->DisplayType[SC_ROLLINGCUTTER] = true; - status->dbs->DisplayType[SC_BANDING] = true; - status->dbs->DisplayType[SC_COLD] = true; - status->dbs->DisplayType[SC_DEEP_SLEEP] = true; - status->dbs->DisplayType[SC_CURSEDCIRCLE_ATKER] = true; - status->dbs->DisplayType[SC_CURSEDCIRCLE_TARGET] = true; - status->dbs->DisplayType[SC_BLOOD_SUCKER] = true; - status->dbs->DisplayType[SC__SHADOWFORM] = true; - status->dbs->DisplayType[SC_MONSTER_TRANSFORM] = true; - - // Costumes - status->dbs->DisplayType[SC_MOONSTAR] = true; - status->dbs->DisplayType[SC_SUPER_STAR] = true; - status->dbs->DisplayType[SC_STRANGELIGHTS] = true; - status->dbs->DisplayType[SC_DECORATION_OF_MUSIC] = true; - status->dbs->DisplayType[SC_LJOSALFAR] = true; - status->dbs->DisplayType[SC_MERMAID_LONGING] = true; - status->dbs->DisplayType[SC_HAT_EFFECT] = true; - status->dbs->DisplayType[SC_FLOWERSMOKE] = true; - status->dbs->DisplayType[SC_FSTONE] = true; - status->dbs->DisplayType[SC_HAPPINESS_STAR] = true; - status->dbs->DisplayType[SC_MAPLE_FALLS] = true; - status->dbs->DisplayType[SC_TIME_ACCESSORY] = true; - status->dbs->DisplayType[SC_MAGICAL_FEATHER] = true; - status->dbs->DisplayType[SC_BLOSSOM_FLUTTERING] = true; - if( !battle_config.display_hallucination ) //Disable Hallucination. status->dbs->IconChangeTable[SC_ILLUSION] = SI_BLANK; #undef add_sc @@ -13006,6 +12966,10 @@ bool status_readdb_scconfig(char* fields[], int columns, int current) { } status->dbs->sc_conf[val] = (int)strtol(fields[1], NULL, 0); + if (status->dbs->sc_conf[val] & SC_VISIBLE) + { + status->dbs->DisplayType[val] = true; + } return true; } diff --git a/src/map/status.h b/src/map/status.h index dbb507bd1..e4a326e88 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -74,14 +74,15 @@ enum refine_type { * @see db/sc_config.txt for more information **/ typedef enum sc_conf_type { - SC_NO_REM_DEATH = 0x01, - SC_NO_SAVE = 0x02, - SC_NO_DISPELL = 0x04, - SC_NO_CLEARANCE = 0x08, - SC_BUFF = 0x10, - SC_DEBUFF = 0x20, - SC_MADO_NO_RESET = 0x40, - SC_NO_CLEAR = 0x80, + SC_NO_REM_DEATH = 0x001, + SC_NO_SAVE = 0x002, + SC_NO_DISPELL = 0x004, + SC_NO_CLEARANCE = 0x008, + SC_BUFF = 0x010, + SC_DEBUFF = 0x020, + SC_MADO_NO_RESET = 0x040, + SC_NO_CLEAR = 0x080, + SC_VISIBLE = 0x100 } sc_conf_type; /** -- cgit v1.2.3-70-g09d2 From 26881acaf4aa3bcc0296d382f333bce57fda82a7 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 10 Jul 2016 16:27:17 +0300 Subject: Use different interface members for start sc effects and show started effect to other. Added interface member clif->sc_continue for already started effects. --- src/map/clif.c | 5 +++-- src/map/clif.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src/map') diff --git a/src/map/clif.c b/src/map/clif.c index 0f6e985fd..9619a7201 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -1455,7 +1455,7 @@ bool clif_spawn(struct block_list *bl) if (sd->bg_id != 0 && map->list[sd->bl.m].flag.battleground) clif->sendbgemblem_area(sd); for (i = 0; i < sd->sc_display_count; i++) { - clif->sc_load(&sd->bl, sd->bl.id,AREA,status->dbs->IconChangeTable[sd->sc_display[i]->type],sd->sc_display[i]->val1,sd->sc_display[i]->val2,sd->sc_display[i]->val3); + clif->sc_continue(&sd->bl, sd->bl.id,AREA,status->dbs->IconChangeTable[sd->sc_display[i]->type],sd->sc_display[i]->val1,sd->sc_display[i]->val2,sd->sc_display[i]->val3); } if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0) clif->spiritcharm(sd); @@ -4186,7 +4186,7 @@ void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* ds clif->charm_single(sd->fd, dstsd); for( i = 0; i < dstsd->sc_display_count; i++ ) { - clif->sc_load(&sd->bl,dstsd->bl.id,SELF,status->dbs->IconChangeTable[dstsd->sc_display[i]->type],dstsd->sc_display[i]->val1,dstsd->sc_display[i]->val2,dstsd->sc_display[i]->val3); + clif->sc_continue(&sd->bl,dstsd->bl.id,SELF,status->dbs->IconChangeTable[dstsd->sc_display[i]->type],dstsd->sc_display[i]->val1,dstsd->sc_display[i]->val2,dstsd->sc_display[i]->val3); } if( (sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting. (sd->bg_id && sd->bg_id == dstsd->bg_id) || //BattleGround @@ -19319,6 +19319,7 @@ void clif_defaults(void) { clif->autoshadowspell_list = clif_autoshadowspell_list; clif->skill_itemlistwindow = clif_skill_itemlistwindow; clif->sc_load = clif_status_change2; + clif->sc_continue = clif_status_change2; clif->sc_end = clif_status_change_end; clif->initialstatus = clif_initialstatus; clif->cooldown_list = clif_skill_cooldown_list; diff --git a/src/map/clif.h b/src/map/clif.h index df8b8f59c..2e324d28c 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -791,6 +791,7 @@ struct clif_interface { int (*autoshadowspell_list) (struct map_session_data *sd); int (*skill_itemlistwindow) ( struct map_session_data *sd, uint16 skill_id, uint16 skill_lv ); void (*sc_load) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3); + void (*sc_continue) (struct block_list *bl, int tid, enum send_target target, int type, int val1, int val2, int val3); void (*sc_end) (struct block_list *bl, int tid, enum send_target target, int type); void (*initialstatus) (struct map_session_data *sd); void (*cooldown_list) (int fd, struct skill_cd* cd); -- cgit v1.2.3-70-g09d2