名稱：
	shadow() - 投影 (shadow) 一些物件的一個或多個函式。
語法：
	object shadow( object ob, int flag );

	物件 shadow( 物件 物件, 整數 旗標 );
用法：
	本函式僅在不定義 NO_SHADOWS 時生效。

	如果 flag 是 1 或是不指定 flag，則目前的物件將會投影 ob。如果 flag
	是 0，則不是傳回 0，就是傳回早已投影 ob 的物件。

	「valid_shadow()」函式由主宰物件定義。如果 valid_shadow() 傳回 0，
	就無法投影該物件，而 shadow() 函式此時會傳回 0 而不是 ob。
		
	如果物件 a 投影物件 b，則所有對 b 的「call_other(func)」將會重新導
	向 (redirect) 到 a。如果物件 a 沒有定義 func 函式，則
	call_other(func) 會向 b 呼叫 func〈等於是 a 沒有投影 b〉。只有 a
	可以用 call_other() 呼叫 b 的函式。b 無法以 call_other() 呼叫自己
	。所有 b 裡頭正常的〈內部〉函式呼叫僅限於 b 自己本身呼叫。

	有兩個方法可以取消投影。摧毀投影的物件，或是摧毀被投影的物件。後者
	的情形下，投影它的物件會自動銷毀。而定義 PACKAGE_CONTRIB 就可以使
	用 remove_shadow() 函式取消投影。

	利用投影，可以使一個物件遮蓋另一個物件，而運作時又像是沒有遮蓋住。
	shadow() 可以在不更動原來的物件程式碼，而改變一個物件的行為。舉例
	來說，shadow() 可以為玩家增加一些職業上的特殊能力，像是賊、戰士、
	魔法師等等的特殊能力。這樣一來，可以撰寫各種職業的程式碼，而讓玩家
	的物件不會變得太複雜。
參考：
	destruct, query_shadowing, valid_shadow
作者：
	Tim Hollebeek  Beek@ZorkMUD, Lima Bean, IdeaExchange, and elsewhere
翻譯：
	spock@muds.net		2000.May.27.	v22 版
