anchor.diff:  	MouseDrop(over_object,src_location,over_location,src_control,over_control,params)
   		var/mob/Player/P = usr
   		if(P.isTrading())
  -			if(over_control == "Trade.grid1" && !(src in P.trade.items) && !P.trade.accept && dropable && !(src in !usr:Lwearing))
  -				winset(P, "Trade.grid1","current-cell=1x[P.trade.y]")
  -				P << output(src, "Trade.grid1")
  -				winset(P.trade.with, "Trade.grid2","current-cell=1x[P.trade.y]")
  -				P.trade.with << output(src, "Trade.grid2")
  -				P.trade.items += src
  -				P.trade.y++
  -				P.contents -= src
  +			if(over_control == "Trade.grid1" && !(src in P.trade.items))
  +				if(!P.trade.accept && !P.trade.with.trade.accept)
  +					if(dropable)
  +						if(src in usr:Lwearing)
  +							src:Equip(usr)
  +						winset(P, null, "Trade.grid1.cells=1x[P.trade.y];Trade.grid1.current-cell=1x[P.trade.y]")
  +						P << output(src, "Trade.grid1")
  +						winset(P.trade.with, null, "Trade.grid2=1x[P.trade.y];Trade.grid2.current-cell=1x[P.trade.y]")
  +						P.trade.with << output(src, "Trade.grid2")
  +						P.trade.items += src
  +						P.trade.y++
  +						P.contents -= src
  +						P.Resort_Stacking_Inv()
  +					else
  +						P << errormsg("This item can't be dropped")
  +				else
  +					P << errormsg("You can't change terms of the trade while one of you already accepted.")
   		..()
   
  -	Click()
  -		if(usr:isTrading() && (src in usr:trade.items))
  -			usr:trade.y--
  -			usr:trade.items -= src
  -			usr.contents += src
  -			winset(usr, "Trade.grid1","cells=1x[usr:trade.y-1]")
  -			winset(usr:trade.with, "Trade.grid2","cells=1x[usr:trade.y-1]")
  -			usr.Resort_Stacking_Inv()
  +	Click(location,control,params)
  +		var/mob/Player/P = usr
  +		if(P.isTrading() && (src in P.trade.items))
  +			if(!P.trade.accept && !P.trade.with.trade.accept)
  +				P.trade.y--
  +				P.trade.items -= src
  +				P.contents += src
  +				var/list/p = params2list(params)
   
  +				var/cell = text2num(findtext(p["drop-cell"], ",") ? copytext(p["drop-cell"], 3) : p["drop-cell"])
  +
  +				if(P.trade.y-1 == 0)
  +					winset(P, "Trade.grid1", "cells=0")
  +					winset(P.trade.with, "Trade.grid2", "cells=0")
  +				else
  +					winset(P, null, "Trade.grid1.current-cell=1x[cell];Trade.grid1.cells=1x[P.trade.y-1]")
  +					winset(P.trade.with, null, "Trade.grid2.current-cell=1x[cell];Trade.grid2.cells=1x[P.trade.y-1]")
  +
  +					if(cell <= P.trade.items.len)
  +						P << output(P.trade.items.len == 0 ? null : P.trade.items[P.trade.items.len], "Trade.grid1")
  +						P.trade.with << output(P.trade.items.len == 0 ? null : P.trade.items[P.trade.items.len], "Trade.grid2")
  +				P.Resort_Stacking_Inv()
  +			else
  +				P << errormsg("You can't change terms of the trade while one of you already accepted.")
   		else
   			..()
   
   
  -
  
positive.code: 							trade.gold = gcheck
  							winset(src, null, {"Trade.gold1.text=[gcheck];Trade.error.text="""})
  							winset(trade.with, "Trade.gold2", "text = [gcheck]")
  
  
  
  
negative.code: trading
  	var
  		mob/Player/parent
  