Crossfire Server, Branch 1.12  R12190
cfpython_object_private.h
Go to the documentation of this file.
00001 /*****************************************************************************/
00002 /* CFPython - A Python module for Crossfire RPG.                             */
00003 /* Version: 2.0beta8 (also known as "Alexander")                             */
00004 /* Contact: yann.chachkoff@myrealbox.com                                     */
00005 /*****************************************************************************/
00006 /* That code is placed under the GNU General Public Licence (GPL)            */
00007 /* (C)2001-2005 by Chachkoff Yann (Feel free to deliver your complaints)     */
00008 /*****************************************************************************/
00009 /*  CrossFire, A Multiplayer game for X-windows                              */
00010 /*                                                                           */
00011 /*  Copyright (C) 2000 Mark Wedel                                            */
00012 /*  Copyright (C) 1992 Frank Tore Johansen                                   */
00013 /*                                                                           */
00014 /*  This program is free software; you can redistribute it and/or modify     */
00015 /*  it under the terms of the GNU General Public License as published by     */
00016 /*  the Free Software Foundation; either version 2 of the License, or        */
00017 /*  (at your option) any later version.                                      */
00018 /*                                                                           */
00019 /*  This program is distributed in the hope that it will be useful,          */
00020 /*  but WITHOUT ANY WARRANTY; without even the implied warranty of           */
00021 /*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
00022 /*  GNU General Public License for more details.                             */
00023 /*                                                                           */
00024 /*  You should have received a copy of the GNU General Public License        */
00025 /*  along with this program; if not, write to the Free Software              */
00026 /*  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                */
00027 /*                                                                           */
00028 /*****************************************************************************/
00029 
00030 static PyObject *Object_GetName(Crossfire_Object *whoptr, void *closure);
00031 static PyObject *Object_GetNamePl(Crossfire_Object *whoptr, void *closure);
00032 static PyObject *Object_GetTitle(Crossfire_Object *whoptr, void *closure);
00033 static PyObject *Object_GetRace(Crossfire_Object *whoptr, void *closure);
00034 static PyObject *Object_GetMap(Crossfire_Object *whoptr, void *closure);
00035 static PyObject *Object_GetCha(Crossfire_Object *whoptr, void *closure);
00036 static PyObject *Object_GetCon(Crossfire_Object *whoptr, void *closure);
00037 static PyObject *Object_GetDex(Crossfire_Object *whoptr, void *closure);
00038 static PyObject *Object_GetInt(Crossfire_Object *whoptr, void *closure);
00039 static PyObject *Object_GetPow(Crossfire_Object *whoptr, void *closure);
00040 static PyObject *Object_GetStr(Crossfire_Object *whoptr, void *closure);
00041 static PyObject *Object_GetWis(Crossfire_Object *whoptr, void *closure);
00042 static PyObject *Object_GetHP(Crossfire_Object *whoptr, void *closure);
00043 static PyObject *Object_GetMaxHP(Crossfire_Object *whoptr, void *closure);
00044 static PyObject *Object_GetSP(Crossfire_Object *whoptr, void *closure);
00045 static PyObject *Object_GetMaxSP(Crossfire_Object *whoptr, void *closure);
00046 static PyObject *Object_GetGrace(Crossfire_Object *whoptr, void *closure);
00047 static PyObject *Object_GetMaxGrace(Crossfire_Object *whoptr, void *closure);
00048 static PyObject *Object_GetFood(Crossfire_Object *whoptr, void *closure);
00049 static PyObject *Object_GetAC(Crossfire_Object *whoptr, void *closure);
00050 static PyObject *Object_GetWC(Crossfire_Object *whoptr, void *closure);
00051 static PyObject *Object_GetDam(Crossfire_Object *whoptr, void *closure);
00052 static PyObject *Object_GetLuck(Crossfire_Object *whoptr, void *closure);
00053 static PyObject *Object_GetMessage(Crossfire_Object *whoptr, void *closure);
00054 static PyObject *Object_GetSkill(Crossfire_Object *whoptr, void *closure);
00055 static PyObject *Object_GetExp(Crossfire_Object *whoptr, void *closure);
00056 static PyObject *Object_GetPermExp(Crossfire_Object *whoptr, void *closure);
00057 static PyObject *Object_GetExpMul(Crossfire_Object *whoptr, void *closure);
00058 static PyObject *Object_GetSlaying(Crossfire_Object *whoptr, void *closure);
00059 static PyObject *Object_GetCursed(Crossfire_Object *whoptr, void *closure);
00060 static PyObject *Object_GetDamned(Crossfire_Object *whoptr, void *closure);
00061 static PyObject *Object_GetWeight(Crossfire_Object *whoptr, void *closure);
00062 static PyObject *Object_GetWeightLimit(Crossfire_Object *whoptr, void *closure);
00063 static PyObject *Object_GetAbove(Crossfire_Object *whoptr, void *closure);
00064 static PyObject *Object_GetBelow(Crossfire_Object *whoptr, void *closure);
00065 static PyObject *Object_GetInventory(Crossfire_Object *whoptr, void *closure);
00066 static PyObject *Object_GetX(Crossfire_Object *whoptr, void *closure);
00067 static PyObject *Object_GetY(Crossfire_Object *whoptr, void *closure);
00068 static PyObject *Object_GetDirection(Crossfire_Object *whoptr, void *closure);
00069 static PyObject *Object_GetFacing(Crossfire_Object *whoptr, void *closure);
00070 static PyObject *Object_GetUnaggressive(Crossfire_Object *whoptr, void *closure);
00071 static PyObject *Object_GetGod(Crossfire_Object *whoptr, void *closure);
00072 static PyObject *Object_GetPickable(Crossfire_Object *whoptr, void *closure);
00073 static PyObject *Object_GetQuantity(Crossfire_Object *whoptr, void *closure);
00074 static PyObject *Object_GetInvisible(Crossfire_Object *whoptr, void *closure);
00075 static PyObject *Object_GetSpeed(Crossfire_Object *whoptr, void *closure);
00076 static PyObject *Object_GetSpeedLeft(Crossfire_Object *whoptr, void *closure);
00077 static PyObject *Object_GetLastSP(Crossfire_Object *whoptr, void *closure);
00078 static PyObject *Object_GetLastGrace(Crossfire_Object *whoptr, void *closure);
00079 static PyObject *Object_GetLastEat(Crossfire_Object *whoptr, void *closure);
00080 static PyObject *Object_GetLevel(Crossfire_Object *whoptr, void *closure);
00081 static PyObject *Object_GetFace(Crossfire_Object *whoptr, void *closure);
00082 static PyObject *Object_GetAnim(Crossfire_Object *whoptr, void *closure);
00083 static PyObject *Object_GetAnimSpeed(Crossfire_Object *whoptr, void *closure);
00084 static PyObject *Object_GetAttackType(Crossfire_Object *whoptr, void *closure);
00085 static PyObject *Object_GetBeenApplied(Crossfire_Object *whoptr, void *closure);
00086 static PyObject *Object_GetIdentified(Crossfire_Object *whoptr, void *closure);
00087 static PyObject *Object_GetAlive(Crossfire_Object *whoptr, void *closure);
00088 static PyObject *Object_GetDM(Crossfire_Object *whoptr, void *closure);
00089 static PyObject *Object_GetWasDM(Crossfire_Object *whoptr, void *closure);
00090 static PyObject *Object_GetApplied(Crossfire_Object *whoptr, void *closure);
00091 static PyObject *Object_GetUnpaid(Crossfire_Object *whoptr, void *closure);
00092 static PyObject *Object_GetMonster(Crossfire_Object *whoptr, void *closure);
00093 static PyObject *Object_GetFriendly(Crossfire_Object *whoptr, void *closure);
00094 static PyObject *Object_GetGenerator(Crossfire_Object *whoptr, void *closure);
00095 static PyObject *Object_GetThrown(Crossfire_Object *whoptr, void *closure);
00096 static PyObject *Object_GetCanSeeInvisible(Crossfire_Object *whoptr, void *closure);
00097 static PyObject *Object_GetRollable(Crossfire_Object *whoptr, void *closure);
00098 static PyObject *Object_GetTurnable(Crossfire_Object *whoptr, void *closure);
00099 static PyObject *Object_GetUsedUp(Crossfire_Object *whoptr, void *closure);
00100 static PyObject *Object_GetSplitting(Crossfire_Object *whoptr, void *closure);
00101 static PyObject *Object_GetBlind(Crossfire_Object *whoptr, void *closure);
00102 static PyObject *Object_GetCanUseHorn(Crossfire_Object *whoptr, void *closure);
00103 static PyObject *Object_GetCanUseRod(Crossfire_Object *whoptr, void *closure);
00104 static PyObject *Object_GetCanUseSkill(Crossfire_Object *whoptr, void *closure);
00105 static PyObject *Object_GetKnownCursed(Crossfire_Object *whoptr, void *closure);
00106 static PyObject *Object_GetStealthy(Crossfire_Object *whoptr, void *closure);
00107 static PyObject *Object_GetConfused(Crossfire_Object *whoptr, void *closure);
00108 static PyObject *Object_GetSleeping(Crossfire_Object *whoptr, void *closure);
00109 static PyObject *Object_GetLifesaver(Crossfire_Object *whoptr, void *closure);
00110 static PyObject *Object_GetFloor(Crossfire_Object *whoptr, void *closure);
00111 static PyObject *Object_GetHasXRays(Crossfire_Object *whoptr, void *closure);
00112 static PyObject *Object_GetCanUseRing(Crossfire_Object *whoptr, void *closure);
00113 static PyObject *Object_GetCanUseBow(Crossfire_Object *whoptr, void *closure);
00114 static PyObject *Object_GetCanUseWand(Crossfire_Object *whoptr, void *closure);
00115 static PyObject *Object_GetCanSeeInDark(Crossfire_Object *whoptr, void *closure);
00116 static PyObject *Object_GetKnownMagical(Crossfire_Object *whoptr, void *closure);
00117 static PyObject *Object_GetCanUseWeapon(Crossfire_Object *whoptr, void *closure);
00118 static PyObject *Object_GetCanUseArmour(Crossfire_Object *whoptr, void *closure);
00119 static PyObject *Object_GetCanUseScroll(Crossfire_Object *whoptr, void *closure);
00120 static PyObject *Object_GetCanCastSpell(Crossfire_Object *whoptr, void *closure);
00121 static PyObject *Object_GetReflectSpells(Crossfire_Object *whoptr, void *closure);
00122 static PyObject *Object_GetReflectMissiles(Crossfire_Object *whoptr, void *closure);
00123 static PyObject *Object_GetUnique(Crossfire_Object *whoptr, void *closure);
00124 static PyObject *Object_GetRunAway(Crossfire_Object *whoptr, void *closure);
00125 static PyObject *Object_GetScared(Crossfire_Object *whoptr, void *closure);
00126 static PyObject *Object_GetUndead(Crossfire_Object *whoptr, void *closure);
00127 static PyObject *Object_GetBlocksView(Crossfire_Object *whoptr, void *closure);
00128 static PyObject *Object_GetHitBack(Crossfire_Object *whoptr, void *closure);
00129 static PyObject *Object_GetStandStill(Crossfire_Object *whoptr, void *closure);
00130 static PyObject *Object_GetOnlyAttack(Crossfire_Object *whoptr, void *closure);
00131 static PyObject *Object_GetMakeInvisible(Crossfire_Object *whoptr, void *closure);
00132 static PyObject *Object_GetMoney(Crossfire_Object *whoptr, void *closure);
00133 static PyObject *Object_GetType(Crossfire_Object *whoptr, void *closure);
00134 static PyObject *Object_GetSubtype(Crossfire_Object *whoptr, void *closure);
00135 static PyObject *Object_GetValue(Crossfire_Object *whoptr, void *closure);
00136 static PyObject *Object_GetArchName(Crossfire_Object *whoptr, void *closure);
00137 static PyObject *Object_GetArchetype(Crossfire_Object *whoptr, void *closure);
00138 static PyObject *Object_GetNoSave(Crossfire_Object *whoptr, void *closure);
00139 static PyObject *Object_GetExists(Crossfire_Object *whoptr, void *closure);
00140 static PyObject *Object_GetEnv(Crossfire_Object *whoptr, void *closure);
00141 static PyObject *Object_GetMoveType(Crossfire_Object *whoptr, void *closure);
00142 static PyObject *Object_GetMoveBlock(Crossfire_Object *whoptr, void *closure);
00143 static PyObject *Object_GetMoveAllow(Crossfire_Object *whoptr, void *closure);
00144 static PyObject *Object_GetMoveOn(Crossfire_Object *whoptr, void *closure);
00145 static PyObject *Object_GetMoveOff(Crossfire_Object *whoptr, void *closure);
00146 static PyObject *Object_GetMoveSlow(Crossfire_Object *whoptr, void *closure);
00147 static PyObject *Object_GetMoveSlowPenalty(Crossfire_Object *whoptr, void *closure);
00148 static PyObject *Object_GetOwner(Crossfire_Object *whoptr, void *closure);
00149 static PyObject *Object_GetEnemy(Crossfire_Object *whoptr, void *closure);
00150 static PyObject *Object_GetCount(Crossfire_Object *whoptr, void *closure);
00151 static PyObject *Object_GetGodGiven(Crossfire_Object *whoptr, void *closure);
00152 static PyObject *Object_GetIsPet(Crossfire_Object *whoptr, void *closure);
00153 static PyObject *Object_GetAttackMovement(Crossfire_Object *whoptr, void *closure);
00154 static PyObject *Object_GetDuration(Crossfire_Object *whoptr, void *closure);
00155 static PyObject *Object_GetGlowRadius(Crossfire_Object *whoptr, void *closure);
00156 static PyObject *Object_GetAnimated(Crossfire_Object *whoptr, void *closure);
00157 static PyObject *Object_GetNoDamage(Crossfire_Object *whoptr, void *closure);
00158 static PyObject *Object_GetRandomMovement(Crossfire_Object *whoptr, void *closure);
00159 
00160 static int Object_SetMessage(Crossfire_Object *whoptr, PyObject *value, void *closure);
00161 static int Object_SetExp(Crossfire_Object *whoptr, PyObject *value, void *closure);
00162 static int Object_SetName(Crossfire_Object *whoptr, PyObject *value, void *closure);
00163 static int Object_SetNamePl(Crossfire_Object *whoptr, PyObject *value, void *closure);
00164 static int Object_SetTitle(Crossfire_Object *whoptr, PyObject *value, void *closure);
00165 static int Object_SetRace(Crossfire_Object *whoptr, PyObject *value, void *closure);
00166 static int Object_SetMap(Crossfire_Object *whoptr, PyObject *value, void *closure);
00167 static int Object_SetSlaying(Crossfire_Object *whoptr, PyObject *value, void *closure);
00168 static int Object_SetSkill(Crossfire_Object *whoptr, PyObject *value, void *closure);
00169 static int Object_SetCursed(Crossfire_Object *whoptr, PyObject *value, void *closure);
00170 static int Object_SetDamned(Crossfire_Object *whoptr, PyObject *value, void *closure);
00171 static int Object_SetApplied(Crossfire_Object *whoptr, PyObject *value, void *closure);
00172 static int Object_SetStr(Crossfire_Object *whoptr, PyObject *value, void *closure);
00173 static int Object_SetDex(Crossfire_Object *whoptr, PyObject *value, void *closure);
00174 static int Object_SetCon(Crossfire_Object *whoptr, PyObject *value, void *closure);
00175 static int Object_SetInt(Crossfire_Object *whoptr, PyObject *value, void *closure);
00176 static int Object_SetPow(Crossfire_Object *whoptr, PyObject *value, void *closure);
00177 static int Object_SetWis(Crossfire_Object *whoptr, PyObject *value, void *closure);
00178 static int Object_SetCha(Crossfire_Object *whoptr, PyObject *value, void *closure);
00179 static int Object_SetHP(Crossfire_Object *whoptr, PyObject *value, void *closure);
00180 static int Object_SetMaxHP(Crossfire_Object *whoptr, PyObject *value, void *closure);
00181 static int Object_SetSP(Crossfire_Object *whoptr, PyObject *value, void *closure);
00182 static int Object_SetMaxSP(Crossfire_Object *whoptr, PyObject *value, void *closure);
00183 static int Object_SetGrace(Crossfire_Object *whoptr, PyObject *value, void *closure);
00184 static int Object_SetMaxGrace(Crossfire_Object *whoptr, PyObject *value, void *closure);
00185 static int Object_SetDam(Crossfire_Object *whoptr, PyObject *value, void *closure);
00186 static int Object_SetFood(Crossfire_Object *whoptr, PyObject *value, void *closure);
00187 static int Object_SetAC(Crossfire_Object *whoptr, PyObject *value, void *closure);
00188 static int Object_SetWC(Crossfire_Object *whoptr, PyObject *value, void *closure);
00189 static int Object_SetWeight(Crossfire_Object *whoptr, PyObject *value, void *closure);
00190 static int Object_SetWeightLimit(Crossfire_Object *whoptr, PyObject *value, void *closure);
00191 static int Object_SetDirection(Crossfire_Object *whoptr, PyObject *value, void *closure);
00192 static int Object_SetFacing(Crossfire_Object *whoptr, PyObject *value, void *closure);
00193 static int Object_SetGod(Crossfire_Object *whoptr, PyObject *value, void *closure);
00194 static int Object_SetSpeed(Crossfire_Object *whoptr, PyObject *value, void *closure);
00195 static int Object_SetSpeedLeft(Crossfire_Object *whoptr, PyObject *value, void *closure);
00196 static int Object_SetQuantity(Crossfire_Object *whoptr, PyObject *value, void *closure);
00197 static int Object_SetLastSP(Crossfire_Object *whoptr, PyObject *value, void *closure);
00198 static int Object_SetLastGrace(Crossfire_Object *whoptr, PyObject *value, void *closure);
00199 static int Object_SetLastEat(Crossfire_Object *whoptr, PyObject *value, void *closure);
00200 static int Object_SetAttackType(Crossfire_Object *whoptr, PyObject *value, void *closure);
00201 static int Object_SetIdentified(Crossfire_Object *whoptr, PyObject *value, void *closure);
00202 static int Object_SetUnaggressive(Crossfire_Object *whoptr, PyObject *value, void *closure);
00203 static int Object_SetPickable(Crossfire_Object *whoptr, PyObject *value, void *closure);
00204 static int Object_SetInvisible(Crossfire_Object *whoptr, PyObject *value, void *closure);
00205 static int Object_SetUnpaid(Crossfire_Object *whoptr, PyObject *value, void *closure);
00206 static int Object_SetFriendly(Crossfire_Object *whoptr, PyObject *value, void *closure);
00207 static int Object_SetCanSeeInvisible(Crossfire_Object *whoptr, PyObject *value, void *closure);
00208 static int Object_SetRollable(Crossfire_Object *whoptr, PyObject *value, void *closure);
00209 static int Object_SetTurnable(Crossfire_Object *whoptr, PyObject *value, void *closure);
00210 static int Object_SetUsedUp(Crossfire_Object *whoptr, PyObject *value, void *closure);
00211 static int Object_SetBlind(Crossfire_Object *whoptr, PyObject *value, void *closure);
00212 static int Object_SetKnownCursed(Crossfire_Object *whoptr, PyObject *value, void *closure);
00213 static int Object_SetStealthy(Crossfire_Object *whoptr, PyObject *value, void *closure);
00214 static int Object_SetConfused(Crossfire_Object *whoptr, PyObject *value, void *closure);
00215 static int Object_SetSleeping(Crossfire_Object *whoptr, PyObject *value, void *closure);
00216 static int Object_SetLifesaver(Crossfire_Object *whoptr, PyObject *value, void *closure);
00217 static int Object_SetHasXRays(Crossfire_Object *whoptr, PyObject *value, void *closure);
00218 static int Object_SetCanSeeInDark(Crossfire_Object *whoptr, PyObject *value, void *closure);
00219 static int Object_SetKnownMagical(Crossfire_Object *whoptr, PyObject *value, void *closure);
00220 static int Object_SetReflectSpells(Crossfire_Object *whoptr, PyObject *value, void *closure);
00221 static int Object_SetReflectMissiles(Crossfire_Object *whoptr, PyObject *value, void *closure);
00222 static int Object_SetUnique(Crossfire_Object *whoptr, PyObject *value, void *closure);
00223 static int Object_SetRunAway(Crossfire_Object *whoptr, PyObject *value, void *closure);
00224 static int Object_SetScared(Crossfire_Object *whoptr, PyObject *value, void *closure);
00225 static int Object_SetUndead(Crossfire_Object *whoptr, PyObject *value, void *closure);
00226 static int Object_SetBlocksView(Crossfire_Object *whoptr, PyObject *value, void *closure);
00227 static int Object_SetHitBack(Crossfire_Object *whoptr, PyObject *value, void *closure);
00228 static int Object_SetStandStill(Crossfire_Object *whoptr, PyObject *value, void *closure);
00229 static int Object_SetOnlyAttack(Crossfire_Object *whoptr, PyObject *value, void *closure);
00230 static int Object_SetMakeInvisible(Crossfire_Object *whoptr, PyObject *value, void *closure);
00231 static int Object_SetValue(Crossfire_Object *whoptr, PyObject *value, void *closure);
00232 static int Object_SetFace(Crossfire_Object *whoptr, PyObject *value, void *closure);
00233 static int Object_SetAnim(Crossfire_Object *whoptr, PyObject *value, void *closure);
00234 static int Object_SetAnimSpeed(Crossfire_Object *whoptr, PyObject *value, void *closure);
00235 static int Object_SetNoSave(Crossfire_Object *whoptr, PyObject *value, void *closure);
00236 static int Object_SetOwner(Crossfire_Object *whoptr, PyObject *value, void *closure);
00237 static int Object_SetEnemy(Crossfire_Object *whoptr, PyObject *value, void *closure);
00238 static int Object_SetGodGiven(Crossfire_Object *whoptr, PyObject *value, void *closure);
00239 static int Object_SetIsPet(Crossfire_Object *whoptr, PyObject *value, void *closure);
00240 static int Object_SetAttackMovement(Crossfire_Object *whoptr, PyObject *value, void *closure);
00241 static int Object_SetDuration(Crossfire_Object *whoptr, PyObject *value, void *closure);
00242 static int Object_SetGlowRadius(Crossfire_Object *whoptr, PyObject *value, void *closure);
00243 static int Object_SetAnimated(Crossfire_Object *whoptr, PyObject *value, void *closure);
00244 static int Object_SetNoDamage(Crossfire_Object *whoptr, PyObject *value, void *closure);
00245 static int Object_SetRandomMovement(Crossfire_Object *whoptr, PyObject *value, void *closure);
00246 
00247 static PyObject *Crossfire_Object_Remove(Crossfire_Object *who, PyObject *args);
00248 static PyObject *Crossfire_Object_Apply(Crossfire_Object *who, PyObject *args);
00249 static PyObject *Crossfire_Object_Drop(Crossfire_Object *who, PyObject *args);
00250 static PyObject *Crossfire_Object_Fix(Crossfire_Object *who, PyObject *args);
00251 static PyObject *Crossfire_Object_Say(Crossfire_Object *who, PyObject *args);
00252 static PyObject *Crossfire_Object_Pickup(Crossfire_Object *who, PyObject *args);
00253 static PyObject *Crossfire_Object_Take(Crossfire_Object *who, PyObject *args);
00254 static PyObject *Crossfire_Object_Teleport(Crossfire_Object *who, PyObject *args);
00255 static PyObject *Crossfire_Object_Reposition(Crossfire_Object *who, PyObject *args);
00256 
00257 static PyObject *Crossfire_Object_QueryName(Crossfire_Object *who, PyObject *args);
00258 static PyObject *Crossfire_Object_GetResist(Crossfire_Object *who, PyObject *args);
00259 static PyObject *Crossfire_Object_SetResist(Crossfire_Object *who, PyObject *args);
00260 static PyObject *Crossfire_Object_ActivateRune(Crossfire_Object *who, PyObject *args);
00261 static PyObject *Crossfire_Object_CheckTrigger(Crossfire_Object *who, PyObject *args);
00262 static PyObject *Crossfire_Object_QueryCost(Crossfire_Object *who, PyObject *args);
00263 static PyObject *Crossfire_Object_Cast(Crossfire_Object *who, PyObject *args);
00264 static PyObject *Crossfire_Object_LearnSpell(Crossfire_Object *who, PyObject *args);
00265 static PyObject *Crossfire_Object_ForgetSpell(Crossfire_Object *who, PyObject *args);
00266 static PyObject *Crossfire_Object_KnowSpell(Crossfire_Object *who, PyObject *args);
00267 static PyObject *Crossfire_Object_CastAbility(Crossfire_Object *who, PyObject *args);
00268 static PyObject *Crossfire_Object_PayAmount(Crossfire_Object *who, PyObject *args);
00269 static PyObject *Crossfire_Object_Pay(Crossfire_Object *who, PyObject *args);
00270 static PyObject *Crossfire_Object_CheckInventory(Crossfire_Object *who, PyObject *args);
00271 static PyObject *Crossfire_Object_CheckArchInventory(Crossfire_Object *who, PyObject *args);
00272 static PyObject *Crossfire_Object_GetOutOfMap(Crossfire_Object *whoptr, PyObject *args);
00273 static PyObject *Crossfire_Object_CreateInside(Crossfire_Object *who, PyObject *args);
00274 static PyObject *Crossfire_Object_InsertInto(Crossfire_Object *who, PyObject *args);
00275 static PyObject *Crossfire_Object_ReadKey(Crossfire_Object *who, PyObject *args);
00276 static PyObject *Crossfire_Object_WriteKey(Crossfire_Object *who, PyObject *args);
00277 static PyObject *Crossfire_Object_CreateTimer(Crossfire_Object *who, PyObject *args);
00278 static PyObject *Crossfire_Object_AddExp(Crossfire_Object *who, PyObject *args);
00279 static PyObject *Crossfire_Object_Move(Crossfire_Object *who, PyObject *args);
00280 static PyObject *Crossfire_Object_ChangeAbil(Crossfire_Object *who, PyObject *args);
00281 static PyObject *Crossfire_Object_Event(Crossfire_Object *who, PyObject *args);
00282 
00283 static int Crossfire_Object_InternalCompare(Crossfire_Object *left, Crossfire_Object *right);
00284 
00285 static PyObject *Crossfire_Object_Long(PyObject *obj);
00286 #ifndef IS_PY3K
00287 static PyObject *Crossfire_Object_Int(PyObject *obj);
00288 #endif
00289 static PyObject *Crossfire_Object_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
00290 
00291 /* Python binding */
00292 static PyGetSetDef Object_getseters[] = {
00293     { "Name",           (getter)Object_GetName,         (setter)Object_SetName, NULL, NULL },
00294     { "NamePl",         (getter)Object_GetNamePl,       (setter)Object_SetNamePl, NULL, NULL },
00295     { "Title",          (getter)Object_GetTitle,        (setter)Object_SetTitle, NULL, NULL },
00296     { "Race",           (getter)Object_GetRace,         (setter)Object_SetRace, NULL, NULL },
00297     { "Skill",          (getter)Object_GetSkill,        (setter)Object_SetSkill, NULL, NULL },
00298     { "Map",            (getter)Object_GetMap,          (setter)Object_SetMap, NULL, NULL },
00299     { "Cha",            (getter)Object_GetCha,          (setter)Object_SetCha, NULL, NULL },
00300     { "Con",            (getter)Object_GetCon,          (setter)Object_SetCon, NULL, NULL },
00301     { "Dex",            (getter)Object_GetDex,          (setter)Object_SetDex, NULL, NULL },
00302     { "Int",            (getter)Object_GetInt,          (setter)Object_SetInt, NULL, NULL },
00303     { "Pow",            (getter)Object_GetPow,          (setter)Object_SetPow, NULL, NULL },
00304     { "Str",            (getter)Object_GetStr,          (setter)Object_SetStr, NULL, NULL },
00305     { "Wis",            (getter)Object_GetWis,          (setter)Object_SetWis, NULL, NULL },
00306     { "HP",             (getter)Object_GetHP,           (setter)Object_SetHP, NULL, NULL },
00307     { "MaxHP",          (getter)Object_GetMaxHP,        (setter)Object_SetMaxHP, NULL, NULL },
00308     { "SP",             (getter)Object_GetSP,           (setter)Object_SetSP, NULL, NULL },
00309     { "MaxSP",          (getter)Object_GetMaxSP,        (setter)Object_SetMaxSP, NULL, NULL },
00310     { "Grace",          (getter)Object_GetGrace,        (setter)Object_SetGrace, NULL, NULL },
00311     { "MaxGrace",       (getter)Object_GetMaxGrace,     (setter)Object_SetMaxGrace, NULL, NULL },
00312     { "Food",           (getter)Object_GetFood,         (setter)Object_SetFood, NULL, NULL },
00313     { "AC",             (getter)Object_GetAC,           (setter)Object_SetAC, NULL, NULL },
00314     { "WC",             (getter)Object_GetWC,           (setter)Object_SetWC, NULL, NULL },
00315     { "Dam",            (getter)Object_GetDam,          (setter)Object_SetDam, NULL, NULL },
00316     { "Luck",           (getter)Object_GetLuck,         NULL, NULL, NULL },
00317     { "Exp",            (getter)Object_GetExp,          (setter)Object_SetExp, NULL, NULL },
00318     { "ExpMul",         (getter)Object_GetExpMul,       NULL, NULL, NULL },
00319     { "PermExp",        (getter)Object_GetPermExp,      NULL, NULL, NULL },
00320     { "Message",        (getter)Object_GetMessage,      (setter)Object_SetMessage, NULL, NULL },
00321     { "Slaying",        (getter)Object_GetSlaying,      (setter)Object_SetSlaying, NULL, NULL },
00322     { "Cursed",         (getter)Object_GetCursed,       (setter)Object_SetCursed, NULL, NULL },
00323     { "Damned",         (getter)Object_GetDamned,       (setter)Object_SetDamned, NULL, NULL },
00324     { "Weight",         (getter)Object_GetWeight,       (setter)Object_SetWeight, NULL, NULL },
00325     { "WeightLimit",    (getter)Object_GetWeightLimit,  (setter)Object_SetWeightLimit, NULL, NULL },
00326     { "Above",          (getter)Object_GetAbove,        NULL, NULL, NULL },
00327     { "Below",          (getter)Object_GetBelow,        NULL, NULL, NULL },
00328     { "Inventory",      (getter)Object_GetInventory,    NULL, NULL, NULL },
00329     { "X",              (getter)Object_GetX,            NULL, NULL, NULL },
00330     { "Y",              (getter)Object_GetY,            NULL, NULL, NULL },
00331     { "Direction",      (getter)Object_GetDirection,    (setter)Object_SetDirection, NULL, NULL },
00332     { "Facing",         (getter)Object_GetFacing,       (setter)Object_SetFacing, NULL, NULL },
00333     { "Unaggressive",   (getter)Object_GetUnaggressive, (setter)Object_SetUnaggressive, NULL, NULL },
00334     { "God",            (getter)Object_GetGod,          (setter)Object_SetGod, NULL, NULL },
00335     { "Pickable",       (getter)Object_GetPickable,     (setter)Object_SetPickable, NULL, NULL },
00336     { "Quantity",       (getter)Object_GetQuantity,     (setter)Object_SetQuantity, NULL, NULL },
00337     { "Invisible",      (getter)Object_GetInvisible,    (setter)Object_SetInvisible, NULL, NULL },
00338     { "Speed",          (getter)Object_GetSpeed,        (setter)Object_SetSpeed, NULL, NULL },
00339     { "SpeedLeft",      (getter)Object_GetSpeedLeft,    (setter)Object_SetSpeedLeft, NULL, NULL },
00340     { "LastSP",         (getter)Object_GetLastSP,       (setter)Object_SetLastSP, NULL, NULL },
00341     { "LastGrace",      (getter)Object_GetLastGrace,    (setter)Object_SetLastGrace, NULL, NULL },
00342     { "LastEat",        (getter)Object_GetLastEat,      (setter)Object_SetLastEat, NULL, NULL },
00343     { "Level",          (getter)Object_GetLevel,        NULL, NULL, NULL },
00344     { "Face",           (getter)Object_GetFace,         (setter)Object_SetFace, NULL, NULL },
00345     { "Anim",           (getter)Object_GetAnim,         (setter)Object_SetAnim, NULL, NULL },
00346     { "AnimSpeed",      (getter)Object_GetAnimSpeed,    (setter)Object_SetAnimSpeed, NULL, NULL },
00347     { "AttackType",     (getter)Object_GetAttackType,   (setter)Object_SetAttackType, NULL, NULL },
00348     { "BeenApplied",    (getter)Object_GetBeenApplied,  NULL, NULL, NULL },
00349     { "Identified",     (getter)Object_GetIdentified,   (setter)Object_SetIdentified, NULL, NULL },
00350     { "Alive",          (getter)Object_GetAlive,        NULL, NULL, NULL },
00351     { "DungeonMaster",  (getter)Object_GetDM,           NULL, NULL, NULL },
00352     { "WasDungeonMaster", (getter)Object_GetWasDM,      NULL, NULL, NULL },
00353     { "Applied",        (getter)Object_GetApplied,      (setter)Object_SetApplied, NULL, NULL },
00354     { "Unpaid",         (getter)Object_GetUnpaid,       (setter)Object_SetUnpaid, NULL, NULL },
00355     { "Monster",        (getter)Object_GetMonster,      NULL, NULL, NULL },
00356     { "Friendly",       (getter)Object_GetFriendly,     (setter)Object_SetFriendly, NULL, NULL },
00357     { "Generator",      (getter)Object_GetGenerator,    NULL, NULL, NULL },
00358     { "Thrown",         (getter)Object_GetThrown,       NULL, NULL, NULL },
00359     { "CanSeeInvisible", (getter)Object_GetCanSeeInvisible, (setter)Object_SetCanSeeInvisible, NULL, NULL },
00360     { "Rollable",       (getter)Object_GetRollable,     (setter)Object_SetRollable, NULL, NULL },
00361     { "Turnable",       (getter)Object_GetTurnable,     (setter)Object_SetTurnable, NULL, NULL },
00362     { "UsedUp",         (getter)Object_GetUsedUp,       (setter)Object_SetUsedUp, NULL, NULL },
00363     { "Splitting",      (getter)Object_GetSplitting,    NULL, NULL, NULL },
00364     { "Blind",          (getter)Object_GetBlind,        (setter)Object_SetBlind, NULL, NULL },
00365     { "CanUseHorn",     (getter)Object_GetCanUseHorn,   NULL, NULL, NULL },
00366     { "CanUseRod",      (getter)Object_GetCanUseRod,    NULL, NULL, NULL },
00367     { "CanUseSkill",    (getter)Object_GetCanUseSkill,  NULL, NULL, NULL },
00368     { "KnownCursed",    (getter)Object_GetKnownCursed,  (setter)Object_SetKnownCursed, NULL, NULL },
00369     { "Stealthy",       (getter)Object_GetStealthy,     (setter)Object_SetStealthy, NULL, NULL },
00370     { "Confused",       (getter)Object_GetConfused,     (setter)Object_SetConfused, NULL, NULL },
00371     { "Sleeping",       (getter)Object_GetSleeping,     (setter)Object_SetSleeping, NULL, NULL },
00372     { "Lifesaver",      (getter)Object_GetLifesaver,    (setter)Object_SetLifesaver, NULL, NULL },
00373     { "Floor",          (getter)Object_GetFloor,        NULL, NULL, NULL },
00374     { "HasXRays",       (getter)Object_GetHasXRays,     (setter)Object_SetHasXRays, NULL, NULL },
00375     { "CanUseRing",     (getter)Object_GetCanUseRing,   NULL, NULL, NULL },
00376     { "CanUseBow",      (getter)Object_GetCanUseBow,    NULL, NULL, NULL },
00377     { "CanUseWand",     (getter)Object_GetCanUseWand,   NULL, NULL, NULL },
00378     { "CanSeeInDark",   (getter)Object_GetCanSeeInDark, (setter)Object_SetCanSeeInDark, NULL, NULL },
00379     { "KnownMagical",   (getter)Object_GetKnownMagical, (setter)Object_SetKnownMagical, NULL, NULL },
00380     { "CanUseWeapon",   (getter)Object_GetCanUseWeapon, NULL, NULL, NULL },
00381     { "CanUseArmour",   (getter)Object_GetCanUseArmour, NULL, NULL, NULL },
00382     { "CanUseScroll",   (getter)Object_GetCanUseScroll, NULL, NULL, NULL },
00383     { "CanCastSpell",   (getter)Object_GetCanCastSpell, NULL, NULL, NULL },
00384     { "ReflectSpells",  (getter)Object_GetReflectSpells, (setter)Object_SetReflectSpells, NULL, NULL },
00385     { "ReflectMissiles", (getter)Object_GetReflectMissiles, (setter)Object_SetReflectMissiles, NULL, NULL },
00386     { "Unique",         (getter)Object_GetUnique,       (setter)Object_SetUnique, NULL, NULL },
00387     { "RunAway",        (getter)Object_GetRunAway,      (setter)Object_SetRunAway, NULL, NULL },
00388     { "Scared",         (getter)Object_GetScared,       (setter)Object_SetScared, NULL, NULL },
00389     { "Undead",         (getter)Object_GetUndead,       (setter)Object_SetUndead, NULL, NULL },
00390     { "BlocksView",     (getter)Object_GetBlocksView,   (setter)Object_SetBlocksView, NULL, NULL },
00391     { "HitBack",        (getter)Object_GetHitBack,      (setter)Object_SetHitBack, NULL, NULL },
00392     { "StandStill",     (getter)Object_GetStandStill,   (setter)Object_SetStandStill, NULL, NULL },
00393     { "OnlyAttack",     (getter)Object_GetOnlyAttack,   (setter)Object_SetOnlyAttack, NULL, NULL },
00394     { "MakeInvisible",  (getter)Object_GetMakeInvisible, (setter)Object_SetMakeInvisible, NULL, NULL },
00395     { "Money",          (getter)Object_GetMoney,        NULL, NULL, NULL },
00396     { "Type",           (getter)Object_GetType,         NULL, NULL, NULL },
00397     { "Subtype",        (getter)Object_GetSubtype,      NULL, NULL, NULL },
00398     { "Value",          (getter)Object_GetValue,        (setter)Object_SetValue, NULL, NULL },
00399     { "ArchName",       (getter)Object_GetArchName,     NULL, NULL, NULL },
00400     { "Archetype",      (getter)Object_GetArchetype,    NULL, NULL, NULL },
00401     { "Exists",         (getter)Object_GetExists,       NULL, NULL, NULL },
00402     { "NoSave",         (getter)Object_GetNoSave,       (setter)Object_SetNoSave, NULL, NULL },
00403     { "Env",            (getter)Object_GetEnv,          NULL, NULL, NULL },
00404     { "MoveType",       (getter)Object_GetMoveType,     NULL, NULL, NULL },
00405     { "MoveBlock",      (getter)Object_GetMoveBlock,    NULL, NULL, NULL },
00406     { "MoveAllow",      (getter)Object_GetMoveAllow,    NULL, NULL, NULL },
00407     { "MoveOn",         (getter)Object_GetMoveOn,       NULL, NULL, NULL },
00408     { "MoveOff",        (getter)Object_GetMoveOff,      NULL, NULL, NULL },
00409     { "MoveSlow",       (getter)Object_GetMoveSlow,     NULL, NULL, NULL },
00410     { "MoveSlowPenalty", (getter)Object_GetMoveSlowPenalty, NULL, NULL, NULL },
00411     { "Owner",          (getter)Object_GetOwner,        (setter)Object_SetOwner, NULL, NULL },
00412     { "Enemy",          (getter)Object_GetEnemy,        (setter)Object_SetEnemy, NULL, NULL },
00413     { "Count",          (getter)Object_GetCount,        NULL, NULL, NULL },
00414     { "GodGiven",       (getter)Object_GetGodGiven,     (setter)Object_SetGodGiven, NULL, NULL },
00415     { "IsPet",          (getter)Object_GetIsPet,        (setter)Object_SetIsPet, NULL, NULL },
00416     { "AttackMovement", (getter)Object_GetAttackMovement, (setter)Object_SetAttackMovement, NULL, NULL },
00417     { "Duration",       (getter)Object_GetDuration,     (setter)Object_SetDuration, NULL, NULL },
00418     { "GlowRadius",     (getter)Object_GetGlowRadius,   (setter)Object_SetGlowRadius, NULL, NULL },
00419     { "Animated",       (getter)Object_GetAnimated,     (setter)Object_SetAnimated, NULL, NULL },
00420     { "NoDamage",       (getter)Object_GetNoDamage,     (setter)Object_SetNoDamage, NULL, NULL },
00421     { "RandomMovement", (getter)Object_GetRandomMovement, (setter)Object_SetRandomMovement, NULL, NULL },
00422     { NULL, NULL, NULL, NULL, NULL }
00423 };
00424 
00425 static PyMethodDef ObjectMethods[] = {
00426     { "Remove",         (PyCFunction)Crossfire_Object_Remove,       METH_NOARGS,  NULL },
00427     { "Apply",          (PyCFunction)Crossfire_Object_Apply,        METH_VARARGS, NULL },
00428     { "Drop",           (PyCFunction)Crossfire_Object_Drop,         METH_O,       NULL },
00429     { "Fix",            (PyCFunction)Crossfire_Object_Fix,          METH_NOARGS,  NULL },
00430     { "Say",            (PyCFunction)Crossfire_Object_Say,          METH_VARARGS, NULL },
00431     { "Speak",          (PyCFunction)Crossfire_Object_Say,          METH_VARARGS, NULL },
00432     { "Take",           (PyCFunction)Crossfire_Object_Take,         METH_O,       NULL },
00433     { "Teleport",       (PyCFunction)Crossfire_Object_Teleport,     METH_VARARGS, NULL },
00434     { "Reposition",     (PyCFunction)Crossfire_Object_Reposition,   METH_VARARGS, NULL },
00435     { "QueryName",      (PyCFunction)Crossfire_Object_QueryName,    METH_NOARGS,  NULL },
00436     { "GetResist",      (PyCFunction)Crossfire_Object_GetResist,    METH_VARARGS, NULL },
00437     { "SetResist",      (PyCFunction)Crossfire_Object_SetResist,    METH_VARARGS, NULL },
00438     { "ActivateRune",   (PyCFunction)Crossfire_Object_ActivateRune, METH_O,       NULL },
00439     { "CheckTrigger",   (PyCFunction)Crossfire_Object_CheckTrigger, METH_O,       NULL },
00440     { "QueryCost",      (PyCFunction)Crossfire_Object_QueryCost,    METH_VARARGS, NULL },
00441     { "Cast",           (PyCFunction)Crossfire_Object_Cast,         METH_VARARGS, NULL },
00442     { "LearnSpell",     (PyCFunction)Crossfire_Object_LearnSpell,   METH_O,       NULL },
00443     { "ForgetSpell",    (PyCFunction)Crossfire_Object_ForgetSpell,  METH_O,       NULL },
00444     { "KnowSpell",      (PyCFunction)Crossfire_Object_KnowSpell,    METH_VARARGS, NULL },
00445     { "CastAbility",    (PyCFunction)Crossfire_Object_CastAbility,  METH_VARARGS, NULL },
00446     { "PayAmount",      (PyCFunction)Crossfire_Object_PayAmount,    METH_VARARGS, NULL },
00447     { "Pay",            (PyCFunction)Crossfire_Object_Pay,          METH_O,       NULL },
00448     { "CheckInventory", (PyCFunction)Crossfire_Object_CheckInventory, METH_VARARGS, NULL },
00449     { "CheckArchInventory", (PyCFunction)Crossfire_Object_CheckArchInventory, METH_VARARGS, NULL },
00450     { "OutOfMap",       (PyCFunction)Crossfire_Object_GetOutOfMap,  METH_VARARGS, NULL },
00451     { "CreateObject",   (PyCFunction)Crossfire_Object_CreateInside, METH_VARARGS, NULL },
00452     { "InsertInto",     (PyCFunction)Crossfire_Object_InsertInto,   METH_O,       NULL },
00453     { "ReadKey",        (PyCFunction)Crossfire_Object_ReadKey,      METH_VARARGS, NULL },
00454     { "WriteKey",       (PyCFunction)Crossfire_Object_WriteKey,     METH_VARARGS, NULL },
00455     { "CreateTimer",    (PyCFunction)Crossfire_Object_CreateTimer,  METH_VARARGS, NULL },
00456     { "AddExp",         (PyCFunction)Crossfire_Object_AddExp,       METH_VARARGS, NULL },
00457     { "Move",           (PyCFunction)Crossfire_Object_Move,         METH_VARARGS, NULL },
00458     { "ChangeAbil",     (PyCFunction)Crossfire_Object_ChangeAbil,   METH_O,       NULL },
00459     { "Event",          (PyCFunction)Crossfire_Object_Event,        METH_VARARGS, NULL },
00460     { NULL, NULL, 0, NULL }
00461 };
00462 
00463 static PyNumberMethods ObjectConvert = {
00464     NULL,            /* binaryfunc nb_add; */        /* __add__ */
00465     NULL,            /* binaryfunc nb_subtract; */   /* __sub__ */
00466     NULL,            /* binaryfunc nb_multiply; */   /* __mul__ */
00467 #ifndef IS_PY3K
00468     NULL,            /* binaryfunc nb_divide; */     /* __div__ */
00469 #endif
00470     NULL,            /* binaryfunc nb_remainder; */  /* __mod__ */
00471     NULL,            /* binaryfunc nb_divmod; */     /* __divmod__ */
00472     NULL,            /* ternaryfunc nb_power; */     /* __pow__ */
00473     NULL,            /* unaryfunc nb_negative; */    /* __neg__ */
00474     NULL,            /* unaryfunc nb_positive; */    /* __pos__ */
00475     NULL,            /* unaryfunc nb_absolute; */    /* __abs__ */
00476 #ifdef IS_PY3K
00477     NULL,            /* inquiry nb_bool; */          /* __bool__ */
00478 #else
00479     NULL,            /* inquiry nb_nonzero; */       /* __nonzero__ */
00480 #endif
00481     NULL,            /* unaryfunc nb_invert; */      /* __invert__ */
00482     NULL,            /* binaryfunc nb_lshift; */     /* __lshift__ */
00483     NULL,            /* binaryfunc nb_rshift; */     /* __rshift__ */
00484     NULL,            /* binaryfunc nb_and; */        /* __and__ */
00485     NULL,            /* binaryfunc nb_xor; */        /* __xor__ */
00486     NULL,            /* binaryfunc nb_or; */         /* __or__ */
00487 #ifndef IS_PY3K
00488     NULL,            /* coercion nb_coerce; */       /* __coerce__ */
00489 #endif
00490 #ifdef IS_PY3K
00491     /* This is not a typo. For Py3k it should be Crossfire_Object_Long
00492      * and NOT Crossfire_Object_Int.
00493      */
00494     Crossfire_Object_Long, /* unaryfunc nb_int; */    /* __int__ */
00495     NULL,                  /* void *nb_reserved; */
00496 #else
00497     Crossfire_Object_Int, /* unaryfunc nb_int; */    /* __int__ */
00498     Crossfire_Object_Long, /* unaryfunc nb_long; */  /* __long__ */
00499 #endif
00500     NULL,            /* unaryfunc nb_float; */       /* __float__ */
00501 #ifndef IS_PY3K
00502     NULL,            /* unaryfunc nb_oct; */         /* __oct__ */
00503     NULL,            /* unaryfunc nb_hex; */         /* __hex__ */
00504 #endif
00505     NULL,            /* binaryfunc nb_inplace_add; */
00506     NULL,            /* binaryfunc nb_inplace_subtract; */
00507     NULL,            /* binaryfunc nb_inplace_multiply; */
00508 #ifndef IS_PY3K
00509     NULL,            /* binaryfunc nb_inplace_divide; */
00510 #endif
00511     NULL,            /* binaryfunc nb_inplace_remainder; */
00512     NULL,            /* ternaryfunc nb_inplace_power; */
00513     NULL,            /* binaryfunc nb_inplace_lshift; */
00514     NULL,            /* binaryfunc nb_inplace_rshift; */
00515     NULL,            /* binaryfunc nb_inplace_and; */
00516     NULL,            /* binaryfunc nb_inplace_xor; */
00517     NULL,            /* binaryfunc nb_inplace_or; */
00518 
00519     NULL,            /* binaryfunc nb_floor_divide; */
00520     NULL,            /* binaryfunc nb_true_divide; */
00521     NULL,            /* binaryfunc nb_inplace_floor_divide; */
00522     NULL,            /* binaryfunc nb_inplace_true_divide; */
00523 #if defined(IS_PY25) || defined(IS_PY3K)
00524     NULL             /* unaryfunc nb_index; */
00525 #endif
00526 };
00527 
00528 static void Crossfire_Object_dealloc(PyObject *obj);
00529 
00530 static PyObject *Crossfire_Object_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
00531 
00532 /* Our actual Python ObjectType */
00533 PyTypeObject Crossfire_ObjectType = {
00534     PyObject_HEAD_INIT(NULL)
00535 #ifndef IS_PY3K
00536     0,                         /* ob_size*/
00537 #endif
00538     "Crossfire.Object",        /* tp_name*/
00539     sizeof(Crossfire_Object),  /* tp_basicsize*/
00540     0,                         /* tp_itemsize*/
00541     Crossfire_Object_dealloc,  /* tp_dealloc*/
00542     NULL,                      /* tp_print*/
00543     NULL,                      /* tp_getattr*/
00544     NULL,                      /* tp_setattr*/
00545     (cmpfunc)Crossfire_Object_InternalCompare, /* tp_compare*/
00546     NULL,                      /* tp_repr*/
00547     &ObjectConvert,            /* tp_as_number*/
00548     NULL,                      /* tp_as_sequence*/
00549     NULL,                      /* tp_as_mapping*/
00550     PyObject_HashNotImplemented, /* tp_hash */
00551     NULL,                      /* tp_call*/
00552     NULL,                      /* tp_str*/
00553     PyObject_GenericGetAttr,   /* tp_getattro*/
00554     PyObject_GenericSetAttr,   /* tp_setattro*/
00555     NULL,                      /* tp_as_buffer*/
00556     Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags*/
00557     "Crossfire objects",       /* tp_doc */
00558     NULL,                      /* tp_traverse */
00559     NULL,                      /* tp_clear */
00560     NULL,                      /* tp_richcompare */
00561     0,                         /* tp_weaklistoffset */
00562     NULL,                      /* tp_iter */
00563     NULL,                      /* tp_iternext */
00564     ObjectMethods,             /* tp_methods */
00565     NULL,                      /* tp_members */
00566     Object_getseters,          /* tp_getset */
00567     NULL,                      /* tp_base */
00568     NULL,                      /* tp_dict */
00569     NULL,                      /* tp_descr_get */
00570     NULL,                      /* tp_descr_set */
00571     0,                         /* tp_dictoffset */
00572     NULL,                      /* tp_init */
00573     NULL,                      /* tp_alloc */
00574     Crossfire_Object_new,      /* tp_new */
00575     NULL,                      /* tp_free */
00576     NULL,                      /* tp_is_gc */
00577     NULL,                      /* tp_bases */
00578     NULL,                      /* tp_mro */
00579     NULL,                      /* tp_cache */
00580     NULL,                      /* tp_subclasses */
00581     NULL,                      /* tp_weaklist */
00582     NULL,                      /* tp_del */
00583 };
00584 
00585 static PyObject *Player_GetTitle(Crossfire_Object *whoptr, void *closure);
00586 static int Player_SetTitle(Crossfire_Object *whoptr, PyObject *value, void *closure);
00587 static PyObject *Player_GetIP(Crossfire_Player *whoptr, void *closure);
00588 static PyObject *Player_GetMarkedItem(Crossfire_Player *whoptr, void *closure);
00589 static int Player_SetMarkedItem(Crossfire_Player *whoptr, PyObject *value, void *closure);
00590 static PyObject *Crossfire_Player_Message(Crossfire_Player *who, PyObject *args);
00591 static PyObject *Player_GetParty(Crossfire_Player *whoptr, void *closure);
00592 static int Player_SetParty(Crossfire_Player *whoptr, PyObject *value, void *closure);
00593 static PyObject *Crossfire_Player_CanPay(Crossfire_Player *who, PyObject *args);
00594 static PyObject *Player_GetBedMap(Crossfire_Player *whoptr, void *closure);
00595 static PyObject *Player_GetBedX(Crossfire_Player *whoptr, void *closure);
00596 static PyObject *Player_GetBedY(Crossfire_Player *whoptr, void *closure);
00597 static int Player_SetBedMap(Crossfire_Player *whoptr, PyObject *value, void *closure);
00598 static int Player_SetBedX(Crossfire_Player *whoptr, PyObject *value, void *closure);
00599 static int Player_SetBedY(Crossfire_Player *whoptr, PyObject *value, void *closure);
00600 
00601 static PyGetSetDef Player_getseters[] = {
00602     { "Title",         (getter)Player_GetTitle,         (setter)Player_SetTitle, NULL, NULL },
00603     { "IP",            (getter)Player_GetIP,            NULL, NULL, NULL },
00604     { "MarkedItem",    (getter)Player_GetMarkedItem,    (setter)Player_SetMarkedItem, NULL, NULL },
00605     { "Party",         (getter)Player_GetParty,         (setter)Player_SetParty,      NULL, NULL },
00606     { "BedMap",        (getter)Player_GetBedMap,        (setter)Player_SetBedMap, NULL, NULL },
00607     { "BedX",          (getter)Player_GetBedX,          (setter)Player_SetBedX, NULL, NULL },
00608     { "BedY",          (getter)Player_GetBedY,          (setter)Player_SetBedY, NULL, NULL },
00609     { NULL, NULL, NULL, NULL, NULL }
00610 };
00611 
00612 static PyMethodDef PlayerMethods[] = {
00613     { "Message",        (PyCFunction)Crossfire_Player_Message, METH_VARARGS, NULL },
00614     { "Write",          (PyCFunction)Crossfire_Player_Message, METH_VARARGS, NULL },
00615     { "CanPay",         (PyCFunction)Crossfire_Player_CanPay,  METH_NOARGS,  NULL },
00616     { NULL, NULL, 0, NULL }
00617 };
00618 
00619 static void Crossfire_Player_dealloc(PyObject *obj);
00620 
00621 static PyObject *Crossfire_Player_new(PyTypeObject *type, PyObject *args, PyObject *kwds);
00622 
00623 /* Our actual Python ObjectPlayerType */
00624 PyTypeObject Crossfire_PlayerType = {
00625     PyObject_HEAD_INIT(NULL)
00626 #ifndef IS_PY3K
00627     0,                         /* ob_size*/
00628 #endif
00629     "Crossfire.Player",        /* tp_name*/
00630     sizeof(Crossfire_Player),  /* tp_basicsize*/
00631     0,                         /* tp_itemsize*/
00632     Crossfire_Player_dealloc,  /* tp_dealloc*/
00633     NULL,                      /* tp_print*/
00634     NULL,                      /* tp_getattr*/
00635     NULL,                      /* tp_setattr*/
00636     NULL,                      /* tp_compare*/
00637     NULL,                      /* tp_repr*/
00638     NULL,                      /* tp_as_number*/
00639     NULL,                      /* tp_as_sequence*/
00640     NULL,                      /* tp_as_mapping*/
00641     PyObject_HashNotImplemented, /* tp_hash */
00642     NULL,                      /* tp_call*/
00643     NULL,                      /* tp_str*/
00644     PyObject_GenericGetAttr,   /* tp_getattro*/
00645     PyObject_GenericSetAttr,   /* tp_setattro*/
00646     NULL,                      /* tp_as_buffer*/
00647     Py_TPFLAGS_DEFAULT,        /* tp_flags*/
00648     "Crossfire player",        /* tp_doc */
00649     NULL,                      /* tp_traverse */
00650     NULL,                      /* tp_clear */
00651     NULL,                      /* tp_richcompare */
00652     0,                         /* tp_weaklistoffset */
00653     NULL,                      /* tp_iter */
00654     NULL,                      /* tp_iternext */
00655     PlayerMethods,             /* tp_methods */
00656     NULL,                      /* tp_members */
00657     Player_getseters,          /* tp_getset */
00658     &Crossfire_ObjectType,     /* tp_base */
00659     NULL,                      /* tp_dict */
00660     NULL,                      /* tp_descr_get */
00661     NULL,                      /* tp_descr_set */
00662     0,                         /* tp_dictoffset */
00663     NULL,                      /* tp_init */
00664     NULL,                      /* tp_alloc */
00665     Crossfire_Player_new,      /* tp_new */
00666     NULL,                      /* tp_free */
00667     NULL,                      /* tp_is_gc */
00668     NULL,                      /* tp_bases */
00669     NULL,                      /* tp_mro */
00670     NULL,                      /* tp_cache */
00671     NULL,                      /* tp_subclasses */
00672     NULL,                      /* tp_weaklist */
00673     NULL,                      /* tp_del */
00674 };