package commands.player import org.groovymud.object.views.ContentsHelper /* 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.MessengerUtils.sendMessageToRoom import utils.MatchedObject import utils.GenericSyntaxParser import org.groovymud.object.Container import org.groovymud.object.alive.Alive import static org.groovymud.utils.WordUtils.* def stream = source.getTerminalOutput() GenericSyntaxParser parser = new GenericSyntaxParser() parser.parse(argstr, "to") if(parser.subjectObject != null){ if(parser.prepositionObject != null){ // is the object in the player? obj = parser.subjectObject.findObjectInContainer(source) if(obj != null){ def mob = parser.prepositionObject.findObjectInContainer(source.getCurrentContainer()) if(mob instanceof Alive){ if(obj instanceof HashSet){ def map = source.getMudObjectsMap().clone() def remove = [] as Set def contentsHelper = new ContentsHelper() contentsHelper.removeMudObject(source, map) obj.clone().each{ if(mob.checkCanAddItem(it)){ mob.addMudObject(it) }else{ stream.writeln("You cannot give ${affixDefiniteArticle(obj)} to ${affixDefiniteArticle(mob)}.") contentsHelper.removeMudObject(it, map); } } contentsDescription = contentsHelper.getContentsDescription(map, source, false, false) }else{ contentsDescription = affixDefiniteArticle(obj); if(mob.checkCanAddItem(obj)){ mob.addMudObject obj } else{ stream.writeln "You cannot give $contentsDescription to ${affixDefiniteArticle(mob)}" return } } if(contentsDescription.trim() != ""){ def scopeMsg = "${source.name} gives ${contentsDescription} to ${affixIndefiniteArticle(mob)}." def sourceMsg = "You give $contentsDescription to ${affixDefiniteArticle(mob)}." sendMessageToRoom(source, sourceMsg, scopeMsg) return } } } } } stream.println("You must give something to someone!")