Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
VehicleMethods.cpp
Go to the documentation of this file.
1/*
2* Copyright (C) 2010 - 2013 Eluna Lua Engine <http://emudevs.com/>
3* This program is free software licensed under GPL version 3
4* Please see the included DOCS/LICENSE.TXT for more information
5*/
6
7#include "VehicleMethods.h"
8#include "Includes.h"
9
10namespace LuaVehicle
11{
12 int GetBase(lua_State* L, Vehicle* vehicle)
13 {
14 sEluna->Push(L, vehicle->GetBase());
15 return 1;
16 }
17
18 int GetAvailableSeatCount(lua_State* L, Vehicle* vehicle)
19 {
20 sEluna->Push(L, vehicle->GetAvailableSeatCount());
21 return 1;
22 }
23
24 int GetCreatureEntry(lua_State* L, Vehicle* vehicle)
25 {
26 sEluna->Push(L, vehicle->GetCreatureEntry());
27 return 1;
28 }
29
30 int GetPassenger(lua_State* L, Vehicle* vehicle)
31 {
32 int8 seatId = luaL_checkinteger(L, 1);
33 sEluna->Push(L, vehicle->GetPassenger(seatId));
34 return 1;
35 }
36
37 int HasEmptySeat(lua_State* L, Vehicle* vehicle)
38 {
39 int8 seatId = luaL_checkinteger(L, 1);
40 sEluna->Push(L, vehicle->HasEmptySeat(seatId));
41 return 1;
42 }
43
44 int IsVehicleInUse(lua_State* L, Vehicle* vehicle)
45 {
46 sEluna->Push(L, vehicle->IsVehicleInUse());
47 return 1;
48 }
49
50 int InstallAccessory(lua_State* L, Vehicle* vehicle)
51 {
52 uint32 entry = luaL_checkunsigned(L, 1);
53 int8 seatId = luaL_checkinteger(L, 2);
54 bool minion = luaL_checkbool(L, 3);
55 uint8 typeId = luaL_checkunsigned(L, 4);
56 uint32 summonTime = luaL_checkunsigned(L, 5);
57 vehicle->InstallAccessory(entry, seatId, minion, static_cast<TempSummonType>(typeId), summonTime);
58 return 0;
59 }
60
61 int ApplyAllImmunities(lua_State* L, Vehicle* vehicle)
62 {
63 vehicle->ApplyAllImmunities();
64 return 0;
65 }
66
67 int AddPassenger(lua_State* L, Vehicle* vehicle)
68 {
69 Unit* passenger = sEluna->CHECK_UNIT(L, 1);
70 if (!passenger)
71 return 0;
72
73 int8 seatId = luaL_checkinteger(L, 2);
74
75 vehicle->AddPassenger(passenger, seatId);
76 return 0;
77 }
78
79 int EjectPassenger(lua_State* L, Vehicle* vehicle)
80 {
81 Unit* passenger = sEluna->CHECK_UNIT(L, 1);
82 Unit* controller = sEluna->CHECK_UNIT(L, 2);
83 if (!passenger || controller)
84 return 0;
85
86 //vehicle->EjectPassenger(passenger, controller);
87 return 0;
88 }
89
90 int RelocatePassengers(lua_State* L, Vehicle* vehicle)
91 {
92 vehicle->RelocatePassengers();
93 return 0;
94 }
95
96 int RemoveAllPassengers(lua_State* L, Vehicle* vehicle)
97 {
98 vehicle->RemoveAllPassengers();
99 return 0;
100 }
101
102 int RemovePassenger(lua_State* L, Vehicle* vehicle)
103 {
104 Unit* passenger = sEluna->CHECK_UNIT(L, 1);
105 if (!passenger)
106 return 0;
107
108 vehicle->RemovePassenger(passenger);
109 return 0;
110 }
111
112 int RemovePendingEventsForPassenger(lua_State* L, Vehicle* vehicle)
113 {
114 Unit* passenger = sEluna->CHECK_UNIT(L, 1);
115 if (!passenger)
116 return 0;
117
118 //vehicle->RemovePendingEventsForPassenger(passenger); @TODO
119 return 0;
120 }
121
122 int Reset(lua_State* L, Vehicle* vehicle)
123 {
124 bool evading = luaL_optbool(L, 1, false);
125 vehicle->Reset(evading);
126 return 0;
127 }
128}
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::int8_t int8
Definition Define.h:75
#define sEluna
Definition LuaEngine.h:710
TempSummonType
Definition Object.h:67
Definition Unit.h:1367
uint8 GetAvailableSeatCount() const
Gets the available seat count.
Definition Vehicle.cpp:657
Unit * GetBase() const
May be called from scripts.
Definition Vehicle.h:38
Unit * GetPassenger(int8 seatId) const
Gets a passenger on specified seat.
Definition Vehicle.cpp:306
void ApplyAllImmunities()
Applies specific immunities that cannot be set in DB.
Definition Vehicle.cpp:184
void Reset(bool evading=false)
Reapplies immunities and reinstalls accessories. Only has effect for creatures.
Definition Vehicle.cpp:162
Vehicle * RemovePassenger(Unit *passenger)
Removes the passenger from the vehicle.
Definition Vehicle.cpp:487
bool AddPassenger(Unit *passenger, int8 seatId=-1)
Attempts to add a passenger to the vehicle on 'seatId'.
Definition Vehicle.cpp:415
uint32 GetCreatureEntry() const
Definition Vehicle.h:40
void RemoveAllPassengers()
Removes all current and pending passengers from the vehicle.
Definition Vehicle.cpp:241
void InstallAccessory(uint32 entry, int8 seatId, bool minion, TempSummonType type, uint32 summonTime)
Installs an accessory.
Definition Vehicle.cpp:374
bool IsVehicleInUse() const
Returns information whether the vehicle is currently used by any unit.
Definition Vehicle.cpp:567
bool HasEmptySeat(int8 seatId) const
Checks if vehicle's seat specified by 'seatId' is empty.
Definition Vehicle.cpp:285
void RelocatePassengers()
Relocate passengers. Must be called after m_base::Relocate.
Definition Vehicle.cpp:536
int IsVehicleInUse(lua_State *L, Vehicle *vehicle)
int GetAvailableSeatCount(lua_State *L, Vehicle *vehicle)
int GetBase(lua_State *L, Vehicle *vehicle)
int EjectPassenger(lua_State *L, Vehicle *vehicle)
int HasEmptySeat(lua_State *L, Vehicle *vehicle)
int RemovePassenger(lua_State *L, Vehicle *vehicle)
int RemovePendingEventsForPassenger(lua_State *L, Vehicle *vehicle)
int Reset(lua_State *L, Vehicle *vehicle)
int InstallAccessory(lua_State *L, Vehicle *vehicle)
int AddPassenger(lua_State *L, Vehicle *vehicle)
int ApplyAllImmunities(lua_State *L, Vehicle *vehicle)
int RelocatePassengers(lua_State *L, Vehicle *vehicle)
int GetPassenger(lua_State *L, Vehicle *vehicle)
int GetCreatureEntry(lua_State *L, Vehicle *vehicle)
int RemoveAllPassengers(lua_State *L, Vehicle *vehicle)