diff options
-rw-r--r-- | src/common/mmo.h | 3 | ||||
-rw-r--r-- | src/map/elemental.c | 46 | ||||
-rw-r--r-- | src/map/elemental.h | 22 | ||||
-rw-r--r-- | src/map/skill.c | 24 |
4 files changed, 61 insertions, 34 deletions
diff --git a/src/common/mmo.h b/src/common/mmo.h index ff41c00d8..3c556636c 100644 --- a/src/common/mmo.h +++ b/src/common/mmo.h @@ -196,9 +196,6 @@ #define MAX_ELEMENTALSKILL 42 #define EL_SKILLBASE 8401 #define MAX_ELESKILLTREE 3 -#define MAX_ELEMENTAL_CLASS 12 -#define EL_CLASS_BASE 2114 -#define EL_CLASS_MAX (EL_CLASS_BASE+MAX_ELEMENTAL_CLASS-1) // The following system marks a different job ID system used by the map server, // which makes a lot more sense than the normal one. [Skotlex] diff --git a/src/map/elemental.c b/src/map/elemental.c index 36dee32ba..a6fe94ab2 100644 --- a/src/map/elemental.c +++ b/src/map/elemental.c @@ -121,28 +121,32 @@ int elemental_create(struct map_session_data *sd, int class_, unsigned int lifet //per individual bonuses switch(db->class_){ - case 2114: - case 2115: - case 2116: //ATK + (Summon Agni Skill Level x 20) / HIT + (Summon Agni Skill Level x 10) + case ELEID_EL_AGNI_S: + case ELEID_EL_AGNI_M: + case ELEID_EL_AGNI_L: + //ATK + (Summon Agni Skill Level x 20) / HIT + (Summon Agni Skill Level x 10) ele.atk += summon_level * 20; ele.atk2 += summon_level * 20; ele.hit += summon_level * 10; break; - case 2117: - case 2118: - case 2119: //MDEF + (Summon Aqua Skill Level x 10) / MATK + (Summon Aqua Skill Level x 20) + case ELEID_EL_AQUA_S: + case ELEID_EL_AQUA_M: + case ELEID_EL_AQUA_L: + //MDEF + (Summon Aqua Skill Level x 10) / MATK + (Summon Aqua Skill Level x 20) ele.mdef += summon_level * 10; ele.matk += summon_level * 20; break; - case 2120: - case 2121: - case 2122: //FLEE + (Summon Ventus Skill Level x 20) / MATK + (Summon Ventus Skill Level x 10) + case ELEID_EL_VENTUS_S: + case ELEID_EL_VENTUS_M: + case ELEID_EL_VENTUS_L: + //FLEE + (Summon Ventus Skill Level x 20) / MATK + (Summon Ventus Skill Level x 10) ele.flee += summon_level * 20; ele.matk += summon_level * 10; break; - case 2123: - case 2124: - case 2125: //DEF + (Summon Tera Skill Level x 25) / ATK + (Summon Tera Skill Level x 5) + case ELEID_EL_TERA_S: + case ELEID_EL_TERA_M: + case ELEID_EL_TERA_L: + //DEF + (Summon Tera Skill Level x 25) / ATK + (Summon Tera Skill Level x 5) ele.def += summon_level * 25; ele.atk += summon_level * 5; ele.atk2 += summon_level * 5; @@ -687,17 +691,17 @@ int elemental_ai_sub_timer(struct elemental_data *ed, struct map_session_data *s if( DIFF_TICK(tick,ed->last_spdrain_time) >= 10000 ){// Drain SP every 10 seconds int sp = 5; - switch(ed->vd->class_){ - case 2115: - case 2118: - case 2121: - case 2124: + switch (ed->vd->class_) { + case ELEID_EL_AGNI_M: + case ELEID_EL_AQUA_M: + case ELEID_EL_VENTUS_M: + case ELEID_EL_TERA_M: sp = 8; break; - case 2116: - case 2119: - case 2122: - case 2125: + case ELEID_EL_AGNI_L: + case ELEID_EL_AQUA_L: + case ELEID_EL_VENTUS_L: + case ELEID_EL_TERA_L: sp = 11; break; } diff --git a/src/map/elemental.h b/src/map/elemental.h index 1618c0d15..1a98670e0 100644 --- a/src/map/elemental.h +++ b/src/map/elemental.h @@ -29,6 +29,25 @@ #include <stdarg.h> /** + * Enums + */ +/// Elemental IDs +enum elemental_id { + ELEID_EL_AGNI_S = 2114, ///< EL_AGNI_S / Agni + ELEID_EL_AGNI_M = 2115, ///< EL_AGNI_M / Agni + ELEID_EL_AGNI_L = 2116, ///< EL_AGNI_L / Agni + ELEID_EL_AQUA_S = 2117, ///< EL_AQUA_S / Aqua + ELEID_EL_AQUA_M = 2118, ///< EL_AQUA_M / Aqua + ELEID_EL_AQUA_L = 2119, ///< EL_AQUA_L / Aqua + ELEID_EL_VENTUS_S = 2120, ///< EL_VENTUS_S / Ventus + ELEID_EL_VENTUS_M = 2121, ///< EL_VENTUS_M / Ventus + ELEID_EL_VENTUS_L = 2122, ///< EL_VENTUS_L / Ventus + ELEID_EL_TERA_S = 2123, ///< EL_TERA_S / Tera + ELEID_EL_TERA_M = 2124, ///< EL_TERA_M / Tera + ELEID_EL_TERA_L = 2125, ///< EL_TERA_L / Tera +}; + +/** * Defines **/ #define MIN_ELETHINKTIME 100 @@ -40,6 +59,9 @@ #define EL_SKILLMODE_PASIVE 0x1 #define EL_SKILLMODE_ASSIST 0x2 #define EL_SKILLMODE_AGGRESSIVE 0x4 +#define MAX_ELEMENTAL_CLASS 12 +#define EL_CLASS_BASE ELEID_EL_AGNI_S +#define EL_CLASS_MAX (EL_CLASS_BASE+MAX_ELEMENTAL_CLASS-1) #define elemental_stop_walking(ed, type) (unit->stop_walking(&(ed)->bl, (type))) #define elemental_stop_attack(ed) (unit->stop_attack(&(ed)->bl)) diff --git a/src/map/skill.c b/src/map/skill.c index 0422e277f..dc3ebe62e 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -9423,13 +9423,17 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin if( !sd->ed ) break; - switch(sd->ed->db->class_){ - case 2115:case 2124: - case 2118:case 2121: + switch (sd->ed->db->class_) { + case ELEID_EL_AGNI_M: + case ELEID_EL_AQUA_M: + case ELEID_EL_VENTUS_M: + case ELEID_EL_TERA_M: duration = 6000; break; - case 2116:case 2119: - case 2122:case 2125: + case ELEID_EL_AGNI_L: + case ELEID_EL_AQUA_L: + case ELEID_EL_VENTUS_L: + case ELEID_EL_TERA_L: duration = 9000; break; } @@ -18570,11 +18574,11 @@ int skill_block_check(struct block_list *bl, sc_type type , uint16 skill_id) { int skill_get_elemental_type( uint16 skill_id , uint16 skill_lv ) { int type = 0; - switch( skill_id ) { - case SO_SUMMON_AGNI: type = 2114; break; - case SO_SUMMON_AQUA: type = 2117; break; - case SO_SUMMON_VENTUS: type = 2120; break; - case SO_SUMMON_TERA: type = 2123; break; + switch (skill_id) { + case SO_SUMMON_AGNI: type = ELEID_EL_AGNI_S; break; + case SO_SUMMON_AQUA: type = ELEID_EL_AQUA_S; break; + case SO_SUMMON_VENTUS: type = ELEID_EL_VENTUS_S; break; + case SO_SUMMON_TERA: type = ELEID_EL_TERA_S; break; } type += skill_lv - 1; |