OSP (Code) two decimal ratio calculation with build in miscalculations

Users who are viewing this thread

Calculates friendly and enemy troops, adds a small number to hostile because you dont now exact numbers.
Then makes a two decimal ratio of it
adding 150 troops for siege, is for My siege system, in my mod For Rome
(link to siege system: http://www.moddb.com/mods/for-rome/features/sieges-you-wont-believe-your-eyes)
Code:
          (store_party_size_wo_prisoners, ":party_size", "p_main_party"),
          (assign, reg5, ":party_size"),

          (store_party_size_wo_prisoners, ":party_size2", "$g_encountered_party"), #get troops in city
          (val_add, ":party_size2", 150), #extra in the battle that are citizens fighting
          (store_random_in_range, ":missinfo", 0,100), #the info is 0 to 100 changing with the real info
          (store_random_in_range, ":addorsub", 0,100), #this determines whether the chance is added or substracted
          (try_begin),
               (ge, ":addorsub", 50),
               (val_add, ":party_size2", ":missinfo"),
          (else_try),
               (lt, ":addorsub", 50),
               (val_sub, ":party_size2", ":missinfo"),
          (try_end),
          (assign, reg6, ":party_size2"), 



	  (assign, ":ratio1", ":party_size"), #store friendlies to ratio
	  (val_div, ":ratio1", ":party_size2"), #divide friendlies with enemies giving a ratio number
	  
	  (val_mul, ":ratio1", 100), #0,5 gives 50% 5 gives 500% so this makes it procentual (V1)
	  (assign, reg7, ":ratio1"), #stored to reg to be able to put it in the string
	  (str_store_string, s1, "@{reg7}"), #procentual put in string 
	  
	  #following requires WSE
	  (str_length, ":s1length", s1), #we store the length of the string
	  (str_store_string, s2, "@empty"),
          (str_store_string, s3, "@empty"),
	  (try_begin),
	    (eq, ":s1length", 4), #as we divide by 100 it has two decimals: 3,21 or 9,47
		(str_store_substring, s2, s1, 0, 2), #stores first number
		(str_to_num, ":num1", s2), #make first letter an number
		(assign, reg10, ":num1"), #store first letter number to reg10
		(str_store_substring, s3, s1, 2, 4), #stores digits
		(str_to_num, ":num2", s3), #make first letter an number
		(assign, reg11, ":num2"), #store first letter number to reg10
		(str_store_string, s2, "@{reg10}.{reg11}"),
	  (else_try),
		(eq, ":s1length", 3), #as we divide by 100 it has two decimals: 3,21 or 9,47
		(str_store_substring, s2, s1, 0, 1), #stores first number
		(str_to_num, ":num1", s2), #make first letter an number
		(assign, reg10, ":num1"), #store first letter number to reg10
		(str_store_substring, s3, s1, 1, 3), #stores digits
		(str_to_num, ":num2", s3), #make first letter an number
		(assign, reg11, ":num2"), #store first letter number to reg10
		(str_store_string, s2, "@{reg10}.{reg11}"),
	  (else_try)
	        (eq, ":s1length", 2),
		(str_to_num, ":num3", s1), #make first letter an number
		(assign, reg12, ":num3"), #store first letter number to reg10
		(str_store_string, s2, "@0.{reg12}"),
	  (else_try),
	    (eq, ":s1length", 1),
		(str_to_num, ":num4", s1), #make first letter an number
		(assign, reg13, ":num4"), #store first letter number to reg10
		(str_store_string, s2, "@0.0{reg13}"),
	  (try_end),
 
Back
Top Bottom