text encoding fixed
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
/*********************************************************************
|
||||
/*********************************************************************
|
||||
* date : 2007.04.07
|
||||
* file : castle.cpp
|
||||
* author : mhh
|
||||
* description :
|
||||
* 봉화 번호 : 11506 - 11510
|
||||
* 메틴석 번호 : 8012 - 8014, 8024-8027
|
||||
* 봉화 번호 : 11506 - 11510
|
||||
* 메틴석 번호 : 8012 - 8014, 8024-8027
|
||||
*/
|
||||
|
||||
#define _castle_cpp_
|
||||
@@ -21,13 +21,13 @@
|
||||
#include "char.h"
|
||||
#include "sectree_manager.h"
|
||||
|
||||
#define EMPIRE_NONE 0 // 아무국가 아님
|
||||
#define EMPIRE_RED 1 // 신수
|
||||
#define EMPIRE_YELLOW 2 // 천조
|
||||
#define EMPIRE_BLUE 3 // 진노
|
||||
#define EMPIRE_NONE 0 // 아무국가 아님
|
||||
#define EMPIRE_RED 1 // 신수
|
||||
#define EMPIRE_YELLOW 2 // 천조
|
||||
#define EMPIRE_BLUE 3 // 진노
|
||||
|
||||
|
||||
#define SIEGE_EVENT_PULSE PASSES_PER_SEC(60*5) // 5분
|
||||
#define SIEGE_EVENT_PULSE PASSES_PER_SEC(60*5) // 5분
|
||||
|
||||
|
||||
#define GET_CAHR_MANAGER() CHARACTER_MANAGER::instance()
|
||||
@@ -171,7 +171,7 @@ static POSITION s_frog_pos[4][MAX_CASTLE_FROG] = {
|
||||
};
|
||||
|
||||
|
||||
/* 경비병 경비구역 */
|
||||
/* 경비병 경비구역 */
|
||||
struct GUARD_REGION
|
||||
{
|
||||
int sx, sy, ex, ey;
|
||||
@@ -247,10 +247,10 @@ EVENTFUNC(castle_siege_event)
|
||||
|
||||
info->pulse += SIEGE_EVENT_PULSE;
|
||||
|
||||
// 공성 시작후 30분 이내라면 안내만 하자
|
||||
// 공성 시작후 30분 이내라면 안내만 하자
|
||||
if (info->pulse < PASSES_PER_SEC(30*60))
|
||||
{
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s에서 봉화를 둘러싸고 전투가 진행중입니다."),
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s에서 봉화를 둘러싸고 전투가 진행중입니다."),
|
||||
EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
BroadcastNotice(buf);
|
||||
|
||||
@@ -264,19 +264,19 @@ EVENTFUNC(castle_siege_event)
|
||||
|
||||
case CASTLE_SIEGE_STRUGGLE:
|
||||
{
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 수성에 성공했습니다."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 수성에 성공했습니다."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
BroadcastNotice(buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("지금부터 %s은 30분간 봉화를 파괴하여 보상을 획득 할 수 있습니다."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("지금부터 %s은 30분간 봉화를 파괴하여 보상을 획득 할 수 있습니다."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
BroadcastNotice(buf);
|
||||
|
||||
GET_SIEGE_STATE() = CASTLE_SIEGE_END;
|
||||
|
||||
return PASSES_PER_SEC(60*30); // 30분
|
||||
return PASSES_PER_SEC(60*30); // 30분
|
||||
}
|
||||
break;
|
||||
case CASTLE_SIEGE_END:
|
||||
BroadcastNotice(LC_TEXT("30분이 경과했습니다.. 봉화가 사라집니다."));
|
||||
BroadcastNotice(LC_TEXT("30분이 경과했습니다.. 봉화가 사라집니다."));
|
||||
castle_end_siege();
|
||||
break;
|
||||
}
|
||||
@@ -331,7 +331,7 @@ EVENTFUNC(castle_stone_event)
|
||||
if (NULL == sectree_map)
|
||||
return 0;
|
||||
|
||||
/* 15마리씩 2번 소환 */
|
||||
/* 15마리씩 2번 소환 */
|
||||
const int SPAWN_COUNT = 15;
|
||||
|
||||
if (info->spawn_count < (SPAWN_COUNT * 2))
|
||||
@@ -351,7 +351,7 @@ EVENTFUNC(castle_stone_event)
|
||||
info->spawn_count += SPAWN_COUNT;
|
||||
|
||||
if (info->spawn_count < (SPAWN_COUNT * 2))
|
||||
return PASSES_PER_SEC(30 * 60); // 30분
|
||||
return PASSES_PER_SEC(30 * 60); // 30분
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
@@ -598,24 +598,24 @@ void castle_start_siege(int empire, int tower_count)
|
||||
|
||||
castle_spawn_tower(empire, tower_count);
|
||||
|
||||
/* 공성 타이머 시작 */
|
||||
/* 공성 타이머 시작 */
|
||||
{
|
||||
castle_event_info* info = AllocEventInfo<castle_event_info>();
|
||||
|
||||
info->empire = empire;
|
||||
info->pulse = 0;
|
||||
|
||||
GET_SIEGE_EVENT(empire) = event_create(castle_siege_event, info, /*5분*/SIEGE_EVENT_PULSE);
|
||||
GET_SIEGE_EVENT(empire) = event_create(castle_siege_event, info, /*5분*/SIEGE_EVENT_PULSE);
|
||||
}
|
||||
|
||||
/* 메틴석 소환 타이머 시작 */
|
||||
/* 메틴석 소환 타이머 시작 */
|
||||
{
|
||||
castle_stone_event_info* info = AllocEventInfo<castle_stone_event_info>();
|
||||
|
||||
info->spawn_count = 0;
|
||||
info->empire = empire;
|
||||
|
||||
GET_STONE_EVENT(empire) = event_create(castle_stone_event, info, /* 1초 */PASSES_PER_SEC(1));
|
||||
GET_STONE_EVENT(empire) = event_create(castle_stone_event, info, /* 1초 */PASSES_PER_SEC(1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -649,7 +649,7 @@ LPCHARACTER castle_spawn_frog(int empire)
|
||||
int dir = 1;
|
||||
long map_index = FN_castle_map_index(empire);
|
||||
|
||||
/* 황금두꺼비 소환할 곳이 있나? */
|
||||
/* 황금두꺼비 소환할 곳이 있나? */
|
||||
POSITION *empty_pos = FN_empty_frog_pos(empire);
|
||||
if (NULL == empty_pos)
|
||||
return NULL;
|
||||
@@ -667,7 +667,7 @@ LPCHARACTER castle_spawn_frog(int empire)
|
||||
{
|
||||
frog->SetEmpire(empire);
|
||||
int empty_index = FN_empty_frog_index(empire);
|
||||
// 스폰성공
|
||||
// 스폰성공
|
||||
GET_FROG(empire, empty_index) = frog;
|
||||
return frog;
|
||||
}
|
||||
@@ -778,7 +778,7 @@ bool castle_spawn_tower(int empire, int tower_count)
|
||||
if (NULL == sectree_map)
|
||||
return false;
|
||||
|
||||
// 초기화
|
||||
// 초기화
|
||||
DO_ALL_TOWER(i)
|
||||
{
|
||||
if (GET_TOWER(empire, i))
|
||||
@@ -786,7 +786,7 @@ bool castle_spawn_tower(int empire, int tower_count)
|
||||
GET_TOWER(empire, i) = NULL;
|
||||
}
|
||||
|
||||
int spawn_count = MINMAX(MIN_CASTLE_TOWER, tower_count, MAX_CASTLE_TOWER); // 5 ~ 10마리
|
||||
int spawn_count = MINMAX(MIN_CASTLE_TOWER, tower_count, MAX_CASTLE_TOWER); // 5 ~ 10마리
|
||||
|
||||
for (int j = 0; j < spawn_count; ++j)
|
||||
{
|
||||
@@ -796,13 +796,13 @@ bool castle_spawn_tower(int empire, int tower_count)
|
||||
// broad cast
|
||||
{
|
||||
char buf[1024];
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s에 전쟁의 시작을 알리는 봉화가 나타났습니다."), EMPIRE_NAME(empire));
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s에 전쟁의 시작을 알리는 봉화가 나타났습니다."), EMPIRE_NAME(empire));
|
||||
BroadcastNotice(buf);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 경비병리더가 죽으면 단순하게 슬롯만 비운다. */
|
||||
/* 경비병리더가 죽으면 단순하게 슬롯만 비운다. */
|
||||
void castle_guard_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
{
|
||||
int empire = ch->GetEmpire();
|
||||
@@ -823,7 +823,7 @@ void castle_guard_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
}
|
||||
|
||||
|
||||
/* 황금 두꺼비가 죽으면 killer에게 1천만냥 */
|
||||
/* 황금 두꺼비가 죽으면 killer에게 1천만냥 */
|
||||
void castle_frog_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
{
|
||||
if (NULL == ch || NULL == killer)
|
||||
@@ -837,15 +837,15 @@ void castle_frog_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
{
|
||||
GET_FROG(empire, i) = NULL;
|
||||
|
||||
killer->PointChange(POINT_GOLD, 10000000 /*1천만*/, true);
|
||||
//CMonarch::instance().SendtoDBAddMoney(30000000/*3천만*/, killer->GetEmpire(), killer);
|
||||
killer->PointChange(POINT_GOLD, 10000000 /*1천만*/, true);
|
||||
//CMonarch::instance().SendtoDBAddMoney(30000000/*3천만*/, killer->GetEmpire(), killer);
|
||||
castle_save();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 봉화가 모두 죽으면(?) 공성전이 끝난다 */
|
||||
/* 봉화가 모두 죽으면(?) 공성전이 끝난다 */
|
||||
void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
{
|
||||
char buf[1024] = {0};
|
||||
@@ -864,7 +864,7 @@ void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
case CASTLE_SIEGE_END:
|
||||
{
|
||||
int siege_end = true;
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 봉화를 파괴했습니다."), EMPIRE_NAME(killer_empire));
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 봉화를 파괴했습니다."), EMPIRE_NAME(killer_empire));
|
||||
BroadcastNotice(buf);
|
||||
|
||||
LogManager::instance().CharLog(killer, 0, "CASTLE_TORCH_KILL", "");
|
||||
@@ -885,12 +885,12 @@ void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
|
||||
{
|
||||
if (GET_SIEGE_STATE() == CASTLE_SIEGE_STRUGGLE)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 수성에 실패하여 전쟁에 패배하였습니다.."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 수성에 실패하여 전쟁에 패배하였습니다.."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
BroadcastNotice(buf);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 모든 봉화를 파괴하였습니다."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
snprintf(buf, sizeof(buf), LC_TEXT("%s이 모든 봉화를 파괴하였습니다."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
|
||||
BroadcastNotice(buf);
|
||||
}
|
||||
castle_end_siege();
|
||||
@@ -929,27 +929,27 @@ bool castle_is_guard_vnum(DWORD vnum)
|
||||
{
|
||||
switch (vnum)
|
||||
{
|
||||
/* 상급 창경비병 */
|
||||
/* 상급 창경비병 */
|
||||
case 11112:
|
||||
case 11114:
|
||||
case 11116:
|
||||
/* 중급 창경비병 */
|
||||
/* 중급 창경비병 */
|
||||
case 11106:
|
||||
case 11108:
|
||||
case 11110:
|
||||
/* 하급 창경비병 */
|
||||
/* 하급 창경비병 */
|
||||
case 11100:
|
||||
case 11102:
|
||||
case 11104:
|
||||
/* 상급 활경비병 */
|
||||
/* 상급 활경비병 */
|
||||
case 11113:
|
||||
case 11115:
|
||||
case 11117:
|
||||
/* 중급 활경비병 */
|
||||
/* 중급 활경비병 */
|
||||
case 11107:
|
||||
case 11109:
|
||||
case 11111:
|
||||
/* 하급 활경비병 */
|
||||
/* 하급 활경비병 */
|
||||
case 11101:
|
||||
case 11103:
|
||||
case 11105:
|
||||
@@ -963,34 +963,34 @@ int castle_cost_of_hiring_guard(DWORD group_vnum)
|
||||
{
|
||||
switch (group_vnum)
|
||||
{
|
||||
/* 하급 */
|
||||
case 9501: /* 신수 창경비 */
|
||||
case 9511: /* 진노 창경비 */
|
||||
case 9521: /* 천조 창경비 */
|
||||
/* 하급 */
|
||||
case 9501: /* 신수 창경비 */
|
||||
case 9511: /* 진노 창경비 */
|
||||
case 9521: /* 천조 창경비 */
|
||||
|
||||
case 9502: /* 신수 활경비 */
|
||||
case 9512: /* 진노 활경비 */
|
||||
case 9522: /* 천조 활경비 */
|
||||
case 9502: /* 신수 활경비 */
|
||||
case 9512: /* 진노 활경비 */
|
||||
case 9522: /* 천조 활경비 */
|
||||
return (100*10000);
|
||||
|
||||
/* 중급 */
|
||||
case 9503: /* 신수 창경비 */
|
||||
case 9513: /* 진노 창경비 */
|
||||
case 9523: /* 천조 창경비 */
|
||||
/* 중급 */
|
||||
case 9503: /* 신수 창경비 */
|
||||
case 9513: /* 진노 창경비 */
|
||||
case 9523: /* 천조 창경비 */
|
||||
|
||||
case 9504: /* 신수 활경비 */
|
||||
case 9514: /* 진노 활경비 */
|
||||
case 9524: /* 천조 활경비 */
|
||||
case 9504: /* 신수 활경비 */
|
||||
case 9514: /* 진노 활경비 */
|
||||
case 9524: /* 천조 활경비 */
|
||||
return (300*10000);
|
||||
|
||||
/* 상급 */
|
||||
case 9505: /* 신수 창경비 */
|
||||
case 9515: /* 진노 창경비 */
|
||||
case 9525: /* 천조 창경비 */
|
||||
/* 상급 */
|
||||
case 9505: /* 신수 창경비 */
|
||||
case 9515: /* 진노 창경비 */
|
||||
case 9525: /* 천조 창경비 */
|
||||
|
||||
case 9506: /* 신수 활경비 */
|
||||
case 9516: /* 진노 활경비 */
|
||||
case 9526: /* 천조 활경비 */
|
||||
case 9506: /* 신수 활경비 */
|
||||
case 9516: /* 진노 활경비 */
|
||||
case 9526: /* 천조 활경비 */
|
||||
return (1000*10000);
|
||||
}
|
||||
|
||||
@@ -1010,7 +1010,7 @@ bool castle_can_attack(LPCHARACTER ch, LPCHARACTER victim)
|
||||
|
||||
if (CASTLE_SIEGE_END == GET_SIEGE_STATE())
|
||||
{
|
||||
// 수성에 성공했을때 같은 제국만 봉화를 칠 수 있음
|
||||
// 수성에 성공했을때 같은 제국만 봉화를 칠 수 있음
|
||||
if (castle_is_tower_vnum(victim->GetRaceNum()))
|
||||
{
|
||||
if (ch->GetEmpire() == victim->GetEmpire())
|
||||
@@ -1020,7 +1020,7 @@ bool castle_can_attack(LPCHARACTER ch, LPCHARACTER victim)
|
||||
}
|
||||
}
|
||||
|
||||
// 같은 제국은 파괴 불가
|
||||
// 같은 제국은 파괴 불가
|
||||
if (ch->GetEmpire() == victim->GetEmpire())
|
||||
return false;
|
||||
|
||||
@@ -1044,7 +1044,7 @@ bool castle_frog_to_empire_money(LPCHARACTER ch)
|
||||
if (false == CMonarch::instance().SendtoDBAddMoney(CASTLE_FROG_PRICE, empire, ch))
|
||||
return false;
|
||||
|
||||
GET_FROG(empire, i) = NULL; // 등록해제
|
||||
GET_FROG(empire, i) = NULL; // 등록해제
|
||||
npc->Dead(/*killer*/NULL, /*immediate_dead*/true);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user