rpgxef/code/game/lua_weapons.c
Walter Julius Hennecke e887081261 Code reformating
2013-05-09 01:59:07 +02:00

122 lines
2.2 KiB
C

// lua library for weapons
#include "g_lua.h"
#ifdef G_LUA
/***
A module for everything converning weapons.
@module weapons
*/
#include "g_weapon.h"
/***
Get the forward vector.
@function GetForward
@return Forward vector.
*/
static int weapon_GetForward(lua_State *L) {
Lua_PushVector(L, forward);
return 1;
}
/***
Get the right vector.
@function GetRight.
@return Right vector.
*/
static int weapon_GetRight(lua_State *L) {
Lua_PushVector(L, right);
return 1;
}
/***
Get the up vector.
@function GetUp
@return Up vector.
*/
static int weapon_GetUp(lua_State *L) {
Lua_PushVector(L, up);
return 1;
}
/***
Get the muzzle point.
@function GetMuzzle
@return Muzzle point.
*/
static int weapon_GetMuzzle(lua_State *L) {
Lua_PushVector(L, muzzle);
return 1;
}
/***
Do damage to an entity.
@function Damage
@param target Target entity.
@param inflictor Inflicting entity. Can be nil.
@param attacker Attacking entity. Can be nil.
@param dir Direction for knockback. Can be nil.
@param point Point. Can be nil.
@param damage Ammount of damage.
@param dflags Damage flags.
@param mod Means of death.
@return Success or failure.
*/
static int weapon_Damage(lua_State *L) {
lent_t* lent;
gentity_t* target = NULL;
gentity_t* inflictor = NULL;
gentity_t* attacker = NULL;
vec_t *dir, *point;
int damage, dflags, mod;
lent = Lua_GetEntity(L, 1);
if(lent == NULL || lent->e == NULL) {
lua_pushboolean(L, qfalse);
return 0;
}
target = Lua_GetEntity(L, 1)->e;
lent = Lua_GetEntity(L, 2);
if(lent != NULL && lent->e != NULL) {
inflictor = lent->e;
}
lent = Lua_GetEntity(L, 3);
if(lent != NULL && lent->e != NULL) {
attacker = lent->e;
}
dir = Lua_GetVector(L, 4);
point = Lua_GetVector(L, 5);
damage = (int)luaL_checknumber(L, 6);
dflags = (int)luaL_checknumber(L, 7);
mod = (int)luaL_checknumber(L, 8);
G_Damage(target, inflictor, attacker, dir, point, damage, dflags, mod);
lua_pushboolean(L, qtrue);
return 0;
}
static const luaL_Reg lib_weapons[] = {
{ "GetForward", weapon_GetForward },
{ "GetRight", weapon_GetRight },
{ "GetUp", weapon_GetUp },
{ "GetMuzzle", weapon_GetMuzzle },
{ "Damage", weapon_Damage },
{ NULL, NULL }
};
int Luaopen_Weapons(lua_State *L) {
luaL_register(L, "weapons", lib_weapons);
return 1;
}
#endif