Crossfire Server, Branch 1.12
R12190
|
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 };