xs_breeding.lsl 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. integer age;
  2. integer looking_for_female;
  3. key father;
  4. key mother;
  5. integer preg_time;
  6. default
  7. {
  8. link_message(integer sender, integer num, string str, key id)
  9. {
  10. if (num == 800) {
  11. state running;
  12. }
  13. }
  14. }
  15. state running
  16. {
  17. state_entry()
  18. {
  19. age = 0;
  20. }
  21. link_message(integer sender, integer num, string str, key id)
  22. {
  23. if (num == 932) {
  24. if (str == "1") {
  25. state male;
  26. } else {
  27. state female;
  28. }
  29. } else
  30. if (num == 940) {
  31. age += (integer)str;
  32. } else
  33. if (num == 5000) {
  34. preg_time = (integer)str;
  35. if (preg_time != 0) {
  36. state pregnant;
  37. } else {
  38. state female;
  39. }
  40. }
  41. }
  42. }
  43. state male
  44. {
  45. state_entry()
  46. {
  47. looking_for_female = 0;
  48. mother = NULL_KEY;
  49. father = NULL_KEY;
  50. llMessageLinked(LINK_SET, 942, "", "");
  51. if (age >= 7) {
  52. llSetTimerEvent(10800.0);
  53. }
  54. }
  55. link_message(integer sender, integer num, string str, key id)
  56. {
  57. if (num == 943) {
  58. age = (integer)str;
  59. if (age >= 7) {
  60. llSetTimerEvent(10800.0);
  61. }
  62. } else
  63. if (num == 940) {
  64. age += (integer)str;
  65. if (age >= 7) {
  66. llSetTimerEvent(10800.0);
  67. }
  68. } else
  69. if (num == 963) {
  70. if (looking_for_female == 1) {
  71. looking_for_female = 0;
  72. mother = id;
  73. father = llGetKey();
  74. llMessageLinked(LINK_SET, 964, "", mother);
  75. }
  76. } else
  77. if (num == 967) {
  78. if (mother != NULL_KEY) {
  79. llMessageLinked(LINK_SET, 968, "", mother);
  80. }
  81. } else
  82. if (num == 969) {
  83. state male;
  84. }
  85. }
  86. timer()
  87. {
  88. looking_for_female = 1;
  89. // look for an eligible female.
  90. llWhisper(0, llGetObjectName() + " gets a gleam in his eye.");
  91. llMessageLinked(LINK_SET, 960, "", "");
  92. }
  93. }
  94. state female
  95. {
  96. state_entry()
  97. {
  98. mother = NULL_KEY;
  99. father = NULL_KEY;
  100. if (age == 0) {
  101. llMessageLinked(LINK_SET, 942, "", "");
  102. }
  103. }
  104. link_message(integer sender, integer num, string str, key id)
  105. {
  106. if (num == 940) {
  107. age += (integer)str;
  108. } else
  109. if (num == 961) {
  110. // signal I am eligible
  111. if (age >= 7 && father == NULL_KEY) {
  112. llWhisper(0, llGetObjectName() + " blushes then bobs her head up and down.");
  113. llMessageLinked(LINK_SET, 962, "", "");
  114. }
  115. } else
  116. if (num == 965) {
  117. // male on the way, rest for 20m
  118. llSetTimerEvent(900.0);
  119. father = id;
  120. mother = llGetKey();
  121. llMessageLinked(LINK_SET, 911, "1200", "");
  122. } else
  123. if (num == 972) {
  124. // pregnant
  125. llSetTimerEvent(0);
  126. preg_time = 0;
  127. state pregnant;
  128. } else
  129. if (num == 969) {
  130. llSetTimerEvent(0);
  131. state female;
  132. } else
  133. if (num == 943) {
  134. age = (integer)str;
  135. } else
  136. if (num == 5000) {
  137. preg_time = (integer)str;
  138. if (preg_time != 0) {
  139. state pregnant;
  140. }
  141. }
  142. }
  143. timer()
  144. {
  145. llSetTimerEvent(0);
  146. // fail
  147. llMessageLinked(LINK_SET, 971, "", father);
  148. state female;
  149. }
  150. }
  151. state pregnant
  152. {
  153. state_entry()
  154. {
  155. if (preg_time != 0) {
  156. llSetTimerEvent(172800.0 - (float)(llGetUnixTime() - preg_time));
  157. } else {
  158. llSetTimerEvent(172800.0);
  159. }
  160. }
  161. timer()
  162. {
  163. // lay egg.
  164. llSetTimerEvent(0);
  165. llMessageLinked(LINK_SET, 970, "", "");
  166. state female;
  167. }
  168. }