Forráskód Böngészése

- Fixed and cleaned up script command 'equip'
- Fixed 'autoequip' items.
- Fixed Aspd not being updated in your status window after Agi/Dex increasing statuses take effect.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7179 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 éve
szülő
commit
63c259b4c8
5 módosított fájl, 16 hozzáadás és 16 törlés
  1. 5 0
      Changelog-Trunk.txt
  2. 1 1
      src/map/map.h
  3. 3 3
      src/map/pc.c
  4. 6 11
      src/map/script.c
  5. 1 1
      src/map/status.c

+ 5 - 0
Changelog-Trunk.txt

@@ -3,6 +3,11 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2006/06/15
+	* Fixed and cleaned up script command 'equip' [Skotlex]
+	* Fixed 'autoequip' items. [Skotlex]
+	* Fixed Aspd not being updated in your status window after Agi/Dex
+	  increasing statuses take effect. [Skotlex]
 2006/06/14
 	* Fixed map_nick2sd so that searching for "Adam" will not match a char
 	  named "Adam Smith". Thanks to Adam for reporting it out. [Skotlex]

+ 1 - 1
src/map/map.h

@@ -478,7 +478,7 @@ struct map_session_data {
 		unsigned showdelay :1;
 		unsigned showexp :1;
 		unsigned showzeny :1;
-		unsigned mainchat :1; //[LuzZza] 
+		unsigned mainchat :1; //[LuzZza]
 		unsigned noask :1; // [LuzZza]
 		unsigned trading :1; //[Skotlex] is 1 only after a trade has started.
 		unsigned deal_locked :2; //1: Clicked on OK. 2: Clicked on TRADE

+ 3 - 3
src/map/pc.c

@@ -2533,8 +2533,11 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount)
 		sd->inventory_data[i] = data;
 		clif_additem(sd,i,amount,0);
 	}
+
 	sd->weight += w;
 	clif_updatestatus(sd,SP_WEIGHT);
+	//Auto-equip
+	if(data->flag.autoequip) pc_equipitem(sd, i, data->equip);
 	return 0;
 }
 
@@ -2673,9 +2676,6 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
 	pc_stop_attack(sd);
 
 	clif_takeitem(&sd->bl,&fitem->bl);
-	if(itemdb_autoequip(fitem->item_data.nameid) != 0){
-		pc_equipitem(sd, fitem->item_data.nameid, fitem->item_data.equip);
-	}
 	map_clearflooritem(fitem->bl.id);
 	return 1;
 }

+ 6 - 11
src/map/script.c

@@ -9771,28 +9771,23 @@ int buildin_unequip(struct script_state *st)
 
 int buildin_equip(struct script_state *st)
 {
-	int nameid=0,count=0,i;
+	int nameid=0,i;
 	struct map_session_data *sd;
 	struct item_data *item_data;
 
 	sd = script_rid2sd(st);
 
 	nameid=conv_num(st,& (st->stack->stack_data[st->start+2]));
-	if(nameid>=500 && (item_data = itemdb_search(nameid)) != NULL)
-		for(i=0;i<MAX_INVENTORY;i++){
-			if(sd->status.inventory[i].nameid==nameid)
-				count+=sd->status.inventory[i].amount;
-		}
-	else{
+	if((item_data = itemdb_exists(nameid)) == NULL)
+	{
 		if(battle_config.error_log)
 			ShowError("wrong item ID : equipitem(%i)\n",nameid);
 		return 1;
 	}
-	
-	if(count){
-		pc_equipitem(sd,nameid,item_data->equip);
-	}
+	for(i=0;i<MAX_INVENTORY && sd->status.inventory[i].nameid!=nameid;i++);
+	if(i==MAX_INVENTORY) return 0;
 
+	pc_equipitem(sd,i,item_data->equip);
 	return 0;
 }
 

+ 1 - 1
src/map/status.c

@@ -2364,8 +2364,8 @@ void status_calc_bl_sub_pc(struct map_session_data *sd, unsigned long flag)
 			}
 		}
 	}
-
 	if(flag&(SCB_ASPD|SCB_AGI|SCB_DEX)) {
+		flag|=SCB_ASPD;
 		if (sd->status.weapon < MAX_WEAPON_TYPE)
 			skill = aspd_base[sd->status.class_][sd->status.weapon]-(status->agi*4+status->dex)*aspd_base[sd->status.class_][sd->status.weapon]/1000;
 		else