diff options
Diffstat (limited to 'src/map/skill.h')
-rw-r--r-- | src/map/skill.h | 270 |
1 files changed, 58 insertions, 212 deletions
diff --git a/src/map/skill.h b/src/map/skill.h index a8bf30e3c..67d7a906c 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -1,10 +1,10 @@ -// $Id: skill.h,v 1.5 2004/11/26 5:47:12 PM Celestia Exp $ +// $Id: skill.h,v 1.5 2004/12/23 7:43:16 PM Celestia $ #ifndef _SKILL_H_ #define _SKILL_H_ #include "map.h" -#define MAX_SKILL_DB 515 +#define MAX_SKILL_DB 750 #define MAX_SKILL_PRODUCE_DB 150 #define MAX_PRODUCE_RESOURCE 7 #define MAX_SKILL_ARROW_DB 150 @@ -23,7 +23,14 @@ struct skill_db { int weapon,state,spiritball[MAX_SKILL_LEVEL]; int itemid[10],amount[10]; int castnodex[MAX_SKILL_LEVEL]; + int delaynodex[MAX_SKILL_LEVEL]; int nocast; + int unit_id[2]; + int unit_layout_type[MAX_SKILL_LEVEL]; + int unit_range; + int unit_interval; + int unit_target; + int unit_flag; }; extern struct skill_db skill_db[MAX_SKILL_DB]; @@ -34,6 +41,24 @@ struct skill_name_db { }; extern const struct skill_name_db skill_names[]; +#define MAX_SKILL_UNIT_LAYOUT 50 +#define MAX_SQUARE_LAYOUT 5 // 11*11のユニット配置が最大 +#define MAX_SKILL_UNIT_COUNT ((MAX_SQUARE_LAYOUT*2+1)*(MAX_SQUARE_LAYOUT*2+1)) +struct skill_unit_layout { + int count; + int dx[MAX_SKILL_UNIT_COUNT]; + int dy[MAX_SKILL_UNIT_COUNT]; +}; + +enum { + UF_DEFNOTENEMY = 0x0001, // defnotenemy 設定でBCT_NOENEMYに切り替え + UF_NOREITERATION = 0x0002, // 重複置き禁止 + UF_NOFOOTSET = 0x0004, // 足元置き禁止 + UF_NOOVERLAP = 0x0008, // ユニット効果が重複しない + UF_DANCE = 0x0100, // ダンススキル + UF_ENSEMBLE = 0x0200, // 合奏スキル +}; + // アイテム作成デ?タベ?ス struct skill_produce_db { int nameid, trigger; @@ -57,6 +82,9 @@ struct skill_abra_db { }; extern struct skill_abra_db skill_abra_db[MAX_SKILL_ABRA_DB]; +extern int enchant_eff[5]; +extern int deluge_eff[5]; + struct block_list; struct map_session_data; struct skill_unit; @@ -86,6 +114,7 @@ int skill_get_unit_id(int id,int flag); int skill_get_inf2( int id ); int skill_get_maxcount( int id ); int skill_get_blewcount( int id ,int lv ); +int skill_get_unit_flag( int id ); int skill_tree_get_max( int id, int b_class ); // Celest // スキルの使用 @@ -109,9 +138,6 @@ int skill_delunit(struct skill_unit *unit); struct skill_unit_group *skill_initunitgroup(struct block_list *src, int count,int skillid,int skilllv,int unit_id); int skill_delunitgroup(struct skill_unit_group *group); -struct skill_unit_group_tickset *skill_unitgrouptickset_search( - struct block_list *bl,int group_id); -int skill_unitgrouptickset_delete(struct block_list *bl,int group_id); int skill_clear_unitgroup(struct block_list *src); int skill_unit_ondamaged(struct skill_unit *src,struct block_list *bl, @@ -119,21 +145,25 @@ int skill_unit_ondamaged(struct skill_unit *src,struct block_list *bl, int skill_castfix( struct block_list *bl, int time ); int skill_delayfix( struct block_list *bl, int time ); -int skill_check_unit_range(int m,int x,int y,int range,int skillid); -int skill_check_unit_range2(int m,int x,int y,int range); +int skill_check_unit_range(int m,int x,int y,int skillid, int skilllv); +int skill_check_unit_range2(struct block_list *bl,int m,int x,int y,int skillid, int skilllv); // -- moonsoul (added skill_check_unit_cell) int skill_check_unit_cell(int skillid,int m,int x,int y,int unit_id); int skill_unit_out_all( struct block_list *bl,unsigned int tick,int range); -int skill_unit_move( struct block_list *bl,unsigned int tick,int range); +int skill_unit_move(struct block_list *bl,unsigned int tick,int flag); int skill_unit_move_unit_group( struct skill_unit_group *group, int m,int dx,int dy); struct skill_unit_group *skill_check_dancing( struct block_list *src ); void skill_stop_dancing(struct block_list *src, int flag); +// Guild skills [celest] +int skill_guildaura_sub (struct block_list *bl,va_list ap); + // 詠唱キャンセル int skill_castcancel(struct block_list *bl,int type); int skill_gangsterparadise(struct map_session_data *sd ,int type); +int skill_check_moonlit (struct block_list *bl, int dx, int dy); void skill_brandishspear_first(struct square *tc,int dir,int x,int y); void skill_brandishspear_dir(struct square *tc,int dir,int are); int skill_autospell(struct map_session_data *md,int skillid); @@ -142,19 +172,13 @@ void skill_devotion2(struct block_list *bl,int crusader); int skill_devotion3(struct block_list *bl,int target); void skill_devotion_end(struct map_session_data *md,struct map_session_data *sd,int target); -#define skill_calc_heal(bl,skill_lv) (( battle_get_lv(bl)+battle_get_int(bl) )/8 *(4+ skill_lv*8)) +#define skill_calc_heal(bl,skill_lv) (( status_get_lv(bl)+status_get_int(bl) )/8 *(4+ skill_lv*8)) // その他 int skill_check_cloaking(struct block_list *bl); -int skill_type_cloaking(struct block_list *bl); -int skill_is_danceskill(int id); // ステ?タス異常 -int skill_status_change_start(struct block_list *bl,int type,int val1,int val2,int val3,int val4,int tick,int flag); -int skill_status_change_timer(int tid, unsigned int tick, int id, int data); -int skill_encchant_eremental_end(struct block_list *bl, int type); -int skill_status_change_end( struct block_list* bl , int type,int tid ); -int skill_status_change_clear(struct block_list *bl,int type); +int skill_enchant_elemental_end(struct block_list *bl, int type); int skillnotok(int skillid, struct map_session_data *sd); // アイテム作成 @@ -180,201 +204,6 @@ enum { ST_RECOV_WEIGHT_RATE,ST_MOVE_ENABLE,ST_WATER, }; -enum { // struct map_session_data の status_changeの番?テ?ブル -// SC_SENDMAX未?はクライアントへの通知あり。 -// 2-2次職の値はなんかめちゃくちゃっぽいので暫定。たぶん?更されます。 - SC_SENDMAX =128, - SC_PROVOKE = 0, - SC_ENDURE = 1, - SC_TWOHANDQUICKEN = 2, - SC_CONCENTRATE = 3, - SC_HIDING = 4, - SC_CLOAKING = 5, - SC_ENCPOISON = 6, - SC_POISONREACT = 7, - SC_QUAGMIRE = 8, - SC_ANGELUS = 9, - SC_BLESSING =10, - SC_SIGNUMCRUCIS =11, - SC_INCREASEAGI =12, - SC_DECREASEAGI =13, - SC_SLOWPOISON =14, - SC_IMPOSITIO =15, - SC_SUFFRAGIUM =16, - SC_ASPERSIO =17, - SC_BENEDICTIO =18, - SC_KYRIE =19, - SC_MAGNIFICAT =20, - SC_GLORIA =21, - SC_AETERNA =22, - SC_ADRENALINE =23, - SC_WEAPONPERFECTION =24, - SC_OVERTHRUST =25, - SC_MAXIMIZEPOWER =26, - SC_RIDING =27, - SC_FALCON =28, - SC_TRICKDEAD =29, - SC_LOUD =30, - SC_ENERGYCOAT =31, - SC_HALLUCINATION =34, - SC_WEIGHT50 =35, - SC_WEIGHT90 =36, - SC_SPEEDPOTION0 =37, - SC_SPEEDPOTION1 =38, - SC_SPEEDPOTION2 =39, - SC_STRIPWEAPON =50, - SC_STRIPSHIELD =51, - SC_STRIPARMOR =52, - SC_STRIPHELM =53, - SC_CP_WEAPON =54, - SC_CP_SHIELD =55, - SC_CP_ARMOR =56, - SC_CP_HELM =57, - SC_AUTOGUARD =58, - SC_REFLECTSHIELD =59, - SC_DEVOTION =60, - SC_PROVIDENCE =61, - SC_DEFENDER =62, - SC_AUTOSPELL =65, - SC_SPEARSQUICKEN =68, - SC_EXPLOSIONSPIRITS =86, - SC_STEELBODY =87, - SC_COMBO =89, - SC_FLAMELAUNCHER =90, - SC_FROSTWEAPON =91, - SC_LIGHTNINGLOADER =92, - SC_SEISMICWEAPON =93, - SC_AURABLADE =103, /* オ?ラブレ?ド */ - SC_PARRYING =104, /* パリイング */ - SC_CONCENTRATION =105, /* コンセントレ?ション */ - SC_TENSIONRELAX =106, /* テンションリラックス */ - SC_BERSERK =107, /* バ?サ?ク */ - SC_ASSUMPTIO =110, /* アシャンプティオ */ - SC_MAGICPOWER =113, /* 魔法力?幅 */ - SC_TRUESIGHT =115, /* トゥル?サイト */ - SC_WINDWALK =116, /* ウインドウォ?ク */ - SC_MELTDOWN =117, /* メルトダウン */ - SC_CARTBOOST =118, /* カ?トブ?スト */ - SC_REJECTSWORD =120, /* リジェクトソ?ド */ - SC_MARIONETTE =121, /* マリオネットコントロ?ル */ - SC_HEADCRUSH =124, /* ヘッドクラッシュ */ - SC_JOINTBEAT =125, /* ジョイントビ?ト */ - - SC_STONE =128, - SC_FREEZE =129, - SC_STAN =130, - SC_SLEEP =131, - SC_POISON =132, - SC_CURSE =133, - SC_SILENCE =134, - SC_CONFUSION =135, - SC_BLIND =136, - SC_DIVINA = SC_SILENCE, - - SC_SAFETYWALL =140, - SC_PNEUMA =141, - SC_WATERBALL =142, - SC_ANKLE =143, - SC_DANCING =144, - SC_KEEPING =145, - SC_BARRIER =146, - - SC_MAGICROD =149, - SC_SIGHT =150, - SC_RUWACH =151, - SC_AUTOCOUNTER =152, - SC_VOLCANO =153, - SC_DELUGE =154, - SC_VIOLENTGALE =155, - SC_BLADESTOP_WAIT =156, - SC_BLADESTOP =157, - SC_EXTREMITYFIST =158, - SC_GRAFFITI =159, - - SC_LULLABY =160, - SC_RICHMANKIM =161, - SC_ETERNALCHAOS =162, - SC_DRUMBATTLE =163, - SC_NIBELUNGEN =164, - SC_ROKISWEIL =165, - SC_INTOABYSS =166, - SC_SIEGFRIED =167, - SC_DISSONANCE =168, - SC_WHISTLE =169, - SC_ASSNCROS =170, - SC_POEMBRAGI =171, - SC_APPLEIDUN =172, - SC_UGLYDANCE =173, - SC_HUMMING =174, - SC_DONTFORGETME =175, - SC_FORTUNE =176, - SC_SERVICE4U =177, - - SC_SPIDERWEB =180, /* スパイダ?ウェッブ */ - SC_MEMORIZE =181, /* メモライズ */ -// SC_DPOISON =182, /* 猛毒 */ - -// SC_EDP =183, /* エフェクトが判明したら移動 */ - - SC_WEDDING =187, //結婚用(結婚衣裳になって?くのが?いとか) - SC_NOCHAT =188, //赤エモ?態 - SC_SPLASHER =189, /* ベナムスプラッシャ? */ - SC_SELFDESTRUCTION =190, /* 自爆 */ - - -// Used by English Team - SC_BROKNARMOR =32, - SC_BROKNWEAPON =33, - SC_SLOWDOWN =45, // for skill slowdown - SC_SIGHTTRASHER =73, -// SC_BASILICA =125, // 125 is the same id as joint break - SC_BASILICA =102, // temporarily use this before an actual id is found [celest] - SC_EDP =114, // - SC_MARIONETTE2 =122, // Marionette target - SC_ENSEMBLE =159, - SC_FOGWALL =178, - SC_GOSPEL =179, - SC_LANDPROTECTOR =182, - SC_ADAPTATION =183, - SC_CHASEWALK =184, - SC_ATKPOT =185, // [Valaris] - SC_MATKPOT =186, // [Valaris] - SC_MINDBREAKER =191, - SC_SPELLBREAKER =192, - SC_DPOISON =193, /* 猛毒 */ - SC_BLOCKSKILL =194, // for disallowing the use of a skill for a time period - -// [Celest] - SC_BLEEDING = 124, // Temporarily same id as headcrush - SC_MOONLIT = 195, - SC_LEADERSHIP = 196, - SC_GLORYWOUNDS = 197, - SC_SOULCOLD = 198, - SC_HAWKEYES = 199, - SC_BATTLEORDERS = 200, - SC_REGENERATION = 201, - SC_PRESERVE = 202, - -// -- testing various SC effects -// SC_AURABLADE =81, -// SC_CONCENTRATION =83, -// SC_TENSIONRELAX =84, -// SC_BERSERK =85, -// SC_CALLSPIRITS =100, -// SC_PARRYING =100, -// SC_FREECAST =101, -// SC_ABSORBSPIRIT =102, -// SC_ASSUMPTIO =114, -// SC_SHARPSHOOT =127, -// SC_GANGSTER =184, -// SC_CANNIBALIZE =186, -// SC_SPHEREMINE =187, -// SC_METEOSTORM =189, -// SC_CASTCANCEL =190, -// SC_SPIDERWEB =191, -}; -extern int SkillStatusChangeTable[]; - enum { NV_BASIC = 1, @@ -737,6 +566,22 @@ enum { NPC_SELFDESTRUCTION2 = 331, ITM_TOMAHAWK = 337, NPC_DARKCROSS = 338, + NPC_DARKGRANDCROSS, + NPC_DARKSOULSTRIKE, + NPC_DARKJUPITEL, + // temporary names for mob skills [Celest] + NPC_BIND, + NPC_BREAKWEAPON, + NPC_BREAKARMOR, + NPC_BREAKHELM, + NPC_BREAKSHIELD, + NPC_UNDEADATTACK, + + NPC_RUNAWAY = 348, + NPC_EXPLOSIONSPIRITS, + NPC_INCAGI, + + NPC_RECALL = 354, LK_AURABLADE = 355, LK_PARRYING, @@ -794,7 +639,8 @@ enum { WE_BABY, WE_CALLPARENT, WE_CALLBABY, - TK_RUN, + + TK_RUN = 411, TK_READYSTORM, TK_STORMKICK, TK_READYDOWN, |