Added constants for Castle Data manipulation (#3531)
* Fixes #3530. * Added constants for script commands getcastledata and setcastledata. * Adjusted the guardian constants to adjust based on MAX_GUARDIANS define value. * Updated scripts to reflect changes. Thanks to @keitenai, @Atemo, and @Lemongrass3110!
This commit is contained in:
parent
75d24ad1ad
commit
7045d585e4
@ -3375,29 +3375,29 @@ to by its map name. Castle information is stored in `guild_castle` SQL table.
|
||||
|
||||
Types of data correspond to `guild_castle` table columns:
|
||||
|
||||
1 - `guild_id` - Guild ID.
|
||||
2 - `economy` - Castle Economy score.
|
||||
3 - `defense` - Castle Defense score.
|
||||
4 - `triggerE` - Number of times the economy was invested in today.
|
||||
5 - `triggerD` - Number of times the defense was invested in today.
|
||||
6 - `nextTime` - unused
|
||||
7 - `payTime` - unused
|
||||
8 - `createTime` - unused
|
||||
9 - `visibleC` - Is 1 if a Kafra was hired for this castle, 0 otherwise.
|
||||
10 - `visibleG0` - Is 1 if the 1st guardian is present (Soldier Guardian)
|
||||
11 - `visibleG1` - Is 1 if the 2nd guardian is present (Soldier Guardian)
|
||||
12 - `visibleG2` - Is 1 if the 3rd guardian is present (Soldier Guardian)
|
||||
13 - `visibleG3` - Is 1 if the 4th guardian is present (Archer Guardian)
|
||||
14 - `visibleG4` - Is 1 if the 5th guardian is present (Archer Guardian)
|
||||
15 - `visibleG5` - Is 1 if the 6th guardian is present (Knight Guardian)
|
||||
16 - `visibleG6` - Is 1 if the 7th guardian is present (Knight Guardian)
|
||||
17 - `visibleG7` - Is 1 if the 8th guardian is present (Knight Guardian)
|
||||
CD_GUILD_ID - Guild ID.
|
||||
CD_CURRENT_ECONOMY - Castle Economy score.
|
||||
CD_CURRENT_DEFENSE - Castle Defense score.
|
||||
CD_INVESTED_ECONOMY - Number of times the economy was invested in today.
|
||||
CD_INVESTED_DEFENSE - Number of times the defense was invested in today.
|
||||
CD_NEXT_TIME - unused
|
||||
CD_PAY_TIME - unused
|
||||
CD_CREATE_TIME - unused
|
||||
CD_ENABLED_KAFRA - Is 1 if a Kafra was hired for this castle, 0 otherwise.
|
||||
CD_ENABLED_GUARDIAN0 - Is 1 if the 1st guardian is present (Soldier Guardian)
|
||||
CD_ENABLED_GUARDIAN1 - Is 1 if the 2nd guardian is present (Soldier Guardian)
|
||||
CD_ENABLED_GUARDIAN2 - Is 1 if the 3rd guardian is present (Soldier Guardian)
|
||||
CD_ENABLED_GUARDIAN3 - Is 1 if the 4th guardian is present (Archer Guardian)
|
||||
CD_ENABLED_GUARDIAN4 - Is 1 if the 5th guardian is present (Archer Guardian)
|
||||
CD_ENABLED_GUARDIAN5 - Is 1 if the 6th guardian is present (Knight Guardian)
|
||||
CD_ENABLED_GUARDIAN6 - Is 1 if the 7th guardian is present (Knight Guardian)
|
||||
CD_ENABLED_GUARDIAN7 - Is 1 if the 8th guardian is present (Knight Guardian)
|
||||
|
||||
All types of data have their meaning determined by War of Emperium scripts,
|
||||
with exception of:
|
||||
- `guild_id` that is always considered ID of the guild that owns the castle,
|
||||
- `defense` that is used in Guardians & Emperium HP calculations,
|
||||
- `visibleG` that is always considered to hold guardian presence bits.
|
||||
- CD_GUILD_ID that is always considered ID of the guild that owns the castle,
|
||||
- CD_CURRENT_DEFENSE that is used in Guardians & Emperium HP calculations,
|
||||
- CD_ENABLED_GUARDIANX that is always considered to hold guardian presence bits.
|
||||
|
||||
The 'setcastledata' command will behave identically, but instead of returning
|
||||
values for the specified types of accessible data, it will alter them and cause
|
||||
|
@ -63,7 +63,7 @@
|
||||
// War of Emperium has started.
|
||||
OnAgitStart:
|
||||
if (strnpcinfo(0) == "Gld_Agit_Manager") end;
|
||||
MapRespawnGuildID strnpcinfo(2),GetCastleData(strnpcinfo(2),1),6;
|
||||
MapRespawnGuildID strnpcinfo(2),GetCastleData(strnpcinfo(2),CD_GUILD_ID),6;
|
||||
GvgOn strnpcinfo(2);
|
||||
|
||||
// Spawn (fall through), or respawn the Emperium once it has been broken.
|
||||
@ -109,16 +109,16 @@ OnAgitBreak:
|
||||
end;
|
||||
}
|
||||
// Adjust Economy Invest Level for Castle
|
||||
set .@Economy,GetCastleData(strnpcinfo(2),2) - 5;
|
||||
set .@Economy,GetCastleData(strnpcinfo(2),CD_CURRENT_ECONOMY) - 5;
|
||||
if (.@Economy < 0) set .@Economy, 0;
|
||||
SetCastleData strnpcinfo(2), 2, .@Economy;
|
||||
SetCastleData strnpcinfo(2), CD_CURRENT_ECONOMY, .@Economy;
|
||||
// Adjust Defense Invest Level for Castle
|
||||
set .@Defence,GetCastleData(strnpcinfo(2),3) - 5;
|
||||
set .@Defence,GetCastleData(strnpcinfo(2),CD_CURRENT_DEFENSE) - 5;
|
||||
if (.@Defence < 0) set .@Defence, 0;
|
||||
SetCastleData strnpcinfo(2), 3, .@Defence;
|
||||
SetCastleData strnpcinfo(2), CD_CURRENT_DEFENSE, .@Defence;
|
||||
|
||||
// Set new Castle Occupant
|
||||
SetCastleData strnpcinfo(2),1, .@GID;
|
||||
SetCastleData strnpcinfo(2),CD_GUILD_ID, .@GID;
|
||||
|
||||
// Announce that the Emperium is destroyed, and respawn all but new castle-occupants.
|
||||
mapannounce strnpcinfo(2),"The emperium has been destroyed.",bc_map|bc_woe,"0x00CCFF",FW_NORMAL,12;
|
||||
@ -127,12 +127,12 @@ OnAgitBreak:
|
||||
// Refresh castle data, disable Kafra and reset Invest information.
|
||||
donpcevent strnpcinfo(0)+"::OnRecvCastle";
|
||||
disablenpc "Kafra Staff#"+strnpcinfo(2);
|
||||
for( set .@i, 4; .@i <= 9; set .@i, .@i+1 ) {
|
||||
for( set .@i, CD_INVESTED_ECONOMY; .@i <= CD_ENABLED_KAFRA; set .@i, .@i+1 ) {
|
||||
SetCastleData strnpcinfo(2), .@i, 0;
|
||||
}
|
||||
// Erase Guardian Database information if the new owners do not have Guardian Research.
|
||||
if( getgdskilllv(.@GID,10002) == 0 ) {
|
||||
for( set .@i, 10; .@i <= 17; set .@i, .@i+1 ) {
|
||||
for( set .@i, CD_ENABLED_GUARDIAN00; .@i < CD_MAX; set .@i, .@i+1 ) {
|
||||
SetCastleData strnpcinfo(2), .@i, 0;
|
||||
}
|
||||
}
|
||||
@ -149,7 +149,7 @@ OnAgitEnd:
|
||||
if (strnpcinfo(0) == "Gld_Agit_Manager") end;
|
||||
GvgOff strnpcinfo(2);
|
||||
// If the castle has no owner at the end of WoE, do not kill Emperium.
|
||||
if (GetCastleData(strnpcinfo(2),1)) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_GUILD_ID)) {
|
||||
KillMonster strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak";
|
||||
}
|
||||
end;
|
||||
@ -160,7 +160,7 @@ OnGuildBreak:
|
||||
// Kill guardians, disable the Kafra, and set owner to 0.
|
||||
killmonster strnpcinfo(2),"Guardian#"+strnpcinfo(2)+"::OnGuardianDied";
|
||||
disablenpc "Kafra Staff#"+strnpcinfo(2);
|
||||
SetCastleData strnpcinfo(2),1,0;
|
||||
SetCastleData strnpcinfo(2),CD_GUILD_ID,0;
|
||||
// Wait before refreshing guild information.
|
||||
sleep 7000;
|
||||
Announce "Guild Base [" + GetCastleName(strnpcinfo(2)) + "] has been abandoned.",0;
|
||||
@ -171,7 +171,7 @@ OnAgitInit:
|
||||
OnRecvCastle:
|
||||
if (strnpcinfo(0) == "Gld_Agit_Manager") end;
|
||||
// Spawn Monsters if the castle is empty.
|
||||
set .@GID, GetCastleData(strnpcinfo(2),1);
|
||||
set .@GID, GetCastleData(strnpcinfo(2),CD_GUILD_ID);
|
||||
if (.@GID == 0) {
|
||||
killmonsterall strnpcinfo(2);
|
||||
if (compare(strnpcinfo(2),"aldeg")) {
|
||||
@ -309,7 +309,7 @@ OnRecvCastle:
|
||||
// And load purchased Guardian in castles.
|
||||
donpcevent "Guardian#"+strnpcinfo(2)+"::OnSpawnGuardians";
|
||||
// And display Kafra if purchased.
|
||||
if (GetCastleData(strnpcinfo(2),9) < 1) disablenpc "Kafra Staff#"+strnpcinfo(2);
|
||||
if (GetCastleData(strnpcinfo(2),CD_ENABLED_KAFRA) < 1) disablenpc "Kafra Staff#"+strnpcinfo(2);
|
||||
}
|
||||
end;
|
||||
}
|
||||
@ -318,7 +318,7 @@ OnRecvCastle:
|
||||
//============================================================
|
||||
- script Kafra Staff#woe::guildkafra -1,{
|
||||
|
||||
set .@GID,GetCastleData(strnpcinfo(2),1);
|
||||
set .@GID,GetCastleData(strnpcinfo(2),CD_GUILD_ID);
|
||||
|
||||
if (compare(strnpcinfo(2),"aldeg")) {
|
||||
setarray .@destination$[0],"Al De Baran","aldebaran";
|
||||
@ -467,7 +467,7 @@ OnRecvCastle:
|
||||
//============================================================
|
||||
- script Castle Manager#cm::cm -1,{
|
||||
|
||||
set .@GID,GetCastleData(strnpcinfo(2),1);
|
||||
set .@GID,GetCastleData(strnpcinfo(2),CD_GUILD_ID);
|
||||
|
||||
// .@guardiantype = Defines the types of guardians per castle basis.
|
||||
// 1 - Soldier Guardian, 2 - Archer Guardian, 3 - Knight Guardian
|
||||
@ -624,19 +624,19 @@ OnRecvCastle:
|
||||
mes "["+strnpcinfo(1)+"]";
|
||||
mes "I will report the Castle briefing, Master.";
|
||||
mes " ";
|
||||
mes "^0000ffNow, the commercial growth level is "+GetCastleData(strnpcinfo(2),2)+".";
|
||||
if (GetCastleData(strnpcinfo(2),4)) {
|
||||
mes " You invested "+GetCastleData(strnpcinfo(2),4)+" times in past 1 day.";
|
||||
mes "^0000ffNow, the commercial growth level is "+GetCastleData(strnpcinfo(2),CD_CURRENT_ECONOMY)+".";
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY)) {
|
||||
mes " You invested "+GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY)+" times in past 1 day.";
|
||||
}
|
||||
mes " Now, the Castle Defense level is "+GetCastleData(strnpcinfo(2),3)+".^000000";
|
||||
if (GetCastleData(strnpcinfo(2),5)) {
|
||||
mes " ^0000ff- You invested "+GetCastleData(strnpcinfo(2),5)+" times in past 1 day.^000000";
|
||||
mes " Now, the Castle Defense level is "+GetCastleData(strnpcinfo(2),CD_CURRENT_DEFENSE)+".^000000";
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE)) {
|
||||
mes " ^0000ff- You invested "+GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE)+" times in past 1 day.^000000";
|
||||
}
|
||||
mes " ";
|
||||
mes "That's all I have to report, Master.";
|
||||
close;
|
||||
case 2:
|
||||
set .@Economy,GetCastleData(strnpcinfo(2),2);
|
||||
set .@Economy,GetCastleData(strnpcinfo(2),CD_CURRENT_ECONOMY);
|
||||
if (.@Economy < 6) { set .@eco_invest,5000; }
|
||||
else if ((.@Economy >= 6) && (.@Economy <= 10)) { set .@eco_invest,10000; }
|
||||
else if ((.@Economy >= 11) && (.@Economy <= 15)) { set .@eco_invest,20000; }
|
||||
@ -658,7 +658,7 @@ OnRecvCastle:
|
||||
else if ((.@Economy >= 91) && (.@Economy <= 95)) { set .@eco_invest,860000; }
|
||||
else if ((.@Economy >= 96) && (.@Economy <= 100)) { set .@eco_invest,955000; }
|
||||
//Quadruple the cost of investing if you've already invested once.
|
||||
if (GetCastleData(strnpcinfo(2),4)) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY)) {
|
||||
set .@eco_invest,.@eco_invest*4;
|
||||
}
|
||||
mes "["+strnpcinfo(1)+"]";
|
||||
@ -670,12 +670,12 @@ OnRecvCastle:
|
||||
mes "^ff0000The commercial growth level of our Castle is at it's highest, 100%. No more investments are needed. Just as I have expected from a great economist like you, Master.^000000";
|
||||
close;
|
||||
}
|
||||
if (GetCastleData(strnpcinfo(2),4) >= 2) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY) >= 2) {
|
||||
mes " ";
|
||||
mes "^ff0000You have already invested twice today. You cannot invest any more.^000000 I expect riches of the guild to grow at a high rate.";
|
||||
close;
|
||||
}
|
||||
if (GetCastleData(strnpcinfo(2),4) == 0) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY) == 0) {
|
||||
mes " ";
|
||||
mes "The current investment amount required is ^ff0000"+.@eco_invest+"^000000 zeny. Will you invest?";
|
||||
}
|
||||
@ -692,7 +692,7 @@ OnRecvCastle:
|
||||
close;
|
||||
}
|
||||
set Zeny, Zeny - .@eco_invest;
|
||||
SetCastleData strnpcinfo(2),4,GetCastleData(strnpcinfo(2),4)+1;
|
||||
SetCastleData strnpcinfo(2),CD_INVESTED_ECONOMY,GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY)+1;
|
||||
mes "[ "+strnpcinfo(1)+"]";
|
||||
mes "We finished the investment safely. I expect that our growth level will be increased by tomorrow.";
|
||||
close;
|
||||
@ -702,7 +702,7 @@ OnRecvCastle:
|
||||
close;
|
||||
}
|
||||
case 3:
|
||||
set .@Defence,GetCastleData(strnpcinfo(2),3);
|
||||
set .@Defence,GetCastleData(strnpcinfo(2),CD_CURRENT_DEFENSE);
|
||||
if (.@Defence < 6) { set .@def_invest,10000; }
|
||||
else if ((.@Defence >= 6) && (.@Defence <= 10)) { set .@def_invest,20000; }
|
||||
else if ((.@Defence >= 11) && (.@Defence <= 15)) { set .@def_invest,40000; }
|
||||
@ -724,7 +724,7 @@ OnRecvCastle:
|
||||
else if ((.@Defence >= 91) && (.@Defence <= 95)) { set .@def_invest,1720000; }
|
||||
else if ((.@Defence >= 96) && (.@Defence <= 100)) { set .@def_invest,1910000; }
|
||||
//Quadruple the cost of investing if you've already invested once.
|
||||
if (GetCastleData(strnpcinfo(2),5)) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE)) {
|
||||
set .@def_invest,.@def_invest*4;
|
||||
}
|
||||
mes "["+strnpcinfo(1)+"]";
|
||||
@ -736,12 +736,12 @@ OnRecvCastle:
|
||||
mes "^ff0000But the Castle Defense level of our Castle is at it's highest, 100%. No more investments are needed. Just as I have expected from a great strategist like you, Master.^000000";
|
||||
close;
|
||||
}
|
||||
if (GetCastleData(strnpcinfo(2),5) >= 2) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE) >= 2) {
|
||||
mes " ";
|
||||
mes "^ff0000You have already invested twice today. You cannot invest any more.^000000 I expect the Defenses of the guild to grow at a high rate.";
|
||||
close;
|
||||
}
|
||||
if (GetCastleData(strnpcinfo(2),5) == 0) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE) == 0) {
|
||||
mes " ";
|
||||
mes "The current investment amount required is ^ff0000"+.@def_invest+"^000000 zeny. Will you invest?";
|
||||
}
|
||||
@ -758,7 +758,7 @@ OnRecvCastle:
|
||||
close;
|
||||
}
|
||||
set Zeny, Zeny - .@def_invest;
|
||||
SetCastleData strnpcinfo(2),5,GetCastleData(strnpcinfo(2),5)+1;
|
||||
SetCastleData strnpcinfo(2),CD_INVESTED_DEFENSE,GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE)+1;
|
||||
mes "[ "+strnpcinfo(1)+"]";
|
||||
mes "We finished the investment safely. I expect that our Castle Defense level will be increased by tomorrow.";
|
||||
close;
|
||||
@ -821,7 +821,7 @@ OnRecvCastle:
|
||||
close;
|
||||
}
|
||||
case 5:
|
||||
if (GetCastleData(strnpcinfo(2),9) == 1) {
|
||||
if (GetCastleData(strnpcinfo(2),CD_ENABLED_KAFRA) == 1) {
|
||||
mes "["+strnpcinfo(1)+"]";
|
||||
mes "We are currently hiring a Kafra Employee... Do you want to fire the Kafra Employee?";
|
||||
next;
|
||||
@ -850,7 +850,7 @@ OnRecvCastle:
|
||||
close;
|
||||
}
|
||||
disablenpc "Kafra Staff#"+strnpcinfo(2);
|
||||
SetCastleData strnpcinfo(2),9,0;
|
||||
SetCastleData strnpcinfo(2),CD_ENABLED_KAFRA,0;
|
||||
mes "["+strnpcinfo(1)+"]";
|
||||
mes "....";
|
||||
mes "I have discharged the Kafra Employee... But... are you unsatisfied with something?";
|
||||
@ -874,7 +874,7 @@ OnRecvCastle:
|
||||
}
|
||||
set Zeny, Zeny - 10000;
|
||||
enablenpc "Kafra Staff#"+strnpcinfo(2);
|
||||
SetCastleData strnpcinfo(2),9,1;
|
||||
SetCastleData strnpcinfo(2),CD_ENABLED_KAFRA,1;
|
||||
mes "["+strnpcinfo(1)+"]";
|
||||
mes "We obtained a contract with the kafra Main Office, and hired a Kafra Employee.";
|
||||
next;
|
||||
@ -919,7 +919,7 @@ OnRecvCastle:
|
||||
//============================================================
|
||||
- script Lever#gd::gdlever -1,{
|
||||
|
||||
set .@GID,GetCastleData(strnpcinfo(2),1);
|
||||
set .@GID,GetCastleData(strnpcinfo(2),CD_GUILD_ID);
|
||||
|
||||
if (.@GID == 0) {
|
||||
mes "[Ringing Voice]";
|
||||
@ -1133,13 +1133,13 @@ OnClock0001:
|
||||
// Do nothing if this script is the template.
|
||||
if (strnpcinfo(1) == "Gld_Trea_Spawn") end;
|
||||
|
||||
set .@GID, GetCastleData(strnpcinfo(2),1);
|
||||
set .@GID, GetCastleData(strnpcinfo(2),CD_GUILD_ID);
|
||||
|
||||
// If there is no owner, do nothing.
|
||||
if (!.@GID) end;
|
||||
|
||||
// Is there Economy in this castle?
|
||||
set .@Treasure,GetCastleData(strnpcinfo(2),2)/5+4;
|
||||
set .@Treasure,GetCastleData(strnpcinfo(2),CD_CURRENT_ECONOMY)/5+4;
|
||||
|
||||
// Set information
|
||||
if (strnpcinfo(2) == "aldeg_cas01") {
|
||||
@ -1249,19 +1249,19 @@ OnClock0001:
|
||||
|
||||
// Apply investment to Eco. and Def. Only happens if there were investments made.
|
||||
// Permanent Development can only happen once per day.
|
||||
if (GetCastleData(strnpcinfo(2),4)) {
|
||||
set .@Economy,GetCastleData(strnpcinfo(2),2);
|
||||
SetCastleData strnpcinfo(2),2,.@Economy + GetCastleData(strnpcinfo(2),4) + (rand(2) && getgdskilllv(.@GID,10014));
|
||||
if (GetCastleData(strnpcinfo(2),2) > 100) SetCastleData strnpcinfo(2),2,100;
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY)) {
|
||||
set .@Economy,GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY);
|
||||
SetCastleData strnpcinfo(2),CD_INVESTED_ECONOMY,.@Economy + GetCastleData(strnpcinfo(2),CD_INVESTED_ECONOMY) + (rand(2) && getgdskilllv(.@GID,10014));
|
||||
if (GetCastleData(strnpcinfo(2),CD_CURRENT_ECONOMY) > 100) SetCastleData strnpcinfo(2),CD_CURRENT_ECONOMY,100;
|
||||
}
|
||||
if (GetCastleData(strnpcinfo(2),5)) {
|
||||
set .@Defence,GetCastleData(strnpcinfo(2),3);
|
||||
SetCastleData strnpcinfo(2),3,.@Defence + GetCastleData(strnpcinfo(2),5);
|
||||
if (GetCastleData(strnpcinfo(2),3) > 100) SetCastleData strnpcinfo(2),3,100;
|
||||
if (GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE)) {
|
||||
set .@Defence,GetCastleData(strnpcinfo(2),CD_CURRENT_DEFENSE);
|
||||
SetCastleData strnpcinfo(2),CD_CURRENT_DEFENSE,.@Defence + GetCastleData(strnpcinfo(2),CD_INVESTED_DEFENSE);
|
||||
if (GetCastleData(strnpcinfo(2),CD_CURRENT_DEFENSE) > 100) SetCastleData strnpcinfo(2),CD_CURRENT_DEFENSE,100;
|
||||
}
|
||||
// Reset daily investment limits.
|
||||
setcastledata strnpcinfo(2),4,0;
|
||||
setcastledata strnpcinfo(2),5,0;
|
||||
setcastledata strnpcinfo(2),CD_INVESTED_ECONOMY,0;
|
||||
setcastledata strnpcinfo(2),CD_INVESTED_DEFENSE,0;
|
||||
|
||||
// Spawn boxes in proper order.
|
||||
for (set .@i,0; .@i < .@Treasure ; set .@i,.@i+1) {
|
||||
|
@ -25,7 +25,7 @@
|
||||
OnAgitInit2:
|
||||
OnRecvCastle2:
|
||||
if (strnpcinfo(2) == "template") end;
|
||||
if (!getcastledata(strnpcinfo(2),1)) {
|
||||
if (!getcastledata(strnpcinfo(2),CD_GUILD_ID)) {
|
||||
donpcevent strnpcinfo(0)+"::OnStart";
|
||||
// Monster spawns are identical for all castles.
|
||||
monster strnpcinfo(2),0,0,"Evil Druid",1117,10;
|
||||
@ -42,14 +42,14 @@ OnRecvCastle2:
|
||||
monster strnpcinfo(2),0,0,"Dark Lord",1272,2;
|
||||
monster strnpcinfo(2),0,0,"Tower Keeper",1270,4;
|
||||
}
|
||||
if (getcastledata(strnpcinfo(2),9) < 1)
|
||||
if (getcastledata(strnpcinfo(2),CD_ENABLED_KAFRA) < 1)
|
||||
disablenpc "Kafra Employee#"+substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9);
|
||||
end;
|
||||
|
||||
OnAgitStart2:
|
||||
if (strnpcinfo(2) == "template") end;
|
||||
if (agitcheck2()) {
|
||||
maprespawnguildid strnpcinfo(2),getcastledata(strnpcinfo(2),1),2;
|
||||
maprespawnguildid strnpcinfo(2),getcastledata(strnpcinfo(2),CD_GUILD_ID),2;
|
||||
gvgon strnpcinfo(2);
|
||||
donpcevent strnpcinfo(0)+"::OnStart";
|
||||
}
|
||||
@ -60,7 +60,7 @@ OnAgitStart2:
|
||||
OnAgitEnd2:
|
||||
if (strnpcinfo(2) == "template") end;
|
||||
gvgoff strnpcinfo(2);
|
||||
if (getcastledata(strnpcinfo(2),1)) {
|
||||
if (getcastledata(strnpcinfo(2),CD_GUILD_ID)) {
|
||||
set .@str$,substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9);
|
||||
killmonster strnpcinfo(2),"Steward#"+.@str$+"::OnStartArena";
|
||||
donpcevent strnpcinfo(0)+"::OnReset";
|
||||
@ -73,7 +73,7 @@ OnGuildBreak:
|
||||
killmonster strnpcinfo(2),"gard1#"+strnpcinfo(2)+"::OnGuardianDied";
|
||||
killmonster strnpcinfo(2),"gard2#"+strnpcinfo(2)+"::OnGuardianDied";
|
||||
disablenpc "Kafra Employee#"+substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9);
|
||||
setcastledata strnpcinfo(2),1,0;
|
||||
setcastledata strnpcinfo(2),CD_GUILD_ID,0;
|
||||
sleep 7000;
|
||||
announce "Guild Base ["+getcastlename(strnpcinfo(2))+"] has been abandoned.",0;
|
||||
donpcevent strnpcinfo(0)+"::OnRecvCastle2";
|
||||
@ -84,7 +84,7 @@ OnStart:
|
||||
// 1st Guardian stone, 2nd Guardian stone, Barrier 1, Barrier 2, Barrier 3, Summon Guardians
|
||||
// Settings for all but Summon Guardians: 0 = Okay | 1 = Destroyed | 2 = Repairing
|
||||
// Summon Guardians: 0 = Do not Summon | 1 = Summon
|
||||
if (getcastledata(strnpcinfo(2),1)) {
|
||||
if (getcastledata(strnpcinfo(2),CD_GUILD_ID)) {
|
||||
setarray getd("$agit_"+substr(strnpcinfo(2),0,1)+substr(strnpcinfo(2),8,9)+"[0]"),0,0,0,0,0,0;
|
||||
donpcevent "df1#"+strnpcinfo(2)+"::OnEnable";
|
||||
donpcevent "df2#"+strnpcinfo(2)+"::OnEnable";
|
||||
@ -136,21 +136,21 @@ OnChange:
|
||||
OnClock0001:
|
||||
// Spawn Treasure Chests based on castle economy.
|
||||
if (strnpcinfo(2) == "template") end;
|
||||
if (!getcastledata(strnpcinfo(2),1)) end;
|
||||
if (!getcastledata(strnpcinfo(2),CD_GUILD_ID)) end;
|
||||
killmonster strnpcinfo(2),strnpcinfo(0)+"::OnTreasureDied";
|
||||
if (getcastledata(strnpcinfo(2),4)) {
|
||||
set .@Economy,getcastledata(strnpcinfo(2),2);
|
||||
setcastledata strnpcinfo(2),2,.@Economy+getcastledata(strnpcinfo(2),4)+(rand(2) && getgdskilllv(getcastledata(strnpcinfo(2),1),10014));
|
||||
if (getcastledata(strnpcinfo(2),2) > 100) setcastledata strnpcinfo(2),2,100;
|
||||
setcastledata strnpcinfo(2),4,0;
|
||||
if (getcastledata(strnpcinfo(2),CD_INVESTED_ECONOMY)) {
|
||||
set .@Economy,getcastledata(strnpcinfo(2),CD_CURRENT_ECONOMY);
|
||||
setcastledata strnpcinfo(2),CD_CURRENT_ECONOMY,.@Economy+getcastledata(strnpcinfo(2),CD_INVESTED_ECONOMY)+(rand(2) && getgdskilllv(getcastledata(strnpcinfo(2),CD_GUILD_ID),10014));
|
||||
if (getcastledata(strnpcinfo(2),CD_CURRENT_ECONOMY) > 100) setcastledata strnpcinfo(2),CD_CURRENT_ECONOMY,100;
|
||||
setcastledata strnpcinfo(2),CD_INVESTED_ECONOMY,0;
|
||||
}
|
||||
if (getcastledata(strnpcinfo(2),5)) {
|
||||
set .@Defence,getcastledata(strnpcinfo(2),3);
|
||||
setcastledata strnpcinfo(2),3,.@Defence+getcastledata(strnpcinfo(2),5);
|
||||
if (getcastledata(strnpcinfo(2),3) > 100) setcastledata strnpcinfo(2),3,100;
|
||||
setcastledata strnpcinfo(2),5,0;
|
||||
if (getcastledata(strnpcinfo(2),CD_INVESTED_DEFENSE)) {
|
||||
set .@Defence,getcastledata(strnpcinfo(2),CD_CURRENT_DEFENSE);
|
||||
setcastledata strnpcinfo(2),CD_CURRENT_DEFENSE,.@Defence+getcastledata(strnpcinfo(2),CD_INVESTED_DEFENSE);
|
||||
if (getcastledata(strnpcinfo(2),CD_CURRENT_DEFENSE) > 100) setcastledata strnpcinfo(2),CD_CURRENT_DEFENSE,100;
|
||||
setcastledata strnpcinfo(2),CD_INVESTED_DEFENSE,0;
|
||||
}
|
||||
set .@Treasure,getcastledata(strnpcinfo(2),2)/5+4;
|
||||
set .@Treasure,getcastledata(strnpcinfo(2),CD_CURRENT_ECONOMY)/5+4;
|
||||
if (!.@Treasure) end;
|
||||
freeloop(1);
|
||||
if (compare(strnpcinfo(2),"arug")) {
|
||||
@ -205,7 +205,7 @@ OnTreasureDied:
|
||||
// Guild Manager
|
||||
//============================================================
|
||||
- script Steward#template -1,{
|
||||
set .@GID, getcastledata(strnpcinfo(4),1);
|
||||
set .@GID, getcastledata(strnpcinfo(4),CD_GUILD_ID);
|
||||
if (!.@GID) {
|
||||
mes "[ Steward ]";
|
||||
mes "I await for the master";
|
||||
@ -236,24 +236,24 @@ OnTreasureDied:
|
||||
case 1:
|
||||
mes "[ Steward ]";
|
||||
mes "The Commercial Growth";
|
||||
mes "Level of the stronghold is ^0000ff"+getcastledata(strnpcinfo(4),2)+".";
|
||||
if (getcastledata(strnpcinfo(4),4) > 0) {
|
||||
mes "Level of the stronghold is ^0000ff"+getcastledata(strnpcinfo(4),CD_CURRENT_ECONOMY)+".";
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY) > 0) {
|
||||
mes "Last time, you invested in";
|
||||
mes "Commercial Growth "+getcastledata(strnpcinfo(4),4)+".";
|
||||
mes "Commercial Growth "+getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY)+".";
|
||||
}
|
||||
next;
|
||||
mes "[ Steward ]";
|
||||
mes "Our stronghold's";
|
||||
mes "safeguard level is "+getcastledata(strnpcinfo(4),3)+".";
|
||||
if (getcastledata(strnpcinfo(4),5) > 0) {
|
||||
mes "safeguard level is "+getcastledata(strnpcinfo(4),CD_CURRENT_DEFENSE)+".";
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE) > 0) {
|
||||
mes "Last time, you invested";
|
||||
mes "in defense "+getcastledata(strnpcinfo(4),5)+" times.";
|
||||
mes "in defense "+getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE)+" times.";
|
||||
}
|
||||
mes " ";
|
||||
mes "That is all, master.";
|
||||
close;
|
||||
case 2:
|
||||
set .@Economy,getcastledata(strnpcinfo(4),2);
|
||||
set .@Economy,getcastledata(strnpcinfo(4),CD_CURRENT_ECONOMY);
|
||||
setarray .@cost[0],5000,10000,20000,35000,55000,80000,110000,145000,185000,230000,280000,335000,395000,460000,530000,605000,685000,770000,860000,955000;
|
||||
set .@j,0;
|
||||
for(set .@i,6; .@i<101; set .@i,.@i+5) {
|
||||
@ -264,7 +264,7 @@ OnTreasureDied:
|
||||
set .@j, .@j+1;
|
||||
}
|
||||
// Quadruple the cost of investing if you've already invested once.
|
||||
if (getcastledata(strnpcinfo(4),4)) set .@eco_invest,.@eco_invest*4;
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY)) set .@eco_invest,.@eco_invest*4;
|
||||
mes "[ Steward ]";
|
||||
mes "Raising the stronghold's";
|
||||
mes "commercial growth will";
|
||||
@ -290,7 +290,7 @@ OnTreasureDied:
|
||||
mes "any further than that.";
|
||||
close;
|
||||
}
|
||||
if (getcastledata(strnpcinfo(4),4) >= 2) {
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY) >= 2) {
|
||||
mes "[ Steward ]";
|
||||
mes "You've already made two";
|
||||
mes "investments today, so you'll";
|
||||
@ -298,7 +298,7 @@ OnTreasureDied:
|
||||
mes "to make another investment.";
|
||||
close;
|
||||
}
|
||||
if (getcastledata(strnpcinfo(4),4) == 0) {
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY) == 0) {
|
||||
mes "[ Steward ]";
|
||||
mes "You must pay ^FF0000"+.@eco_invest+"^000000 Zeny";
|
||||
mes "to make an investment";
|
||||
@ -316,7 +316,7 @@ OnTreasureDied:
|
||||
next;
|
||||
switch(select("Invest in Commercial Growth:Cancel")) {
|
||||
case 1:
|
||||
if (getcastledata(strnpcinfo(4),4) >= 2) {
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY) >= 2) {
|
||||
mes "[ Steward ]";
|
||||
mes "You've already made two";
|
||||
mes "investments today, so you'll";
|
||||
@ -333,7 +333,7 @@ OnTreasureDied:
|
||||
close;
|
||||
}
|
||||
set Zeny, Zeny-.@eco_invest;
|
||||
setcastledata strnpcinfo(4),4,getcastledata(strnpcinfo(4),4)+1;
|
||||
setcastledata strnpcinfo(4),CD_INVESTED_ECONOMY,getcastledata(strnpcinfo(4),CD_INVESTED_ECONOMY)+1;
|
||||
mes "[ Steward ]";
|
||||
mes "A wise use of the guild's";
|
||||
mes "funds, Master. We can expect";
|
||||
@ -346,7 +346,7 @@ OnTreasureDied:
|
||||
close;
|
||||
}
|
||||
case 3:
|
||||
set .@Defence,getcastledata(strnpcinfo(4),3);
|
||||
set .@Defence,getcastledata(strnpcinfo(4),CD_CURRENT_DEFENSE);
|
||||
setarray .@cost[0],10000,20000,40000,70000,110000,160000,220000,290000,370000,460000,560000,670000,790000,920000,1060000,1210000,1370000,1540000,1720000,1910000;
|
||||
set .@j,0;
|
||||
for(set .@i,6; .@i<101; set .@i,.@i+5) {
|
||||
@ -357,7 +357,7 @@ OnTreasureDied:
|
||||
set .@j, .@j+1;
|
||||
}
|
||||
// Quadruple the cost of investing if you've already invested once.
|
||||
if (getcastledata(strnpcinfo(4),5)) set .@def_invest,.@def_invest*4;
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE)) set .@def_invest,.@def_invest*4;
|
||||
mes "[ Steward ]";
|
||||
mes "Investing in our stronghold's";
|
||||
mes "defense will enhance the";
|
||||
@ -373,13 +373,13 @@ OnTreasureDied:
|
||||
mes "a maximum of two times daily.";
|
||||
next;
|
||||
mes "[ Steward ]";
|
||||
if (getcastledata(strnpcinfo(4),3) == 100) {
|
||||
if (getcastledata(strnpcinfo(4),CD_CURRENT_DEFENSE) == 100) {
|
||||
mes "The Defense Level of this";
|
||||
mes "stronghold is 100%, and";
|
||||
mes "cannot be increased further.";
|
||||
close;
|
||||
}
|
||||
if (getcastledata(strnpcinfo(4),5) >= 2) {
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE) >= 2) {
|
||||
mes "Master, you've already";
|
||||
mes "invested in Defense twice";
|
||||
mes "today. You'll need to wait";
|
||||
@ -387,7 +387,7 @@ OnTreasureDied:
|
||||
mes "want to increase our defenses.";
|
||||
close;
|
||||
}
|
||||
if (getcastledata(strnpcinfo(4),5) == 0) {
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE) == 0) {
|
||||
mes "We need ^FF0000"+.@def_invest+"^000000";
|
||||
mes "Zeny to invest in our";
|
||||
mes "stronghold's defenses.";
|
||||
@ -403,7 +403,7 @@ OnTreasureDied:
|
||||
next;
|
||||
switch(select("Invest in Defense:Cancel")) {
|
||||
case 1:
|
||||
if (getcastledata(strnpcinfo(4),5) >= 2) {
|
||||
if (getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE) >= 2) {
|
||||
mes "[ Steward ]";
|
||||
mes "Master, you've already";
|
||||
mes "invested in Defense twice";
|
||||
@ -421,7 +421,7 @@ OnTreasureDied:
|
||||
close;
|
||||
}
|
||||
set Zeny, Zeny-.@def_invest;
|
||||
setcastledata strnpcinfo(4),5,getcastledata(strnpcinfo(4),5)+1;
|
||||
setcastledata strnpcinfo(4),CD_INVESTED_DEFENSE,getcastledata(strnpcinfo(4),CD_INVESTED_DEFENSE)+1;
|
||||
mes "[ Steward ]";
|
||||
mes "A wise use of the guild's";
|
||||
mes "funds, Master. Increasing";
|
||||
@ -435,7 +435,7 @@ OnTreasureDied:
|
||||
close;
|
||||
}
|
||||
case 4:
|
||||
if (getcastledata(strnpcinfo(4),9) == 1) {
|
||||
if (getcastledata(strnpcinfo(4),CD_ENABLED_KAFRA) == 1) {
|
||||
mes "[ Steward ]";
|
||||
mes "Do you wish to dismiss";
|
||||
mes "the Kafra Employee that";
|
||||
@ -478,7 +478,7 @@ OnTreasureDied:
|
||||
close;
|
||||
}
|
||||
disablenpc "Kafra Employee#"+strnpcinfo(2);
|
||||
setcastledata strnpcinfo(4),9,0;
|
||||
setcastledata strnpcinfo(4),CD_ENABLED_KAFRA,0;
|
||||
mes "[ Steward ]";
|
||||
mes "That Kafra Employee";
|
||||
mes "has been dismissed.";
|
||||
@ -514,7 +514,7 @@ OnTreasureDied:
|
||||
}
|
||||
set Zeny, Zeny-10000;
|
||||
enablenpc "Kafra Employee#"+strnpcinfo(2);
|
||||
setcastledata strnpcinfo(4),9,1;
|
||||
setcastledata strnpcinfo(4),CD_ENABLED_KAFRA,1;
|
||||
mes "[ Steward ]";
|
||||
mes "Very well. We have formed";
|
||||
mes "a contract with the Kafra";
|
||||
@ -605,17 +605,17 @@ OnStartArena:
|
||||
set .@GID,getcharid(2);
|
||||
set .@region$, (compare(strnpcinfo(4),"arug"))?"Valfreyja":"Nithafjoll";
|
||||
// Lower castle Economy
|
||||
set .@Economy,getcastledata(strnpcinfo(4),2)-5;
|
||||
set .@Economy,getcastledata(strnpcinfo(4),CD_CURRENT_ECONOMY)-5;
|
||||
if (.@Economy < 0) set .@Economy, 0;
|
||||
setcastledata strnpcinfo(4),2,.@Economy;
|
||||
setcastledata strnpcinfo(4),CD_CURRENT_ECONOMY,.@Economy;
|
||||
// Lower Castle Defence
|
||||
set .@Defence,getcastledata(strnpcinfo(4),3)-5;
|
||||
set .@Defence,getcastledata(strnpcinfo(4),CD_CURRENT_DEFENSE)-5;
|
||||
if (.@Defence < 0) set .@Defence, 0;
|
||||
setcastledata strnpcinfo(4),3,.@Defence;
|
||||
setcastledata strnpcinfo(4),CD_CURRENT_DEFENSE,.@Defence;
|
||||
// Set new owner
|
||||
setcastledata strnpcinfo(4),1,.@GID;
|
||||
setcastledata strnpcinfo(4),CD_GUILD_ID,.@GID;
|
||||
// Clear castle's data.
|
||||
for(set .@i,4; .@i<10; set .@i,.@i+1)
|
||||
for(set .@i,CD_INVESTED_ECONOMY; .@i<CD_ENABLED_GUARDIAN00; set .@i,.@i+1)
|
||||
setcastledata strnpcinfo(4),.@i,0;
|
||||
// Disable Kafra
|
||||
disablenpc "Kafra Employee#"+strnpcinfo(2);
|
||||
@ -623,7 +623,7 @@ OnStartArena:
|
||||
announce "The ["+getguildname(.@GID)+"] guild conquered the ["+.@region$+" "+charat(strnpcinfo(2),3)+"] stronghold of "+getcastlename(strnpcinfo(4))+"!",bc_all|bc_woe;
|
||||
mapannounce strnpcinfo(4),"The emperium has been shattered!",bc_map,"0x00FF00",FW_NORMAL,20,0,40;
|
||||
donpcevent "Manager#"+strnpcinfo(4)+"::OnReset";
|
||||
maprespawnguildid strnpcinfo(4),getcastledata(strnpcinfo(4),1),2;
|
||||
maprespawnguildid strnpcinfo(4),getcastledata(strnpcinfo(4),CD_GUILD_ID),2;
|
||||
donpcevent "Manager#"+strnpcinfo(4)+"::OnRecvCastle2";
|
||||
donpcevent "::OnRecvCastle"+strnpcinfo(2);
|
||||
sleep 10000;
|
||||
@ -637,7 +637,7 @@ OnStartArena:
|
||||
// Castle Guardians
|
||||
//============================================================
|
||||
- script Guardian#template -1,{
|
||||
set .@GID, getcastledata(strnpcinfo(4),1);
|
||||
set .@GID, getcastledata(strnpcinfo(4),CD_GUILD_ID);
|
||||
set .@n$, "["+strnpcinfo(1)+"]";
|
||||
if (!.@GID) {
|
||||
mes .@n$;
|
||||
@ -838,7 +838,7 @@ OnInit:
|
||||
//============================================================
|
||||
- script Kafra#template -1,{
|
||||
cutin "kafra_01",2;
|
||||
set .@GID, getcastledata(strnpcinfo(4),1);
|
||||
set .@GID, getcastledata(strnpcinfo(4),CD_GUILD_ID);
|
||||
if (getcharid(2) == .@GID && getgdskilllv(.@GID,10001)) {
|
||||
mes "[Kafra Employee]";
|
||||
mes "Welcome, proud member";
|
||||
@ -950,7 +950,7 @@ OnInit:
|
||||
// Guardian Stones (2)
|
||||
//============================================================
|
||||
- script Guardian Stone#template -1,{
|
||||
set .@GID, getcastledata(strnpcinfo(4),1);
|
||||
set .@GID, getcastledata(strnpcinfo(4),CD_GUILD_ID);
|
||||
set .@num, atoi(charat(strnpcinfo(1),0));
|
||||
set .@var$,"$agit_"+strnpcinfo(2);
|
||||
if (getcharid(2) == .@GID) {
|
||||
@ -1104,7 +1104,7 @@ OnEnable:
|
||||
// Control Devices (3)
|
||||
//============================================================
|
||||
- script Control#template -1,{
|
||||
set .@GID, getcastledata(strnpcinfo(4),1);
|
||||
set .@GID, getcastledata(strnpcinfo(4),CD_GUILD_ID);
|
||||
set .@num, atoi(charat(strnpcinfo(1),15));
|
||||
set .@var$,"$agit_"+strnpcinfo(2);
|
||||
if (getcharid(2) == .@GID) {
|
||||
@ -1386,7 +1386,7 @@ OnEnable:
|
||||
}
|
||||
if (charat(strnpcinfo(1),4) == "2") set .@z,11;
|
||||
freeloop(1);
|
||||
set .@defence,getcastledata(strnpcinfo(2),3);
|
||||
set .@defence,getcastledata(strnpcinfo(2),CD_CURRENT_DEFENSE);
|
||||
callsub OnSummon,.@z;
|
||||
if (.@defence > 70) set getd(".MyMobCount_"+charat(strnpcinfo(1),4)+strnpcinfo(2)),5;
|
||||
else if (.@defence > 50) set getd(".MyMobCount_"+charat(strnpcinfo(1),4)+strnpcinfo(2)),4;
|
||||
@ -1710,7 +1710,7 @@ OnDisable:
|
||||
// Link Flags (function)
|
||||
//============================================================
|
||||
function script LinkFlag {
|
||||
if (!getcharid(2) || getcharid(2) != getcastledata(strnpcinfo(4),1)) end;
|
||||
if (!getcharid(2) || getcharid(2) != getcastledata(strnpcinfo(4),CD_GUILD_ID)) end;
|
||||
if (getarg(0) == "Convenience Facility") {
|
||||
mes "^3355FFThis is the Stronghold";
|
||||
mes "Teleport Service. Would";
|
||||
@ -1748,7 +1748,7 @@ function script LinkFlag {
|
||||
function script ReturnFlag {
|
||||
.@map$ = getarg(0);
|
||||
set .@str$, (compare(strnpcinfo(4),"aru"))?"Arunafeltz":"Schwaltzvalt";
|
||||
.@GID = getcastledata(.@map$,1);
|
||||
.@GID = getcastledata(.@map$,CD_GUILD_ID);
|
||||
if (!.@GID) {
|
||||
mes "[ "+.@str$+" Royal Edict ]";
|
||||
mes "The Holy Kingdom of";
|
||||
@ -1765,7 +1765,7 @@ function script ReturnFlag {
|
||||
mes "do you wish to return";
|
||||
mes "to your stronghold?";
|
||||
next;
|
||||
if(select("Return to the Stronghold:Cancel") == 1 && getcharid(2) == getcastledata(.@map$,1)) {
|
||||
if(select("Return to the Stronghold:Cancel") == 1 && getcharid(2) == getcastledata(.@map$,CD_GUILD_ID)) {
|
||||
if (compare(.@map$,"arug")) {
|
||||
if (.@map$ == "arug_cas01") setarray .@i[0],67,193;
|
||||
else if (.@map$ == "arug_cas02") setarray .@i[0],43,256;
|
||||
@ -1821,7 +1821,7 @@ function script ReturnFlag {
|
||||
// Guild Dungeon Warps
|
||||
//============================================================
|
||||
- script Sunflower#template -1,{
|
||||
if (getcharid(2) == getcastledata(strnpcinfo(4),1)) {
|
||||
if (getcharid(2) == getcastledata(strnpcinfo(4),CD_GUILD_ID)) {
|
||||
mes "- It's an amazingly huge sunflower; as big as a human! ... You feel something mysterious emanating from the flower. -";
|
||||
next;
|
||||
switch(select("Hold the stem.:Do nothing.")) {
|
||||
|
@ -896,7 +896,7 @@ OnAgitInvest:
|
||||
set .@guild, getcharid(2);
|
||||
for(set .@i,1; .@i<=5; set .@i,.@i+1) {
|
||||
set .@castle_name$[.@i], getcastlename(.@npc$+"g_cas0"+.@i);
|
||||
set .@owner_id[.@i], getcastledata(.@npc$+"g_cas0"+.@i,1);
|
||||
set .@owner_id[.@i], getcastledata(.@npc$+"g_cas0"+.@i,CD_GUILD_ID);
|
||||
set .@owner_name$[.@i], getguildname(.@owner_id[.@i]);
|
||||
if (.@guild == .@owner_id[.@i]) {
|
||||
set .@menu$, .@menu$+.@castle_name$[.@i]+" ["+.@owner_name$[.@i]+"] Guild:";
|
||||
@ -1044,7 +1044,7 @@ OnAgitInvest:
|
||||
for(set .@i,1; .@i<=5; set .@i,.@i+1) {
|
||||
set .@map$, .@npc$+"g_cas0"+.@i;
|
||||
set .@fund[.@i], getd("$@vfund_"+.@npc$+"0"+.@i);
|
||||
mes getcastlename(.@map$)+" "+getguildname(getcastledata(.@map$,1))+" Guild: "+.@fund[.@i];
|
||||
mes getcastlename(.@map$)+" "+getguildname(getcastledata(.@map$,CD_GUILD_ID))+" Guild: "+.@fund[.@i];
|
||||
}
|
||||
set .@fund[0], getd("$@vfund_"+.@npc$+"_extra");
|
||||
mes .@realm$+" normal: "+.@fund[0];
|
||||
@ -1098,7 +1098,7 @@ OnAgitInvest:
|
||||
set .@realm$,"Valkyrie Realm";
|
||||
}
|
||||
|
||||
set .@GID, getcastledata(strnpcinfo(4),1);
|
||||
set .@GID, getcastledata(strnpcinfo(4),CD_GUILD_ID);
|
||||
if (getcharid(2) != .@GID) {
|
||||
mes "[Gate Manager]";
|
||||
mes "You don't seem to be the member of guild owning this castle.";
|
||||
|
@ -93,7 +93,7 @@ function calcjobexp;
|
||||
} else {
|
||||
.@total = 0;
|
||||
for(.@i = 0; .@i < 5; ++.@i){
|
||||
.@total += (.@gid == getcastledata(.castle$[.@i+.@zoneid*5],1));
|
||||
.@total += (.@gid == getcastledata(.castle$[.@i+.@zoneid*5],CD_GUILD_ID));
|
||||
}
|
||||
|
||||
if(!.@total){
|
||||
@ -108,7 +108,7 @@ function calcjobexp;
|
||||
else
|
||||
mes "Currently, the total number of fortresses that your guild has conquered";
|
||||
for(.@i = 0; .@i < 5; ++.@i){
|
||||
mes getcastlename(.castle$[.@i+.@zoneid*5]) + (.@gid == getcastledata(.castle$[.@i+.@zoneid*5],1) ? ": ^4d4dffOccupied^000000" : "");
|
||||
mes getcastlename(.castle$[.@i+.@zoneid*5]) + (.@gid == getcastledata(.castle$[.@i+.@zoneid*5],CD_GUILD_ID) ? ": ^4d4dffOccupied^000000" : "");
|
||||
}
|
||||
if(.@total == 5)
|
||||
mes "Your guild has conquered " + .region$[.@zoneid] + "!";
|
||||
|
@ -19,7 +19,7 @@ OnAgitInit3:
|
||||
.@map$ = strnpcinfo(4);
|
||||
if (.@map$ == "") end;
|
||||
.@npc_name$ = strnpcinfo(0);
|
||||
.@guild_id = getcastledata(.@map$,1);
|
||||
.@guild_id = getcastledata(.@map$,CD_GUILD_ID);
|
||||
if (.@guild_id == 0) {
|
||||
killmonster .@map$, .@npc_name$ +"::OnMyMobDead";
|
||||
donpcevent strnpcinfo(0)+"::OnEmpSpawn";
|
||||
@ -75,7 +75,7 @@ OnAgitInit3:
|
||||
else {
|
||||
requestguildinfo .@guild_id;
|
||||
donpcevent "::OnFlagTE" + strnpcinfo(2);// Guild emblem on flags.
|
||||
if (getcastledata(.@map$,9) == 0)
|
||||
if (getcastledata(.@map$,CD_ENABLED_KAFRA) == 0)
|
||||
disablenpc "Kafra Employee#"+ replacestr(.@map$, "cas", "");
|
||||
|
||||
// Load purchased Guardian in castles.
|
||||
@ -113,7 +113,7 @@ OnAgitStart3:
|
||||
.@map$ = strnpcinfo(4);
|
||||
if (.@map$ == "") end;
|
||||
if (agitcheck3()) {
|
||||
maprespawnguildid .@map$, getcastledata(.@map$,1),2;// warp all non-guild members
|
||||
maprespawnguildid .@map$, getcastledata(.@map$,CD_GUILD_ID),2;// warp all non-guild members
|
||||
gvgon3 .@map$;
|
||||
donpcevent strnpcinfo(0)+"::OnEmpSpawn";
|
||||
callsub S_Message,"OnCommandOn";
|
||||
@ -124,7 +124,7 @@ OnAgitEnd3:
|
||||
.@map$ = strnpcinfo(4);
|
||||
if (.@map$ == "") end;
|
||||
gvgoff3 .@map$;
|
||||
if (getcastledata(.@map$,1))
|
||||
if (getcastledata(.@map$,CD_GUILD_ID))
|
||||
killmonster .@map$, strnpcinfo(0) +"::OnAgitBreak";
|
||||
callsub S_Message,"OnReset";
|
||||
end;
|
||||
@ -133,26 +133,26 @@ OnAgitBreak:
|
||||
.@guild_id = getcharid(2);
|
||||
.@map$ = strnpcinfo(4);
|
||||
|
||||
.@economy = getcastledata(.@map$,2) - 5;// Adjust economy Invest Level for Castle
|
||||
.@economy = getcastledata(.@map$,CD_CURRENT_ECONOMY) - 5;// Adjust economy Invest Level for Castle
|
||||
if (.@economy < 1)
|
||||
setcastledata .@map$, 2,1;
|
||||
setcastledata .@map$, CD_CURRENT_ECONOMY,1;
|
||||
else
|
||||
setcastledata .@map$, 2,.@economy;
|
||||
.@defense = getcastledata(.@map$,3) - 5;// Adjust Defense Invest Level for Castle
|
||||
setcastledata .@map$, CD_CURRENT_ECONOMY,.@economy;
|
||||
.@defense = getcastledata(.@map$,CD_CURRENT_DEFENSE) - 5;// Adjust Defense Invest Level for Castle
|
||||
if (.@defense < 1)
|
||||
setcastledata .@map$, 3,1;
|
||||
setcastledata .@map$, CD_CURRENT_DEFENSE,1;
|
||||
else
|
||||
setcastledata .@map$, 3,.@defense;
|
||||
setcastledata .@map$,1,.@guild_id;
|
||||
setcastledata .@map$, CD_CURRENT_DEFENSE,.@defense;
|
||||
setcastledata .@map$,CD_GUILD_ID,.@guild_id;
|
||||
|
||||
// Reset Invest information and refresh castle data
|
||||
for ( .@i = 4; .@i <= 9; .@i++ )
|
||||
for ( .@i = CD_INVESTED_ECONOMY; .@i < CD_ENABLED_GUARDIAN00; .@i++ )
|
||||
setcastledata .@map$,.@i,0;
|
||||
donpcevent strnpcinfo(0) +"::OnAgitInit3";// spawn guardians / monsters
|
||||
|
||||
// Erase Guardian Database information if the new owners do not have Guardian Research.
|
||||
if (getgdskilllv(.@guild_id,10002) == 0) {
|
||||
for ( .@i = 10; .@i <= 17; .@i++ )
|
||||
for ( .@i = CD_ENABLED_GUARDIAN00; .@i < CD_MAX; .@i++ )
|
||||
setcastledata .@map$,.@i,0;
|
||||
}
|
||||
|
||||
@ -172,7 +172,7 @@ OnGuildBreak:
|
||||
.@tmp$ = replacestr(.@map$, "cas", "");
|
||||
killmonster .@map$, "Kafra Employee#"+ .@tmp$ +"::OnGuardianDied";
|
||||
disablenpc "Kafra Employee#"+ .@tmp$;
|
||||
setcastledata .@map$,1,0;
|
||||
setcastledata .@map$,CD_GUILD_ID,0;
|
||||
sleep 7000;
|
||||
announce "Guild Base [" + getcastlename(.@map$) + "] has been abandoned.",bc_all;
|
||||
donpcevent strnpcinfo(0) +"::OnAgitInit3";
|
||||
@ -180,7 +180,7 @@ OnGuildBreak:
|
||||
|
||||
S_Message:
|
||||
.@map$ = strnpcinfo(4);
|
||||
.@guild_id = getcastledata(.@map$,1);
|
||||
.@guild_id = getcastledata(.@map$,CD_GUILD_ID);
|
||||
|
||||
if (.@guild_id)
|
||||
announce "The [" + getcastlename(.@map$) + "] castle is occupied by the [" + getguildname(.@guild_id) + "] guild.",bc_all,"0xFF0000",FW_NORMAL,10;
|
||||
@ -211,7 +211,7 @@ OnMyMobDead:
|
||||
// Guild Kafras
|
||||
//============================================================
|
||||
- script Kafra_Staff_TE -1,{
|
||||
.@guild_id = getcastledata( strnpcinfo(4),1 );
|
||||
.@guild_id = getcastledata( strnpcinfo(4),CD_GUILD_ID );
|
||||
.@guildname$ = getguildname(.@guild_id);
|
||||
|
||||
cutin "kafra_01",2;
|
||||
@ -335,7 +335,7 @@ function GuardianData;
|
||||
|
||||
.@map$ = strnpcinfo(4);
|
||||
.@npc_name$ = "[ Butler "+ strnpcinfo(1) +"]";
|
||||
.@guild_id = getcastledata(.@map$,1);
|
||||
.@guild_id = getcastledata(.@map$,CD_GUILD_ID);
|
||||
.@guildmaster$ = getguildmaster(.@guild_id);
|
||||
|
||||
mes .@npc_name$;
|
||||
@ -353,15 +353,15 @@ function GuardianData;
|
||||
next;
|
||||
switch( select( "Castle briefing", "Invest in commercial growth", "Invest in Castle Defenses", "Summon Guardian", "Hire / Fire a Kafra Employee", "Go into Master's room" ) ) {
|
||||
case 1:
|
||||
.@economy_today = getcastledata(.@map$,4);
|
||||
.@defense_today = getcastledata(.@map$,5);
|
||||
.@economy_today = getcastledata(.@map$,CD_INVESTED_ECONOMY);
|
||||
.@defense_today = getcastledata(.@map$,CD_INVESTED_DEFENSE);
|
||||
mes .@npc_name$;
|
||||
mes "I will report the Castle briefing, Master.";
|
||||
mes " ";
|
||||
mes "^0000ffNow, the commercial growth level is "+GetCastleData(.@map$,2)+".";
|
||||
mes "^0000ffNow, the commercial growth level is "+GetCastleData(.@map$,CD_CURRENT_ECONOMY)+".";
|
||||
if (.@economy_today > 0)
|
||||
mes " You invested "+.@economy_today+" times in past 1 day.";
|
||||
mes " Now, the Castle Defense level is "+GetCastleData(.@map$,3)+".^000000";
|
||||
mes " Now, the Castle Defense level is "+GetCastleData(.@map$,CD_CURRENT_DEFENSE)+".^000000";
|
||||
if (.@defense_today > 0)
|
||||
mes " ^0000ff- You invested "+.@defense_today+" times in past 1 day.^000000";
|
||||
mes " ";
|
||||
@ -369,20 +369,20 @@ function GuardianData;
|
||||
close;
|
||||
|
||||
case 2:
|
||||
.@economy = getcastledata(.@map$,2);
|
||||
.@economy = getcastledata(.@map$,CD_CURRENT_ECONOMY);
|
||||
setarray .@eco_invest[0], 5,5000, 10,10000, 15,20000, 20,35000, 25,55000, 30,80000, 35,110000, 40,145000, 45,185000, 50,230000,
|
||||
55,280000, 60,335000, 65,395000, 70,460000, 75,530000, 80,605000, 85,685000, 90,770000, 95,860000, 100,955000;
|
||||
for ( .@i = 0; .@i < getarraysize(.@eco_invest); .@i += 2 )
|
||||
if (.@economy <= .@eco_invest[.@i]) break;
|
||||
callsub( S_Invest, 4, .@eco_invest[.@i+1], getcastledata(.@map$,4), "commercial growth", "quantity of goods made by the guild will increase", "future", "economist", "riches" );
|
||||
callsub( S_Invest, 4, .@eco_invest[.@i+1], getcastledata(.@map$,CD_INVESTED_ECONOMY), "commercial growth", "quantity of goods made by the guild will increase", "future", "economist", "riches" );
|
||||
|
||||
case 3:
|
||||
.@defense = getcastledata(.@map$,3);
|
||||
.@defense = getcastledata(.@map$,CD_CURRENT_DEFENSE);
|
||||
setarray .@def_invest[0], 5,10000, 10,20000, 15,40000, 20,70000, 25,110000, 30,160000, 35,220000, 40,290000, 45,370000, 50,460000,
|
||||
55,560000, 60,670000, 65,790000, 70,920000, 75,1060000, 80,1210000, 85,1370000, 90,1540000, 95,1720000, 100,1910000;
|
||||
for ( .@i = 0; .@i < getarraysize(.@def_invest); .@i += 2 )
|
||||
if (.@defense <= .@def_invest[.@i]) break;
|
||||
callsub( S_Invest, 5, .@def_invest[.@i+1], getcastledata(.@map$,5), "Castle Defenses", "durability of Guardians and the Emperium will increase", "coming battles", "strategist", "Defenses" );
|
||||
callsub( S_Invest, 5, .@def_invest[.@i+1], getcastledata(.@map$,CD_INVESTED_DEFENSE), "Castle Defenses", "durability of Guardians and the Emperium will increase", "coming battles", "strategist", "Defenses" );
|
||||
|
||||
case 4:
|
||||
mes .@npc_name$;
|
||||
@ -409,13 +409,13 @@ function GuardianData;
|
||||
if (getgdskilllv(.@guild_id,10002) == 0) {
|
||||
mes "Master, we have not the resources to Summon the Guardian. If you want to accumulate them, you have to learn the Guild skill. We failed to summon the Guardian.";
|
||||
}
|
||||
else if (getcastledata( .@map$,(.@s+10) ) == 1)
|
||||
else if (getcastledata( .@map$,(.@s + CD_ENABLED_GUARDIAN00) ) == 1)
|
||||
mes "Master, you already have summoned that Guardian. We cannot summon another.";
|
||||
else if (Zeny < 10000)
|
||||
mes "Well... I'm sorry but we don't have funds to summon the Guardian. We failed to summon the Guardian.";
|
||||
else {
|
||||
Zeny = Zeny - 10000;
|
||||
setcastledata .@map$,(.@s+10),1;
|
||||
setcastledata .@map$,(.@s + CD_ENABLED_GUARDIAN00),1;
|
||||
guardian .@map$, .@x[.@s], .@y[.@s], .@name$[.@s], .@mob_id[.@s], "Kafra Employee#"+ replacestr(.@map$, "cas", "") +"::OnGuardianDied", .@s;
|
||||
mes "We completed the summoning of the Guardian. Our defenses are now increased with it in place.";
|
||||
}
|
||||
@ -423,7 +423,7 @@ function GuardianData;
|
||||
|
||||
case 5:
|
||||
mes .@npc_name$;
|
||||
if (getcastledata(.@map$,9) == 1) {
|
||||
if (getcastledata(.@map$,CD_ENABLED_KAFRA) == 1) {
|
||||
mes "We are currently hiring a Kafra Employee... Do you want to fire the Kafra Employee?";
|
||||
next;
|
||||
if (select( "Fire","Cancel" ) == 2) {
|
||||
@ -445,7 +445,7 @@ function GuardianData;
|
||||
next;
|
||||
cutin "",255;
|
||||
disablenpc "Kafra Employee#" + replacestr(.@map$, "cas", "");
|
||||
setcastledata .@map$,9,0;
|
||||
setcastledata .@map$,CD_ENABLED_KAFRA,0;
|
||||
mes .@npc_name$;
|
||||
mes "....";
|
||||
mes "I have discharged the Kafra Employee... But... are you unsatisfied with something?";
|
||||
@ -470,7 +470,7 @@ function GuardianData;
|
||||
}
|
||||
Zeny = Zeny - 10000;
|
||||
enablenpc "Kafra Employee#" + replacestr(.@map$, "cas", "");
|
||||
setcastledata .@map$,9,1;
|
||||
setcastledata .@map$,CD_ENABLED_KAFRA,1;
|
||||
|
||||
mes "We obtained a contract with the kafra Main Office, and hired a Kafra Employee.";
|
||||
next;
|
||||
@ -532,7 +532,7 @@ S_Invest:
|
||||
mes " ";
|
||||
mes "Initially, you are able to invest just once but if you pay more money, you will be able to invest twice.";
|
||||
mes " ";
|
||||
if (getcastledata(strnpcinfo(4),2) >= 100) {
|
||||
if (getcastledata(strnpcinfo(4),CD_CURRENT_ECONOMY) >= 100) {
|
||||
mes "^ff0000The "+ getarg(3) +" level of our Castle is at it's highest, 100%. No more investments are needed. Just as I have expected from a great "+ getarg(6) +" like you, Master.^000000";
|
||||
close;
|
||||
}
|
||||
@ -689,7 +689,7 @@ OnSpawnGuardians:
|
||||
.@tmp$ = replacestr(.@map$, "cas", "");
|
||||
killmonster .@map$, "Kafra Employee#"+ .@tmp$ +"::OnGuardianDied";
|
||||
for ( .@i = 0; .@i < MAX_GUARDIANS; .@i++ ) {
|
||||
if (getcastledata( .@map$,(.@i+10) ))
|
||||
if (getcastledata( .@map$,(.@i + CD_ENABLED_GUARDIAN00) ))
|
||||
guardian .@map$, .@x[.@i], .@y[.@i], .@name$[.@i], .@mob_id[.@i], "Kafra Employee#"+ .@tmp$ +"::OnGuardianDied",.@i;
|
||||
}
|
||||
}
|
||||
@ -697,7 +697,7 @@ OnSpawnGuardians:
|
||||
// Guild Dungeon Entrances
|
||||
//============================================================
|
||||
- script lever2_TE -1,{
|
||||
.@guild_id = getcastledata( strnpcinfo(4),1 );
|
||||
.@guild_id = getcastledata( strnpcinfo(4),CD_GUILD_ID );
|
||||
if (.@guild_id == 0) {
|
||||
mes "[Ringing Voice]";
|
||||
mes "'Those who overcome an ordeal shows a great deal of bravery... and will find their way to another ordeal.'";
|
||||
@ -768,26 +768,26 @@ OnSpawnGuardians:
|
||||
OnClock0001:// Spawn Treasure Chests based on castle economy.
|
||||
.@map$ = strnpcinfo(4);
|
||||
if (.@map$ == "") end;
|
||||
.@guild_id = getcastledata(.@map$,1);
|
||||
.@guild_id = getcastledata(.@map$,CD_GUILD_ID);
|
||||
if (.@guild_id == 0) end;
|
||||
|
||||
.@economy = getcastledata(.@map$,2);
|
||||
.@defense = getcastledata(.@map$,3);
|
||||
.@economy_today = getcastledata(.@map$,4);
|
||||
.@defense_today = getcastledata(.@map$,5);
|
||||
.@economy = getcastledata(.@map$,CD_CURRENT_ECONOMY);
|
||||
.@defense = getcastledata(.@map$,CD_CURRENT_DEFENSE);
|
||||
.@economy_today = getcastledata(.@map$,CD_INVESTED_ECONOMY);
|
||||
.@defense_today = getcastledata(.@map$,CD_INVESTED_DEFENSE);
|
||||
|
||||
killmonster .@map$, strnpcinfo(0)+"::OnTreasureDied";
|
||||
if (.@economy_today) {
|
||||
.@economy = .@economy + .@economy_today + (rand(2) && getgdskilllv(.@guild_id,10014));
|
||||
.@economy = ( .@economy > 100 ) ? 100 : .@economy;
|
||||
setcastledata .@map$,2,.@economy;
|
||||
setcastledata .@map$,4,0;
|
||||
setcastledata .@map$,CD_CURRENT_ECONOMY,.@economy;
|
||||
setcastledata .@map$,CD_INVESTED_ECONOMY,0;
|
||||
}
|
||||
if (.@defense_today) {
|
||||
.@defense = .@defense + .@defense_today;
|
||||
.@defense = ( .@defense > 100 ) ? 100 : .@defense;
|
||||
setcastledata .@map$,3,.@defense;
|
||||
setcastledata .@map$,5,0;
|
||||
setcastledata .@map$,CD_CURRENT_DEFENSE,.@defense;
|
||||
setcastledata .@map$,CD_INVESTED_DEFENSE,0;
|
||||
}
|
||||
|
||||
if (.@map$ == "te_aldecas1") {
|
||||
@ -1071,7 +1071,7 @@ OnTreasureDied:
|
||||
//============================================================
|
||||
function script F_flag_woe_TE {
|
||||
.@castle$ = getarg(1);
|
||||
.@guild_id = getcastledata( .@castle$,1 );
|
||||
.@guild_id = getcastledata( .@castle$,CD_GUILD_ID );
|
||||
if (.@guild_id == 0) {
|
||||
mes "[ Edict of the Divine Rune-Midgarts Kingdom ]";
|
||||
mes " ";
|
||||
@ -1096,7 +1096,7 @@ function script F_flag_woe_TE {
|
||||
mes "Tertiary job class and users with expanded levels are not allowed to participate in Training Siege Battles.";
|
||||
close;
|
||||
}
|
||||
if (getcastledata( getarg(1),1 ) == getcharid(2))
|
||||
if (getcastledata( getarg(1),CD_GUILD_ID ) == getcharid(2))
|
||||
warp getarg(1),getarg(2),getarg(3);
|
||||
end;
|
||||
}
|
||||
@ -1120,7 +1120,7 @@ function script F_flag_woe_TE {
|
||||
callfunc( "F_flag_woe_TE",0,strnpcinfo(4) );
|
||||
OnInit:
|
||||
if (strnpcinfo(4) != "")
|
||||
flagemblem getcastledata( strnpcinfo(4),1 );
|
||||
flagemblem getcastledata( strnpcinfo(4),CD_GUILD_ID );
|
||||
end;
|
||||
}
|
||||
|
||||
@ -1128,7 +1128,7 @@ OnInit:
|
||||
end;
|
||||
OnInit:
|
||||
if (strnpcinfo(2) != "")
|
||||
flagemblem getcastledata( strnpcinfo(2),1 );
|
||||
flagemblem getcastledata( strnpcinfo(2),CD_GUILD_ID );
|
||||
end;
|
||||
}
|
||||
|
||||
|
@ -603,17 +603,17 @@ struct guild_castle* inter_guildcastle_fromsql(int castle_id)
|
||||
gc->castle_id = castle_id;
|
||||
|
||||
if (SQL_SUCCESS == Sql_NextRow(sql_handle)) {
|
||||
Sql_GetData(sql_handle, 1, &data, NULL); gc->guild_id = atoi(data);
|
||||
Sql_GetData(sql_handle, 2, &data, NULL); gc->economy = atoi(data);
|
||||
Sql_GetData(sql_handle, 3, &data, NULL); gc->defense = atoi(data);
|
||||
Sql_GetData(sql_handle, 4, &data, NULL); gc->triggerE = atoi(data);
|
||||
Sql_GetData(sql_handle, 5, &data, NULL); gc->triggerD = atoi(data);
|
||||
Sql_GetData(sql_handle, 6, &data, NULL); gc->nextTime = atoi(data);
|
||||
Sql_GetData(sql_handle, 7, &data, NULL); gc->payTime = atoi(data);
|
||||
Sql_GetData(sql_handle, 8, &data, NULL); gc->createTime = atoi(data);
|
||||
Sql_GetData(sql_handle, 9, &data, NULL); gc->visibleC = atoi(data);
|
||||
for (i = 10; i < 10+MAX_GUARDIANS; i++) {
|
||||
Sql_GetData(sql_handle, i, &data, NULL); gc->guardian[i-10].visible = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_GUILD_ID, &data, NULL); gc->guild_id = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_CURRENT_ECONOMY, &data, NULL); gc->economy = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_CURRENT_DEFENSE, &data, NULL); gc->defense = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_INVESTED_ECONOMY, &data, NULL); gc->triggerE = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_INVESTED_DEFENSE, &data, NULL); gc->triggerD = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_NEXT_TIME, &data, NULL); gc->nextTime = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_PAY_TIME, &data, NULL); gc->payTime = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_CREATE_TIME, &data, NULL); gc->createTime = atoi(data);
|
||||
Sql_GetData(sql_handle, CD_ENABLED_KAFRA, &data, NULL); gc->visibleC = atoi(data);
|
||||
for (i = CD_ENABLED_GUARDIAN00; i < CD_MAX; i++) {
|
||||
Sql_GetData(sql_handle, i, &data, NULL); gc->guardian[i - CD_ENABLED_GUARDIAN00].visible = atoi(data);
|
||||
}
|
||||
}
|
||||
Sql_FreeResult(sql_handle);
|
||||
@ -1805,7 +1805,7 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 1:
|
||||
case CD_GUILD_ID:
|
||||
if (charserv_config.log_inter && gc->guild_id != value) {
|
||||
int gid = (value) ? value : gc->guild_id;
|
||||
struct guild *g = (struct guild*)idb_get(guild_db_, gid);
|
||||
@ -1814,17 +1814,17 @@ int mapif_parse_GuildCastleDataSave(int fd, int castle_id, int index, int value)
|
||||
}
|
||||
gc->guild_id = value;
|
||||
break;
|
||||
case 2: gc->economy = value; break;
|
||||
case 3: gc->defense = value; break;
|
||||
case 4: gc->triggerE = value; break;
|
||||
case 5: gc->triggerD = value; break;
|
||||
case 6: gc->nextTime = value; break;
|
||||
case 7: gc->payTime = value; break;
|
||||
case 8: gc->createTime = value; break;
|
||||
case 9: gc->visibleC = value; break;
|
||||
case CD_CURRENT_ECONOMY: gc->economy = value; break;
|
||||
case CD_CURRENT_DEFENSE: gc->defense = value; break;
|
||||
case CD_INVESTED_ECONOMY: gc->triggerE = value; break;
|
||||
case CD_INVESTED_DEFENSE: gc->triggerD = value; break;
|
||||
case CD_NEXT_TIME: gc->nextTime = value; break;
|
||||
case CD_PAY_TIME: gc->payTime = value; break;
|
||||
case CD_CREATE_TIME: gc->createTime = value; break;
|
||||
case CD_ENABLED_KAFRA: gc->visibleC = value; break;
|
||||
default:
|
||||
if (index > 9 && index <= 9+MAX_GUARDIANS) {
|
||||
gc->guardian[index-10].visible = value;
|
||||
if (index >= CD_ENABLED_GUARDIAN00 && index < CD_MAX) {
|
||||
gc->guardian[index - CD_ENABLED_GUARDIAN00].visible = value;
|
||||
break;
|
||||
}
|
||||
ShowError("mapif_parse_GuildCastleDataSave: not found index=%d\n", index);
|
||||
|
@ -701,6 +701,23 @@ struct guild_castle {
|
||||
int temp_guardians_max;
|
||||
};
|
||||
|
||||
/// Enum for guild castle data script commands
|
||||
enum e_castle_data : uint8 {
|
||||
CD_NONE = 0,
|
||||
CD_GUILD_ID, ///< Guild ID
|
||||
CD_CURRENT_ECONOMY, ///< Castle Economy score
|
||||
CD_CURRENT_DEFENSE, ///< Castle Defense score
|
||||
CD_INVESTED_ECONOMY, ///< Number of times the economy was invested in today
|
||||
CD_INVESTED_DEFENSE, ///< Number of times the defense was invested in today
|
||||
CD_NEXT_TIME, ///< unused
|
||||
CD_PAY_TIME, ///< unused
|
||||
CD_CREATE_TIME, ///< unused
|
||||
CD_ENABLED_KAFRA, ///< Is 1 if a Kafra was hired for this castle, 0 otherwise
|
||||
CD_ENABLED_GUARDIAN00, ///< Is 1 if the 1st guardian is present (Soldier Guardian)
|
||||
// The others in between are not needed in src, but are exported for the script engine
|
||||
CD_MAX = CD_ENABLED_GUARDIAN00 + MAX_GUARDIANS
|
||||
};
|
||||
|
||||
/// Guild Permissions
|
||||
enum e_guild_permission {
|
||||
GUILD_PERM_INVITE = 0x001,
|
||||
|
@ -583,7 +583,7 @@ void chrif_on_ready(void) {
|
||||
do_reconnect_storage();
|
||||
|
||||
//Re-save any guild castles that were modified in the disconnection time.
|
||||
guild_castle_reconnect(-1, 0, 0);
|
||||
guild_castle_reconnect(-1, CD_NONE, 0);
|
||||
|
||||
// Charserver is ready for loading autotrader
|
||||
if (!char_init_done)
|
||||
|
@ -1730,7 +1730,7 @@ int castle_guild_broken_sub(DBKey key, DBData *data, va_list ap)
|
||||
npc_event_do(name);
|
||||
|
||||
//Save the new 'owner', this should invoke guardian clean up and other such things.
|
||||
guild_castledatasave(gc->castle_id, 1, 0);
|
||||
guild_castledatasave(gc->castle_id, CD_GUILD_ID, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -1970,7 +1970,7 @@ int guild_castledatasave(int castle_id, int index, int value) {
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 1: // The castle's owner has changed? Update or remove Guardians too. [Skotlex]
|
||||
case CD_GUILD_ID: // The castle's owner has changed? Update or remove Guardians too. [Skotlex]
|
||||
{
|
||||
int i;
|
||||
gc->guild_id = value;
|
||||
@ -1981,9 +1981,9 @@ int guild_castledatasave(int castle_id, int index, int value) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
case CD_CURRENT_ECONOMY:
|
||||
gc->economy = value; break;
|
||||
case 3: // defense invest change -> recalculate guardian hp
|
||||
case CD_CURRENT_DEFENSE: // defense invest change -> recalculate guardian hp
|
||||
{
|
||||
int i;
|
||||
gc->defense = value;
|
||||
@ -1994,21 +1994,21 @@ int guild_castledatasave(int castle_id, int index, int value) {
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
case CD_INVESTED_ECONOMY:
|
||||
gc->triggerE = value; break;
|
||||
case 5:
|
||||
case CD_INVESTED_DEFENSE:
|
||||
gc->triggerD = value; break;
|
||||
case 6:
|
||||
case CD_NEXT_TIME:
|
||||
gc->nextTime = value; break;
|
||||
case 7:
|
||||
case CD_PAY_TIME:
|
||||
gc->payTime = value; break;
|
||||
case 8:
|
||||
case CD_CREATE_TIME:
|
||||
gc->createTime = value; break;
|
||||
case 9:
|
||||
case CD_ENABLED_KAFRA:
|
||||
gc->visibleC = value; break;
|
||||
default:
|
||||
if (index > 9 && index <= 9+MAX_GUARDIANS) {
|
||||
gc->guardian[index-10].visible = value;
|
||||
if (index >= CD_ENABLED_GUARDIAN00 && index < CD_MAX) {
|
||||
gc->guardian[index - CD_ENABLED_GUARDIAN00].visible = value;
|
||||
break;
|
||||
}
|
||||
ShowWarning("guild_castledatasave: index = '%d' is out of allowed range\n", index);
|
||||
|
@ -793,11 +793,11 @@ static TIMER_FUNC(mob_spawn_guardian_sub){
|
||||
if (md->guardian_data->castle->guild_id) //Free castle up.
|
||||
{
|
||||
ShowNotice("Clearing ownership of castle %d (%s)\n", md->guardian_data->castle->castle_id, md->guardian_data->castle->castle_name);
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, 1, 0);
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, CD_GUILD_ID, 0);
|
||||
}
|
||||
} else {
|
||||
if (md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS && md->guardian_data->castle->guardian[md->guardian_data->number].visible)
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, 10+md->guardian_data->number,0);
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, CD_ENABLED_GUARDIAN00 + md->guardian_data->number,0);
|
||||
unit_free(&md->bl,CLR_OUTSIGHT); //Remove guardian.
|
||||
}
|
||||
return 0;
|
||||
@ -2446,7 +2446,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
|
||||
}
|
||||
|
||||
if( md->guardian_data && md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS )
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, 10+md->guardian_data->number,0);
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, CD_ENABLED_GUARDIAN00 + md->guardian_data->number,0);
|
||||
|
||||
if( src ) { // Use Dead skill only if not killed by Script or Command
|
||||
md->status.hp = 1;
|
||||
@ -3090,7 +3090,7 @@ int mob_guardian_guildchange(struct mob_data *md)
|
||||
md->guardian_data->guild_name[0] = '\0';
|
||||
} else {
|
||||
if (md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS && md->guardian_data->castle->guardian[md->guardian_data->number].visible)
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, 10+md->guardian_data->number, 0);
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, CD_ENABLED_GUARDIAN00 + md->guardian_data->number, 0);
|
||||
unit_free(&md->bl,CLR_OUTSIGHT); //Remove guardian.
|
||||
}
|
||||
return 0;
|
||||
@ -3101,7 +3101,7 @@ int mob_guardian_guildchange(struct mob_data *md)
|
||||
{ //Properly remove guardian info from Castle data.
|
||||
ShowError("mob_guardian_guildchange: New Guild (id %d) does not exists!\n", md->guardian_data->guild_id);
|
||||
if (md->guardian_data->number >= 0 && md->guardian_data->number < MAX_GUARDIANS)
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, 10+md->guardian_data->number, 0);
|
||||
guild_castledatasave(md->guardian_data->castle->castle_id, CD_ENABLED_GUARDIAN00 + md->guardian_data->number, 0);
|
||||
unit_free(&md->bl,CLR_OUTSIGHT);
|
||||
return 0;
|
||||
}
|
||||
|
@ -12849,27 +12849,27 @@ BUILDIN_FUNC(getcastledata)
|
||||
}
|
||||
|
||||
switch (index) {
|
||||
case 1:
|
||||
case CD_GUILD_ID:
|
||||
script_pushint(st,gc->guild_id); break;
|
||||
case 2:
|
||||
case CD_CURRENT_ECONOMY:
|
||||
script_pushint(st,gc->economy); break;
|
||||
case 3:
|
||||
case CD_CURRENT_DEFENSE:
|
||||
script_pushint(st,gc->defense); break;
|
||||
case 4:
|
||||
case CD_INVESTED_ECONOMY:
|
||||
script_pushint(st,gc->triggerE); break;
|
||||
case 5:
|
||||
case CD_INVESTED_DEFENSE:
|
||||
script_pushint(st,gc->triggerD); break;
|
||||
case 6:
|
||||
case CD_NEXT_TIME:
|
||||
script_pushint(st,gc->nextTime); break;
|
||||
case 7:
|
||||
case CD_PAY_TIME:
|
||||
script_pushint(st,gc->payTime); break;
|
||||
case 8:
|
||||
case CD_CREATE_TIME:
|
||||
script_pushint(st,gc->createTime); break;
|
||||
case 9:
|
||||
case CD_ENABLED_KAFRA:
|
||||
script_pushint(st,gc->visibleC); break;
|
||||
default:
|
||||
if (index > 9 && index <= 9+MAX_GUARDIANS) {
|
||||
script_pushint(st,gc->guardian[index-10].visible);
|
||||
if (index >= CD_ENABLED_GUARDIAN00 && index < CD_MAX) {
|
||||
script_pushint(st,gc->guardian[index - CD_ENABLED_GUARDIAN00].visible);
|
||||
break;
|
||||
}
|
||||
script_pushint(st,0);
|
||||
@ -12891,7 +12891,7 @@ BUILDIN_FUNC(setcastledata)
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
||||
if (index <= 0 || index > 9+MAX_GUARDIANS) {
|
||||
if (index <= CD_NONE || index >= CD_MAX) {
|
||||
ShowWarning("buildin_setcastledata: index = '%d' is out of allowed range\n", index);
|
||||
return SCRIPT_CMD_FAILURE;
|
||||
}
|
||||
|
@ -7338,6 +7338,26 @@
|
||||
export_constant(GUILDSTORAGE_LOG_EMPTY);
|
||||
export_constant(GUILDSTORAGE_LOG_FAILED);
|
||||
|
||||
/* castle data flags */
|
||||
export_constant(CD_NONE);
|
||||
export_constant(CD_GUILD_ID);
|
||||
export_constant(CD_CURRENT_ECONOMY);
|
||||
export_constant(CD_CURRENT_DEFENSE);
|
||||
export_constant(CD_INVESTED_ECONOMY);
|
||||
export_constant(CD_INVESTED_DEFENSE);
|
||||
export_constant(CD_NEXT_TIME);
|
||||
export_constant(CD_PAY_TIME);
|
||||
export_constant(CD_CREATE_TIME);
|
||||
export_constant(CD_ENABLED_KAFRA);
|
||||
for( int i = CD_ENABLED_GUARDIAN00, j = 0; i < CD_MAX; i++, j++ ){
|
||||
char constant[32];
|
||||
|
||||
sprintf( constant, "CD_ENABLED_GUARDIAN%02d", j );
|
||||
|
||||
script_set_constant( constant, i, false, false );
|
||||
}
|
||||
export_constant(CD_MAX);
|
||||
|
||||
#undef export_constant
|
||||
#undef export_constant2
|
||||
#undef export_parameter
|
||||
|
Loading…
x
Reference in New Issue
Block a user