浏览代码

Fixed Royal Guard's Banding skill & icon activation (bugreport:5210)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15627 54d463be-8e91-2dee-dedb-b68131a5f0ec
xantara 13 年之前
父节点
当前提交
75d4b76993
共有 3 个文件被更改,包括 20 次插入2 次删除
  1. 2 1
      src/map/clif.c
  2. 2 0
      src/map/map.c
  3. 16 1
      src/map/skill.c

+ 2 - 1
src/map/clif.c

@@ -5274,7 +5274,8 @@ void clif_status_change(struct block_list *bl,int type,int flag,unsigned int tic
 		type == SI_TENSIONRELAX || type == SI_LANDENDOW || type == SI_AUTOBERSERK ||
 		type == SI_BUMP || type == SI_READYSTORM || type == SI_READYDOWN ||
 		type == SI_READYTURN || type == SI_READYCOUNTER || type == SI_DODGE ||
-		type == SI_DEVIL || type == SI_NIGHT || type == SI_INTRAVISION)
+		type == SI_DEVIL || type == SI_NIGHT || type == SI_INTRAVISION ||
+		type == SI_BANDING)
 		tick=0;
 
 // TODO: 0x43f PACKETVER?

+ 2 - 0
src/map/map.c

@@ -423,6 +423,8 @@ int map_moveblock(struct block_list *bl, int x1, int y1, unsigned int tick)
 					skill_unit_move_unit_group(skill_id2group(sc->data[SC_DANCING]->val2), bl->m, x1-x0, y1-y0);
 				if (sc->data[SC_WARM])
 					skill_unit_move_unit_group(skill_id2group(sc->data[SC_WARM]->val4), bl->m, x1-x0, y1-y0);
+				if (sc->data[SC_BANDING])
+					skill_unit_move_unit_group(skill_id2group(sc->data[SC_BANDING]->val4), bl->m, x1-x0, y1-y0);
 			}
 		}
 	} else

+ 16 - 1
src/map/skill.c

@@ -13431,7 +13431,7 @@ int skill_delunitgroup_(struct skill_unit_group *group, const char* file, int li
 			break;
 		case LG_BANDING:
 			{
-			struct status_change *sc = NULL;
+				struct status_change *sc = NULL;
 				if( (sc = status_get_sc(src)) && sc->data[SC_BANDING] ) {
 					sc->data[SC_BANDING]->val4 = 0;
 					status_change_end(src,SC_BANDING,-1);
@@ -13684,6 +13684,21 @@ static int skill_unit_timer_sub (DBKey key, void* data, va_list ap)
 				skill_delunit(unit);
 				break;
 			}
+			
+			case UNT_BANDING:
+			{
+				struct block_list *src = map_id2bl(group->src_id);
+				struct status_change *sc;
+				if( !src || (sc = status_get_sc(src)) == NULL || !sc->data[SC_BANDING] )
+				{
+					skill_delunit(unit);
+					break;
+				}
+				// This unit isn't removed while SC_BANDING is active.
+				group->limit = DIFF_TICK(tick+group->interval,group->tick);
+				unit->limit = DIFF_TICK(tick+group->interval,group->tick);
+			}
+			break;
 
 			default:
 				skill_delunit(unit);