summaryrefslogtreecommitdiff
path: root/npc/functions/marriage.txt
diff options
context:
space:
mode:
Diffstat (limited to 'npc/functions/marriage.txt')
-rw-r--r--npc/functions/marriage.txt293
1 files changed, 293 insertions, 0 deletions
diff --git a/npc/functions/marriage.txt b/npc/functions/marriage.txt
new file mode 100644
index 000000000..d9e48bf54
--- /dev/null
+++ b/npc/functions/marriage.txt
@@ -0,0 +1,293 @@
+// Evol functions.
+// Author:
+// 4144
+// Description:
+// Functions for marriage
+
+// check is player is near marriage npc
+// args:
+// 0 - player name
+// returns:
+// true if player located near npc.
+function script marriagecheckname {
+ .@name$ = getarg(0);
+ if (.@name$ == "")
+ {
+ // no other registrand
+ return false;
+ }
+ .@id = getcharid(0, .@name$);
+ .@accoundId = getcharid(3, .@name$);
+ if (isloggedin(.@accoundId, .@id) == false)
+ {
+ // registrant not logged in
+ return false;
+ }
+ getmapxy(.@mapname$, .@x, .@y, 0, .@name$);
+ if (.@mapname$ != strnpcinfo(4))
+ {
+ // registrant on other map
+ return false;
+ }
+ if (distance(.@x, .@y, .x, .y) > .distance)
+ {
+ // registrant too far
+ return false;
+ }
+ return true;
+}
+
+// return player name registered with same gender like attached player
+function script getmarriageregistrant {
+ if (Sex)
+ {
+ .@name$ = getvariableofnpc(.maleName$, strnpcinfo(3));
+ }
+ else
+ {
+ .@name$ = getvariableofnpc(.femaleName$, strnpcinfo(3));
+ }
+ return .@name$;
+}
+
+// return registered marriage partner name
+function script getmarriagepartner {
+ if (Sex)
+ {
+ .@name$ = getvariableofnpc(.femaleName$, strnpcinfo(3));
+ }
+ else
+ {
+ .@name$ = getvariableofnpc(.maleName$, strnpcinfo(3));
+ }
+ if (marriagecheckname(.@name$))
+ return .@name$;
+ return "";
+}
+
+// register attached player as partner for marriage
+function script marriageregisterself {
+ if (Sex)
+ {
+ set getvariableofnpc(.maleName$, strnpcinfo(3)), strcharinfo(0);
+ set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), "";
+ }
+ else
+ {
+ set getvariableofnpc(.femaleName$, strnpcinfo(3)), strcharinfo(0);
+ set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), "";
+ }
+ return;
+}
+
+// return player name what was accepted by partner
+function script getmarriagepartneraccepted {
+ if (Sex)
+ {
+ .@name$ = getvariableofnpc(.femaleName_partner$, strnpcinfo(3));
+ }
+ else
+ {
+ .@name$ = getvariableofnpc(.maleName_partner$, strnpcinfo(3));
+ }
+ return .@name$;
+}
+
+// return true if partner present near and partner accepted you
+function script ismarriagepartneraccepted {
+ .@partner$ = getmarriagepartner();
+ if (.@partner$ == "")
+ return false;
+ .@name$ = getmarriagepartneraccepted();
+ if (.@name$ == strcharinfo(0))
+ return true;
+ return false;
+}
+
+// accept for attached player his/her partner
+// args:
+// 0 - partner name
+function script marriageacceptpartner {
+ .@name$ = getarg(0);
+ if (Sex)
+ {
+ set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), .@name$;
+ }
+ else
+ {
+ set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), .@name$;
+ }
+ return;
+}
+
+function script askmarry {
+ speech l("Do you want to marry @@?", getarg(0));
+ if (askyesno() == ASK_YES)
+ return true;
+ return false;
+}
+
+// start marriage registration process
+function script marriageregister {
+ .@partner$ = getmarriagepartner();
+ if (.@partner$ == "")
+ { // no partner registered
+ speech l("Ok I add your name... @@...", strcharinfo(0));
+ marriageregisterself();
+ next;
+ speech lg("Now wait for your partner, then talk to me again.");
+ npctalk l("@@ registered for marriage. Waiting for partner...", strcharinfo(0));
+ close;
+ }
+ else
+ { // partner already registered
+ if (askmarry(.@partner$) == true)
+ {
+ marriageregisterself();
+ marriageacceptpartner(.@partner$);
+ npctalk l("@@ registered for marriage and accepted partner @@!", strcharinfo(0), .@partner$);
+ npctalk l("Waiting for @@...", .@partner$);
+ close;
+ }
+ else
+ {
+ close;
+ }
+ }
+ return;
+}
+
+// remove all marriage registations
+function script marriageclear {
+ set getvariableofnpc(.maleName$, strnpcinfo(3)), "";
+ set getvariableofnpc(.femaleName$, strnpcinfo(3)), "";
+ set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), "";
+ set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), "";
+ return;
+}
+
+// do actual marriage
+function script domarriage {
+ .@name$ = strcharinfo(0);
+ .@partner$ = getarg(0);
+ if (marriage(.@partner$))
+ {
+ speech l("You got married to @@!", .@partner$);
+ npctalk l("@@ and @@ just got married!", .@name$, .@partner$);
+ }
+ else
+ {
+ npctalk l("Marriage failed.");
+ }
+ marriageclear();
+ return;
+}
+
+// marry main code
+function script marriagemarry {
+ .@registrant$ = getmarriageregistrant();
+ if (marriagecheckname(.@registrant$) == true)
+ {
+ if (.@registrant$ == strcharinfo(0))
+ {
+ if (ismarriagepartneraccepted())
+ {
+ .@partner$ = getmarriagepartner();
+ if (marriagecheckname(.@partner$) == false)
+ {
+ speech l("Partner not ready.");
+ }
+ else if (askmarry(.@partner$) == true)
+ {
+ domarriage(.@partner$);
+ }
+ }
+ else
+ {
+ speech l("You already registered. Waiting for your partner...");
+ }
+ }
+ else
+ {
+ speech l("Sorry, I'm busy with other registrations."),
+ l("Come after a little while.");
+ }
+ close;
+ }
+
+ speech l("What can I do for you?");
+ switch (select(l("I want to register for marriage."),
+ l("Nothing")))
+ {
+ case 1:
+ marriageregister;
+ break;
+ case 2:
+ break;
+ }
+ return;
+}
+
+// divorce main code
+function script marriagedivorce {
+ speech l("What can I do for you?");
+ switch (select(l("I want to divorce."),
+ l("Nothing")))
+ {
+ case 1:
+ speech lg("Are you sure?");
+ if (askyesno() == ASK_YES)
+ {
+ if (divorce())
+ {
+ speech l("You are now divorced!"),
+ l("Good look.");
+ npctalk l("@@ divorced!", strcharinfo(0));
+ }
+ else
+ {
+ speech l("Divorce error!");
+ }
+ }
+ break;
+ case 2:
+ break;
+ }
+ return;
+}
+
+// main function for marriage
+function script marriagemain {
+ if (Sex > 1)
+ {
+ speech l("Sorry i can't help you. Go away!");
+ close;
+ }
+
+ if (getpartnerid() != 0)
+ { // have partner
+ marriagedivorce();
+ }
+ else
+ { // no partner
+ marriagemarry();
+ }
+
+ return;
+}
+
+// check registration list by timer
+function script marriagecheck {
+ .@name$ = getvariableofnpc(.maleName$, strnpcinfo(3));
+ if (.@name$ != "" && marriagecheckname(.@name) == false)
+ {
+ set getvariableofnpc(.maleName$, strnpcinfo(3)), "";
+ set getvariableofnpc(.maleName_partner$, strnpcinfo(3)), "";
+ }
+ .@name$ = getvariableofnpc(.femaleName$, strnpcinfo(3));
+ if (.@name$ != "" && marriagecheckname(.@name) == false)
+ {
+ set getvariableofnpc(.femaleName$, strnpcinfo(3)), "";
+ set getvariableofnpc(.femaleName_partner$, strnpcinfo(3)), "";
+ }
+}