1 | /* |
1 | /* |
2 | * static char *rcsid_quest_c = |
2 | * static char *rcsid_quest_c = |
3 | * "$Id: quest.c,v 1.1.1.1 2006/02/03 07:11:39 root Exp $"; |
3 | * "$Id: quest.c,v 1.1.1.2 2006/02/22 18:01:22 elmex Exp $"; |
4 | */ |
4 | */ |
5 | |
5 | |
6 | /* |
6 | /* |
7 | CrossFire, A Multiplayer game for X-windows |
7 | CrossFire, A Multiplayer game for X-windows |
8 | |
8 | |
… | |
… | |
69 | return 0; |
69 | return 0; |
70 | return 1; |
70 | return 1; |
71 | } |
71 | } |
72 | #endif |
72 | #endif |
73 | |
73 | |
74 | int quest_is_quest_marker( object* marker, int task ) |
74 | int quest_is_quest_marker( const object* marker, int task ) |
75 | { |
75 | { |
76 | if ( marker->type != QUEST ) |
76 | if ( marker->type != QUEST ) |
77 | return 0; |
77 | return 0; |
78 | if ( task && !TASK_NAME(marker) ) |
78 | if ( task && !TASK_NAME(marker) ) |
79 | return 0; |
79 | return 0; |
80 | if ( !task && TASK_NAME(marker) ) |
80 | if ( !task && TASK_NAME(marker) ) |
81 | return 0; |
81 | return 0; |
82 | return 1; |
82 | return 1; |
83 | } |
83 | } |
84 | |
84 | |
85 | int quest_is_in_progress( object* marker, int task ) |
85 | int quest_is_in_progress( const object* marker, int task ) |
86 | { |
86 | { |
87 | if ( marker->subtype != QUEST_IN_PROGRESS ) |
87 | if ( marker->subtype != QUEST_IN_PROGRESS ) |
88 | return 0; |
88 | return 0; |
89 | return 1; |
89 | return 1; |
90 | } |
90 | } |
91 | |
91 | |
92 | int quest_is_completed( object* marker, int task ) |
92 | int quest_is_completed( const object* marker, int task ) |
93 | { |
93 | { |
94 | if ( marker->type != QUEST ) |
94 | if ( marker->type != QUEST ) |
95 | return 0; |
95 | return 0; |
96 | if ( task && ( !marker->subtype != QUEST_DONE_TASK ) ) |
96 | if ( task && ( !marker->subtype != QUEST_DONE_TASK ) ) |
97 | return 0; |
97 | return 0; |
… | |
… | |
247 | } |
247 | } |
248 | return NULL; |
248 | return NULL; |
249 | } |
249 | } |
250 | #endif |
250 | #endif |
251 | |
251 | |
252 | const char* quest_get_name( object* marker ) |
252 | const char* quest_get_name( const object* marker ) |
253 | { |
253 | { |
254 | if ( marker->type != QUEST ) |
254 | if ( marker->type != QUEST ) |
255 | return NULL; |
255 | return NULL; |
256 | if ( TASK_NAME(marker) ) |
256 | if ( TASK_NAME(marker) ) |
257 | return TASK_NAME(marker); |
257 | return TASK_NAME(marker); |
258 | return QUEST_NAME(marker); |
258 | return QUEST_NAME(marker); |
259 | } |
259 | } |
260 | |
260 | |
261 | object* quest_get_player_quest( object* pl, const char* name, const char* name_pl ) |
261 | object* quest_get_player_quest( const object* pl, const char* name, const char* name_pl ) |
262 | { |
262 | { |
263 | object* quest; |
263 | object* quest; |
264 | for ( quest = pl->inv; quest; quest = quest->below ) |
264 | for ( quest = pl->inv; quest; quest = quest->below ) |
265 | if ( quest->type == QUEST && |
265 | if ( quest->type == QUEST && |
266 | QUEST_NAME(quest) == name && TASK_NAME(quest) == name_pl ) |
266 | QUEST_NAME(quest) == name && TASK_NAME(quest) == name_pl ) |
267 | return quest; |
267 | return quest; |
268 | |
268 | |
269 | return NULL; |
269 | return NULL; |
270 | } |
270 | } |
271 | |
271 | |
272 | object* quest_get_override( object* ob, object* pl ) |
272 | object* quest_get_override( const object* ob, const object* pl ) |
273 | { |
273 | { |
274 | object *in_ob, *in_pl; |
274 | object *in_ob, *in_pl; |
275 | if ( !ob->inv ) |
275 | if ( !ob->inv ) |
276 | return NULL; |
276 | return NULL; |
277 | for ( in_ob = ob->inv; in_ob; in_ob = in_ob->below ) |
277 | for ( in_ob = ob->inv; in_ob; in_ob = in_ob->below ) |
… | |
… | |
284 | } |
284 | } |
285 | } |
285 | } |
286 | return NULL; |
286 | return NULL; |
287 | } |
287 | } |
288 | |
288 | |
289 | const char* quest_get_override_slaying( object* ob, object* pl ) |
289 | const char* quest_get_override_slaying( const object* ob, const object* pl ) |
290 | { |
290 | { |
291 | object* quest; |
291 | object* quest; |
292 | quest = quest_get_override( ob, pl ); |
292 | quest = quest_get_override( ob, pl ); |
293 | if ( quest ) |
293 | if ( quest ) |
294 | return quest->slaying; |
294 | return quest->slaying; |
295 | return ob->slaying; |
295 | return ob->slaying; |
296 | } |
296 | } |
297 | |
297 | |
298 | const char* quest_get_override_msg( object* ob, object* pl ) |
298 | const char* quest_get_override_msg( const object* ob, const object* pl ) |
299 | { |
299 | { |
300 | object* quest; |
300 | object* quest; |
301 | quest = quest_get_override( ob, pl ); |
301 | quest = quest_get_override( ob, pl ); |
302 | if ( quest ) |
302 | if ( quest ) |
303 | return quest->msg; |
303 | return quest->msg; |
… | |
… | |
428 | #define QCT_QS_TD 5 |
428 | #define QCT_QS_TD 5 |
429 | #define QCT_QS_TSD 6 |
429 | #define QCT_QS_TSD 6 |
430 | #define QCT_QSD 7 |
430 | #define QCT_QSD 7 |
431 | #define QCT_QD 8 |
431 | #define QCT_QD 8 |
432 | |
432 | |
433 | int quest_is_override_compatible(object *marker, object* pl) |
433 | int quest_is_override_compatible(const object *marker, const object* pl) |
434 | { |
434 | { |
435 | object* test; |
435 | object* test; |
436 | if ( marker->type != QUEST || marker->subtype != QUEST_OVERRIDE ) |
436 | if ( marker->type != QUEST || marker->subtype != QUEST_OVERRIDE ) |
437 | return 0; |
437 | return 0; |
438 | switch ( marker->stats.hp ) |
438 | switch ( marker->stats.hp ) |