Difference between revisions of "Script: Gm"
From Ultima Online: The Second Age
(Created page with " <span style="color:#0000FF">inherits</span> human; <span style="color:#0000FF">trigger</span> objectloaded { callBack(this, 0x64, 0x60); <span style="color:#0000...") |
|||
(2 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
{ | { | ||
<span style="color:#0000FF">int</span> Q608; | <span style="color:#0000FF">int</span> Q608; | ||
− | <span style="color:#0000FF">member</span> <span style="color:#0000FF">string</span> | + | <span style="color:#0000FF">member</span> <span style="color:#0000FF">string</span> guildName; |
<span style="color:#0000FF">member</span> <span style="color:#0000FF">int</span> Q59L; | <span style="color:#0000FF">member</span> <span style="color:#0000FF">int</span> Q59L; | ||
<span style="color:#0000FF">loc</span> Q4VS = [[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](this); | <span style="color:#0000FF">loc</span> Q4VS = [[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](this); | ||
Line 30: | Line 30: | ||
{ | { | ||
<span style="color:#0000FF">case</span> 0x00 | <span style="color:#0000FF">case</span> 0x00 | ||
− | + | guildName = <span style="color:#800000">"Default Guild of Superheroic Non-Player Characters"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x01 | <span style="color:#0000FF">case</span> 0x01 | ||
− | + | guildName = <span style="color:#800000">"Guild of Arcane Arts"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x02 | <span style="color:#0000FF">case</span> 0x02 | ||
− | + | guildName = <span style="color:#800000">"Warrior's Guild"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x03 | <span style="color:#0000FF">case</span> 0x03 | ||
− | + | guildName = <span style="color:#800000">"Society of Thieves"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x04 | <span style="color:#0000FF">case</span> 0x04 | ||
− | + | guildName = <span style="color:#800000">"League of Rangers"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x05 | <span style="color:#0000FF">case</span> 0x05 | ||
− | + | guildName = <span style="color:#800000">"Guild of Healers"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x06 | <span style="color:#0000FF">case</span> 0x06 | ||
− | + | guildName = <span style="color:#800000">"Mining Cooperative"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x07 | <span style="color:#0000FF">case</span> 0x07 | ||
− | + | guildName = <span style="color:#800000">"Merchants' Association"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x08 | <span style="color:#0000FF">case</span> 0x08 | ||
− | + | guildName = <span style="color:#800000">"Order of Engineers"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x09 | <span style="color:#0000FF">case</span> 0x09 | ||
− | + | guildName = <span style="color:#800000">"Society of Clothiers"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x0A | <span style="color:#0000FF">case</span> 0x0A | ||
− | + | guildName = <span style="color:#800000">"Maritime Guild"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">case</span> 0x0B | <span style="color:#0000FF">case</span> 0x0B | ||
− | + | guildName = <span style="color:#800000">"Bardic Collegium"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
<span style="color:#0000FF">default</span> | <span style="color:#0000FF">default</span> | ||
− | + | guildName = <span style="color:#800000">"Default Guild of Superheroic Non-Player Characters"</span>; | |
<span style="color:#0000FF">break</span>; | <span style="color:#0000FF">break</span>; | ||
} | } | ||
Line 79: | Line 79: | ||
<span style="color:#0000FF">if</span> ([[Engine Function:_getDistanceInTiles|<span style="color:#FF0000;font-weight:bold">getDistanceInTiles</span>]]([[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](this), there) > 0x0A) | <span style="color:#0000FF">if</span> ([[Engine Function:_getDistanceInTiles|<span style="color:#FF0000;font-weight:bold">getDistanceInTiles</span>]]([[Engine Function:_getLocation|<span style="color:#FF0000;font-weight:bold">getLocation</span>]](this), there) > 0x0A) | ||
{ | { | ||
− | <span style="color:#0000FF">int</span> Q4EL = [[ | + | <span style="color:#0000FF">int</span> Q4EL = [[Engine Function:_teleport|<span style="color:#FF0000;font-weight:bold">teleport</span>]](this, there); |
} | } | ||
} | } | ||
Line 93: | Line 93: | ||
} | } | ||
<span style="color:#0000FF">loc</span> place = [[Engine Function:_getObjVar|<span style="color:#FF0000;font-weight:bold">getObjVar</span>]](this, <span style="color:#800000">"myGuildLocation"</span>); | <span style="color:#0000FF">loc</span> place = [[Engine Function:_getObjVar|<span style="color:#FF0000;font-weight:bold">getObjVar</span>]](this, <span style="color:#800000">"myGuildLocation"</span>); | ||
− | <span style="color:#0000FF">int</span> Q4Q1 = [[ | + | <span style="color:#0000FF">int</span> Q4Q1 = [[Engine Function:_teleport|<span style="color:#FF0000;font-weight:bold">teleport</span>]](this, place); |
<span style="color:#0000FF">return</span> (0x00); | <span style="color:#0000FF">return</span> (0x00); | ||
} | } | ||
Line 145: | Line 145: | ||
<span style="color:#0000FF">if</span> (Q618 == <span style="color:#800000">"guild"</span> || (Q618 == <span style="color:#800000">"guilds"</span>)) | <span style="color:#0000FF">if</span> (Q618 == <span style="color:#800000">"guild"</span> || (Q618 == <span style="color:#800000">"guilds"</span>)) | ||
{ | { | ||
− | Q58D = <span style="color:#800000">"I am a Guildmaster of the "</span> + | + | Q58D = <span style="color:#800000">"I am a Guildmaster of the "</span> + guildName + <span style="color:#800000">". Art thou interested in joining?"</span> |
); | ); | ||
[[Engine Function:_bark|<span style="color:#FF0000;font-weight:bold">bark</span>]](this, Q58D); | [[Engine Function:_bark|<span style="color:#FF0000;font-weight:bold">bark</span>]](this, Q58D); | ||
Line 177: | Line 177: | ||
Q4Q1 = [[Engine Function:_putObjContainer|<span style="color:#FF0000;font-weight:bold">putObjContainer</span>]](givenobj, this); | Q4Q1 = [[Engine Function:_putObjContainer|<span style="color:#FF0000;font-weight:bold">putObjContainer</span>]](givenobj, this); | ||
[[Engine Function:_deleteObject|<span style="color:#FF0000;font-weight:bold">deleteObject</span>]](givenobj); | [[Engine Function:_deleteObject|<span style="color:#FF0000;font-weight:bold">deleteObject</span>]](givenobj); | ||
− | <span style="color:#0000FF">string</span> Q58D = <span style="color:#800000">"Welcome to the "</span> + | + | <span style="color:#0000FF">string</span> Q58D = <span style="color:#800000">"Welcome to the "</span> + guildName + <span style="color:#800000">"!"</span>; |
Q608 = [[Engine Function:_getObjVar|<span style="color:#FF0000;font-weight:bold">getObjVar</span>]](this, <span style="color:#800000">"guildMember"</span>); | Q608 = [[Engine Function:_getObjVar|<span style="color:#FF0000;font-weight:bold">getObjVar</span>]](this, <span style="color:#800000">"guildMember"</span>); | ||
<span style="color:#0000FF">if</span> (Q608 == 0x03) | <span style="color:#0000FF">if</span> (Q608 == 0x03) |
Latest revision as of 17:09, 19 October 2018
inherits human;
trigger objectloaded { callBack(this, 0x64, 0x60); return (0x01); }
trigger creation { int Q608; member string guildName; member int Q59L; loc Q4VS = getLocation(this); setObjVar(this, "myGuildLocation", Q4VS); setLoiterMode(this, 0x01); goLoiter(this, Q4VS, 0x03E8); callBack(this, 0x64, 0x60); setBehavior(this, 0x02); if (hasObjVar(this, "guildMember")) { Q608 = getObjVar(this, "guildMember"); } if (!Q608) { setObjVar(this, "guildMember", 0x00); } Q59L = Q608; switch (Q608) { case 0x00 guildName = "Default Guild of Superheroic Non-Player Characters"; break; case 0x01 guildName = "Guild of Arcane Arts"; break; case 0x02 guildName = "Warrior's Guild"; break; case 0x03 guildName = "Society of Thieves"; break; case 0x04 guildName = "League of Rangers"; break; case 0x05 guildName = "Guild of Healers"; break; case 0x06 guildName = "Mining Cooperative"; break; case 0x07 guildName = "Merchants' Association"; break; case 0x08 guildName = "Order of Engineers"; break; case 0x09 guildName = "Society of Clothiers"; break; case 0x0A guildName = "Maritime Guild"; break; case 0x0B guildName = "Bardic Collegium"; break; default guildName = "Default Guild of Superheroic Non-Player Characters"; break; } return (0x00); }
trigger callback(0x60) { if (hasObjVar(this, "myGuildLocation")) { loc there = getObjVar(this, "myGuildLocation"); if (getDistanceInTiles(getLocation(this), there) > 0x0A) { int Q4EL = teleport(this, there); } } callBack(this, 0x64, 0x60); return (0x01); }
trigger pathnotfound(0x06) { if (!hasObjVar(this, "myGuildLocation")) { return (0x00); } loc place = getObjVar(this, "myGuildLocation"); int Q4Q1 = teleport(this, place); return (0x00); }
trigger speech("*") { string Q618; list args; int Q608; string Q58D; if (!Q4J8(this, speaker, arg)) { return (0x01); } split(args, arg); for(int i = 0x00; i < numInList(args); i++) { Q618 = args[i]; if (Q618 == "join" || (Q618 == "member")) { if (hasObjVar(speaker, "guildMember")) { Q608 = getObjVar(speaker, "guildMember"); if (Q608 != Q59L) { bark(this, "Thou must resign from thy other guild first."); return (0x00); } bark(this, "Thou art already a member of our guild."); return (0x00); } bark(this, "The fee for joining a guild is 500 gold coins."); setObjVar(speaker, "guildAskedToJoin", this); return (0x00); } if (Q618 == "resign" || (Q618 == "quit")) { if (hasObjVar(speaker, "guildMember")) { Q608 = getObjVar(speaker, "guildMember"); if (Q608 != Q59L) { bark(this, "Thou dost not belong to my guild!"); return (0x00); } bark(this, "I accept thy resignation."); removeObjVar(speaker, "guildMember"); return (0x00); } } if (Q618 == "guild" || (Q618 == "guilds")) { Q58D = "I am a Guildmaster of the " + guildName + ". Art thou interested in joining?" ); bark(this, Q58D); return (0x00); } } return (0x01); }
trigger give { int Q608; if (hasObjVar(giver, "guildAskedToJoin")) { obj Q68T = getObjVar(giver, "guildAskedToJoin"); if (Q68T != this) { return (0x01); } int value; int Q4Q1; Q4Q1 = getResource(value, givenobj, "gold", 0x03, 0x02); if (!Q4Q1) { return (0x01); } if (value != 0x01F4) { return (0x01); } Q4Q1 = putObjContainer(givenobj, this); deleteObject(givenobj); string Q58D = "Welcome to the " + guildName + "!"; Q608 = getObjVar(this, "guildMember"); if (Q608 == 0x03) { Q58D = Q58D + " Fellow thieves and beggars shall not bother thee now."; } else { Q58D = Q58D + " Thou shalt find that fellow members shall grant thee lower prices in shops."; } bark(this, Q58D); setObjVar(giver, "guildMember", Q608); return (0x00); } return (0x01); }