Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.76 KB | None | 0 0
  1. #include <stats.h>
  2. mapping base_stats;
  3. mapping bonus_stats;
  4.  
  5. string query_valid_base_stat( string statname );
  6. int query_stat( string statname );
  7. int query_base_stat( string statname );
  8. int query_bonus_stat( string statname );
  9. void trim_base_stat(string statname);
  10. void trim_bonus_stat(string statname);
  11. int add_base_stat( string statname, int amt );
  12. int add_bonus_stat( string statname, int amt );
  13. int set_base_stat( string statname, int amt );
  14. int set_bonus_stat( string statname, int amt );
  15. mixed *query_all_stats();
  16. void initialize_base_stats();
  17. void initialize_bonus_stats();
  18. void initialize_stat_dependant_variables();
  19. void initialize_stats();
  20.  
  21.  
  22. string query_valid_base_stat( string statname )
  23. {
  24. if( base_stats[statname] )
  25. return statname;
  26. }
  27.  
  28. int query_stat( string statname )
  29. {
  30. int base, bonus;
  31.  
  32. if( !statname ) {
  33. return 0;
  34. }
  35. if( !base_stats ) {
  36. base_stats = ([ ]);
  37. }
  38. if( !bonus_stats ) {
  39. bonus_stats = ([ ]);
  40. }
  41. base = base_stats[statname] ? base_stats[statname] : 0;
  42. bonus = bonus_stats[statname] ? bonus_stats[statname] : 0;
  43. return ( base + bonus );
  44. }
  45.  
  46. int query_base_stat( string statname )
  47. {
  48. if( !statname ) {
  49. return 0;
  50. }
  51. if( !base_stats ) {
  52. base_stats = ([ ]);
  53. }
  54. return base_stats[statname] ? base_stats[statname]:0;
  55. }
  56.  
  57. int query_bonus_stat( string statname )
  58. {
  59. if( !statname ) {
  60. return 0;
  61. }
  62. if( !bonus_stats ) {
  63. bonus_stats = ([ ]);
  64. }
  65. return bonus_stats[statname] ? bonus_stats[statname]:0;
  66. }
  67.  
  68. void trim_base_stat(string statname)
  69. {
  70. int max, min;
  71. return;
  72. max = this_object()->query_race_object()->query_base_stat_maximum(statname);
  73. min = this_object()->query_race_object()->query_base_stat_minimum(statname);
  74.  
  75. if( query_base_stat(statname) < min) {
  76. base_stats[statname] = min;
  77. }
  78. else if( query_base_stat(statname) > max) {
  79. base_stats[statname] = max;
  80. }
  81. }
  82.  
  83. void trim_bonus_stat(string statname)
  84. {
  85. int max, min;
  86. max = 0;
  87. min = 0;
  88. /* removed, query_bonus_stat_X functions dont exist in std/race
  89. max = this_object()->query_race_object()->query_bonus_stat_maximum(statname);
  90. min = this_object()->query_race_object()->query_bonus_stat_minimum(statname);
  91. */
  92. if( query_bonus_stat(statname) < min) {
  93. bonus_stats[statname] = min;
  94. }
  95. else if( query_bonus_stat(statname) > max) {
  96. bonus_stats[statname] = max;
  97. }
  98. }
  99.  
  100. int add_base_stat( string statname, int amt )
  101. {
  102. if( !base_stats ) {
  103. base_stats = ([ ]);
  104. }
  105. if( member_array( statname, VALID_STATS ) == -1 ) {
  106. return 0;
  107. }
  108. if( !base_stats[statname] ) {
  109. base_stats[statname] = amt;
  110. }
  111. else {
  112. base_stats[statname] += amt;
  113. }
  114. trim_base_stat(statname);
  115. return 1;
  116. }
  117.  
  118. int add_timed_bonus_stat( string statname, int amt, int time )
  119. {
  120. if( !base_stats ) {
  121. base_stats = ([ ]);
  122. }
  123. if( member_array( statname, VALID_STATS ) == -1 ) {
  124. return 0;
  125. }
  126. if( !base_stats[statname] ) {
  127. base_stats[statname] = amt;
  128. }
  129. else {
  130. base_stats[statname] += amt;
  131. }
  132. trim_base_stat(statname);
  133. call_out( "add_base_stat", time, -amt );
  134. return 1;
  135. }
  136.  
  137. int add_bonus_stat( string statname, int amt )
  138. {
  139. if( !base_stats ) {
  140. bonus_stats = ([ ]);
  141. }
  142. if( member_array( statname, VALID_STATS ) == -1 ) {
  143. return 0;
  144. }
  145. if( !bonus_stats[statname] ) {
  146. bonus_stats[statname] = amt;
  147. }
  148. else {
  149. bonus_stats[statname] += amt;
  150. }
  151. trim_bonus_stat(statname);
  152. return 1;
  153. }
  154.  
  155. int set_base_stat( string statname, int amt )
  156. {
  157. if( !base_stats ) {
  158. base_stats = ([ ]);
  159. }
  160. if( member_array( statname, VALID_STATS ) == -1 ) {
  161. return 0;
  162. }
  163. base_stats[statname] = amt;
  164. trim_base_stat(statname);
  165. return 1;
  166. }
  167.  
  168. int set_bonus_stat( string statname, int amt )
  169. {
  170. if( !bonus_stats ) {
  171. bonus_stats = ([ ]);
  172. }
  173. if( member_array( statname, VALID_STATS ) == -1 ) {
  174. return 0;
  175. }
  176. bonus_stats[statname] = amt;
  177. trim_bonus_stat(statname);
  178. return 1;
  179. }
  180.  
  181. mixed *query_all_stats()
  182. {
  183. mixed *ret;
  184. string *stat_names;
  185. int i;
  186.  
  187. stat_names = map_indices( base_stats );
  188. ret = ({ });
  189. for( i=0; i < sizeof( stat_names ); i++ )
  190. {
  191. ret += ({ ({ stat_names[i], base_stats[stat_names[i]], bonus_stats[stat_names[i]] }) });
  192. }
  193. return( ret );
  194. }
  195.  
  196. int query_statbonus( string name ) {
  197.  
  198. int stat;
  199.  
  200. if( member_array( name, VALID_STATS ) == -1 ) {
  201. return( 0 );
  202. }
  203.  
  204. stat = query_stat( name );
  205.  
  206. if( stat > 1 && stat < 9 ) {
  207. return( 1 );
  208. } else if( stat > 8 && stat < 14 ) {
  209. return( 2 );
  210. } else if( stat > 13 && stat < 18 ) {
  211. return( 3 );
  212. } else if( stat > 17 && stat < 20 ) {
  213. return( 4 );
  214. } else if( stat > 29 ) {
  215. return( 5 );
  216. }
  217. return( 0 );
  218. }
  219.  
  220. void initialize_base_stats()
  221. {
  222. int i;
  223.  
  224. for (i=0;i<sizeof(VALID_STATS);i++)
  225. {
  226. this_object()->set_base_stat( VALID_STATS[i],STAT_MIN);
  227. }
  228. }
  229.  
  230. void initialize_bonus_stats()
  231. {
  232. int i;
  233.  
  234. for (i=0;i<sizeof(VALID_STATS);i++)
  235. {
  236. this_object()->set_bonus_stat( VALID_STATS[i],0);
  237. }
  238. }
  239.  
  240. void initialize_stat_dependant_variables()
  241. {
  242. int con,str, hp;
  243. con = this_object()->query_base_stat("con");
  244. str=this_object()->query_base_stat("str");
  245. hp = 100+(con*4)+(str*2);
  246. this_object()->set_max_hp( hp );
  247. }
  248.  
  249. void initialize_stats( )
  250. {
  251. this_object()->initialize_base_stats();
  252. this_object()->initialize_bonus_stats();
  253. initialize_stat_dependant_variables();
  254. }
  255.  
  256. void setup()
  257. {
  258. base_stats=([]);
  259. bonus_stats=([]);
  260. initialize_stats();
  261. }
  262.  
  263. void upgraded()
  264. {
  265. if(clone_num() == 0) setup();
  266. ::upgraded();
  267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement