groovy/mudspace/domains/minnovar/
groovy/mudspace/domains/minnovar/objects/containers/
groovy/mudspace/domains/minnovar/objects/mobs/
groovy/mudspace/domains/minnovar/objects/mobs/scripts/
groovy/mudspace/domains/minnovar/objects/weapons/
groovy/mudspace/domains/minnovar/town/
groovy/mudspace/resources/
groovy/mudspace/std/
groovy/mudspace/std/game/
groovy/mudspace/std/game/guild/
groovy/mudspace/std/game/guild/skill/
groovy/mudspace/std/game/objects/
groovy/mudspace/std/game/objects/alive/
groovy/mudspace/std/game/objects/bodyparts/
groovy/mudspace/std/game/objects/containers/
groovy/mudspace/std/game/objects/exits/
groovy/mudspace/std/game/objects/exits/events/
groovy/mudspace/std/game/objects/trappings/
groovy/mudspace/std/game/objects/views/
groovy/mudspace/std/game/races/
groovy/scripts/
groovy/scripts/commands/creator/
groovy/scripts/commands/god/
scripts/
package commands.player

import static org.groovymud.utils.MessengerUtils.sendMessageToRoom
import utils.MatchedObject
import utils.GenericSyntaxParser
import org.groovymud.object.Container
/** Copyright 2008 Matthew Corby-Eaglen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0 
*
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/
import static org.groovymud.utils.WordUtils.*
import org.groovymud.object.MudObject
/**
 *  puts one object into another
 *  put [all] objectName[s] [index] (in|into) objectName[s] [index]
 */
stream = source.getTerminalOutput()

GenericSyntaxParser parser = new GenericSyntaxParser()
parser.parse(argstr, "(in|into)")

if(parser.subjectObject != null){
    // can only put what you are holding into other stuff
    if(parser.prepositionObject != null){
		def obj = parser.prepositionObject.findObjectInContainer(source)
		def subjObj = parser.subjectObject.findObjectInContainer(source)
		if(obj instanceof Container){
		    if(obj instanceof Set){
		        def map = source.getMudObjectsMap().clone()
			    def remove = [] as Set			    
			    actualObjs.each{
				    it ->
				       if(!checkAndAdd(subjObj, it)){
				    	   source.removeMudObject(it, map);
				       }				       				    
				}			 
			    contentsDescription = source.getContentsDescription(map, source, false)
		    }else{
		        
		        contentsDescription = affixIndefiniteArticle(subjObj);
			    if(!checkAndAdd(obj, subjObj)){
			    	return
			    }
			}
			if(contentsDescription.trim() != ""){
    		    def scopeMsg = "${affixDefiniteArticle(source)} puts ${contentsDescription} into ${affixIndefiniteArticle(obj)}."
    		    def sourceMsg = "You put $contentsDescription into ${affixDefiniteArticle(obj)}."
    		    sendMessageToRoom(source, sourceMsg, scopeMsg)
			}
		}
	}
}
def checkAndAdd(def container, def item){
    if(container.checkCanAddItem(item)){
    	container.addMudObject(item)
    	return true
    }else{
		stream.writeln("You cannot put ${affixIndefiniteArticle(item)} into ${affixDefiniteArticle(container)}.")							
		return false
    }
}