Jump to content

AD-Blocker detected, please disable your ad-blocker when surfing in makerando.com - There is no invasive Ad.

 

  • Chatbox

    You don't have permission to chat.
    Load More
  1. Ghost Rider

    Ghost Rider

  • Similar Content

    • By MrSte
      Autore: Apellonyx
       
      Versione: 1.10
       
      Informazioni: Questo Script aggiunge al gioco la Funzione di Sopravvivenza, tra cui: Fame, Vita, Acqua ecc..
       
      Screenshot:
       
       
      n/a
       
      Script: 
       
      =begin ====================================== Survival System v1.11 (formerly known as Needs System) Created by: Apellonyx Released: 2 April 2013 Last Update: 5 April 2013 ====================================== Terms of Use: You are free to use this system however you wish, in commercial and non- commercial games alike. If you edit the script extensively, it is not necessary to credit me (since you clearly only used my code as a framework), but I would appreciate credit if it is used in its current form, or if only minor changes were made to the script. ====================================== Support: While I am not wildly active, I usually log onto "rpgmakervxace.com" daily, so if you have any questions pertaining to the script, you can ask any questions there, in the topic in which this script was released. Just as a warning, though, I will not edit the script to make it compatible with any special menu systems, but I will try to fix bugs as they come up. If you find one, let me know, and I'll do my best to squash the thing. ====================================== Changelog: v1.0: 2 April 2013 - Original version. Included food, water, rest, and life. v1.01: 3 April 2013 - Added configurable maximum values for food, water, and rest, and made the maximum for life a configurable value. The failsafe mentioned in v1.0's Instructions is no longer needed. v1.02: 3 April 2013 - Added support for a fully configurable "reverse logic" stat, as suggested by esrann. v1.10: 5 April 2013 - Complete rewrite using global variables rather than game variables and switches. All stats are now optional, configurable, and can be hidden from the menu. v1.11: 17 May 2013 - Fixed a major bug involving the use of float values. Floats should work just fine now without causing the game to crash or the script to just die randomly. Also added background opacity config. ====================================== Requirements: There are no longer any requirements for this script. I'm working on a script that will allow the global variables to be changed through note calls, but it may be a minute for that. ====================================== Description: This sets up a needs system, which includes food, water, and rest, all of which affect the main need, life. The 1.02 update also added a reverse logic stat for toxin or radiation handling. All five stats, along with their update rates, are handled by global variables, and can be changed at any time with a simple script call. ====================================== Instructions: First, you're going to want to set up how you want the script to run. All of the options are in the first module of the script, named "Anyx." I don't recommend changing anything after that module unless you know what you are doing. Second, once you have all of your options set up, you can go about setting up the nourishment items. All you have to do is set it up in the database as you normally would, and then attach an effect that calls a common event. Inside the common event, use one of the following scripts call to change the appropriate variable. It's as simple as that. $survival_v[id] op value id = The stat you want to change. 1 is for life, 2 food, 3 water, 4 rest, and 5 toxin. Ids 6-10 are used to hold the stats' rates. 6 is for life, 7 food, 8 water, 9 rest, and 10 toxin (setting any of these rates to 0 will disable updates for its stat, effectively pausing the system for that stat individually without pausing it for the others) op = The operator used to formulate the new value. += is used to add, -= is for subtraction, *= is for multiplication, /= is for division, and %= is for modulus. There are others, and they all work, but I don't imagine you would use them for this script, so I won't explain them here. value = The value you would like to alter the variable by. For example, if you are adding 10 to a variable, this would be 10. $survival_s[id] = value id = The stat you wish to enable or disable. 1 is for life, 2 food, 3 water, 4 rest, 5 toxin. Ids 6-10 are used to hide the stat bars from the menu. value = true/false. Setting the value to true for ids 1-5 will enable the associated stat. Setting it to false will disable it completely. For ids 6-10, setting the value to true will hide that stat from the menu, but still allow it to update (this can be customized using the LIFEHIDEVAL, FOODHIDEVAL, WATERHIDEVAL, RESTHIDEVAL, and TOXINHIDEVAL options in the Anyx module below. When the hide option is true, that stat will be hidden from the menu until the stat is below the (STAT)HIDEVAL's value, or above the TOXINHIDEVAL's value for the toxin stat). If false, the stat will be visible in the menu at all times. You no longer need to manually set the initial values for each variable, as this can be done through the script, but you do need to turn on the survival switch manually, or the script won't do anything. ====================================== =end $imported = {} if $imported.nil? $imported['Apellonyx-Survival'] = true puts "Load: Survival System v1.10 by Apellonyx" module Anyx WINXPOS = 0 # X position of the survival window WINYPOS = 320 # Y position of the survival window WINWIDTH = 160 # Width of the survival window WINTEXT = 20 # Text size used in the survival window (looks best at 20) WINOPACITY = 255 # Opacity of the survival window SURVIVALSWITCH = 1 # Game switch ID for enabling and disabling the system ONINBATTLE = true # Whether the system will update during battle scenes DEATHATZERO = true # If true, will cause a gameover when the life stat # reaches 0 DEATHFULLTOXIN = true # If true, will cause a gameover when the toxin stat # reaches its maximum value LIFEVOCAB = "Life" # Vocab used for the life stat in the menu LIFEINIT = 100 # Initial value of the life stat in new games LIFERATE = 300 # Number of frames between life stat updates LIFEMAX = 100 # Maximum value for the life bar in the menu LIFEEXC = 100 # Maximum value for the life stat (can exceed LIFEMAX) LIFEENABLE = true # If true, the life stat will be enabled LIFEHIDE = true # If true, the life bar will be hidden from the menu LIFEHIDEVAL = 100 # If LIFEHIDE is true, the life bar will appear when it # falls below this value. FOODVOCAB = "Food" # Vocab used for the food stat in the menu FOODINIT = 100 # Initial value of the food stat in new games FOODRATE = 1200 # Number of frames between food stat updates FOODMAX = 100 # Maximum value for the food bar in the menu FOODEXC = 110 # Maximum value for the food stat (can exceed FOODMAX) FOODMOD = -1.0 # Value of the food stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. FOODENABLE = true # If true, the food stat will be enabled FOODHIDE = true # If true, the food bar will be hidden from the menu FOODHIDEVAL = 100 # If FOODHIDE is true, the food bar will appear when it # falls below this value. WATERVOCAB = "Water" # Vocab used for the water stat in the menu WATERINIT = 100 # Initial value of the water stat in new games WATERRATE = 900 # Number of frames between water stat updates WATERMAX = 100 # Maximum value for the water bar in the menu WATEREXC = 110 # Maximum value for the water stat (can exceed WATERMAX) WATERMOD = -1.0 # Value of the water stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. WATERENABLE = true # If true, the water stat will be enabled WATERHIDE = true # If true, the water bar will be hidden from the menu WATERHIDEVAL = 100 # If WATERHIDE is true, the water bar will appear when # it falls below this value. RESTVOCAB = "Rest" # Vocab used for the rest stat in the menu RESTINIT = 100 # Initial value of the rest stat in new games RESTRATE = 1500 # Number of frames between rest stat updates RESTMAX = 100 # Maximum value for the rest bar in the menu RESTEXC = 110 # Maximum value for the rest stat (can exceed RESTMAX) RESTMOD = -1.0 # Value of the rest stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. RESTENABLE = true # If true, the rest stat will be enabled RESTHIDE = true # If true, the rest bar will be hidden from the menu RESTHIDEVAL = 100 # If RESTHIDE is true, the rest bar will appear when it # falls below this value. TOXINVOCAB = "Toxin" # Vocab used for the toxin stat in the menu TOXININIT = 0 # Initial value of the toxin stat in new games TOXINRATE = 100 # Number of frames between toxin stat updates TOXINMAX = 1000 # Maximum value for the toxin stat and toxin bar TOXINMOD = 0.1 # Value of the toxin stat's change each update; positive # values will increase the stat over time, negative # values decrease the stat over time, and 0 will cause # no update to occur over time. Accepts float values. TOXINENABLE = true # If true, the toxin stat will be enabled TOXINHIDE = true # If true, the toxin bar will be hidden from the menu TOXINHIDEVAL = 0 # If TOXINHIDE is true, the toxin bar will appear when it # rises above this value. LIFECOLORL = 17 # Color ID of the left side of the life bar LIFECOLORR = 6 # Color ID of the right side of the life bar FOODCOLORL = 3 # Color ID of the left side of the food bar FOODCOLORR = 24 # Color ID of the right side of the food bar WATERCOLORL = 16 # Color ID of the left side of the water bar WATERCOLORR = 4 # Color ID of the right side of the water bar RESTCOLORL = 31 # Color ID of the left side of the rest bar RESTCOLORR = 13 # Color ID of the right side of the rest bar TOXINCOLORL = 10 # Color ID of the left side of the toxin bar TOXINCOLORR = 2 # Color ID of the right side of the toxin bar EXCCOLOR = 11 # Color ID of text for stat values over 100% SATCOLOR = 24 # Color ID of text for stat values between 76 and 100% AVECOLOR = 17 # Color ID of text for stat values between 51 and 75% LOWCOLOR = 14 # Color ID of text for stat values between 26 and 50% DANCOLOR = 20 # Color ID of text for stat values between 1 and 25% DEPCOLOR = 18 # Color ID of text for stat values of 0% ################################################################################ ################################################################################ ### ### ### I don't recommend editing anything past this line unless you know what ### ### you are doing. If you do know what you're doing, however, go for it! ### ### ### ################################################################################ ################################################################################ def self.create_survival_commands $survival_v = Survival_Variables.new $survival_s = Survival_Switches.new $survival_v[1] = LIFEINIT $survival_v[6] = LIFERATE $survival_s[1] = LIFEENABLE $survival_s[6] = LIFEHIDE $survival_v[2] = FOODINIT $survival_v[7] = FOODRATE $survival_s[2] = FOODENABLE $survival_s[7] = FOODHIDE $survival_v[3] = WATERINIT $survival_v[8] = WATERRATE $survival_s[3] = WATERENABLE $survival_s[8] = WATERHIDE $survival_v[4] = RESTINIT $survival_v[9] = RESTRATE $survival_s[4] = RESTENABLE $survival_s[9] = RESTHIDE $survival_v[5] = TOXININIT $survival_v[10] = TOXINRATE $survival_s[5] = TOXINENABLE $survival_s[10] = TOXINHIDE end # def self.create_survival_commands class Survival_Variables def initialize @data = [] end # def initialize def [](variable_id) @data[variable_id] || 0 end # def [](variable_id) def []=(variable_id, value) @data[variable_id] = value on_change end # def []=(variable_id, value) def on_change $game_map.need_refresh = true end # def on_change end # class Survival_Variables class Survival_Switches def initialize @data = [] end # def initialize def [](switch_id) @data[switch_id] || false end # def [](switch_id) def []=(switch_id, value) @data[switch_id] = value on_change end # def []=(switch_id, value) def on_change $game_map.need_refresh = true end # def on_change end # class Survival_Switches def self.update if $game_switches[SURVIVALSWITCH] == true if $survival_s[1] == true if $survival_v[6] > 0 if Graphics.frame_count % $survival_v[6] == 0 Anyx.life_update end # if Graphics.frame_count % $survival_v[6] == 0 end # if $survival_v[6] > 0 end # if $survival_s[1] == true if $survival_s[2] == true if $survival_v[7] > 0 if Graphics.frame_count % $survival_v[7] == 0 if $survival_v[2] < FOODEXC $survival_v[2] += FOODMOD if $survival_v[2] > 0 end end # if Graphics.frame_count % $survival_v[7] == 0 end # if $survival_v[7] > 0 end # if $survival_s[1] == true if $survival_s[3] == true if $survival_v[8] > 0 if Graphics.frame_count % $survival_v[8] == 0 if $survival_v[3] < WATEREXC $survival_v[3] += WATERMOD if $survival_v[3] > 0 end end # if Graphics.frame_count % $survival_v[8] == 0 end # if $survival_v[8] > 0 end # if $survival_s[3] == true if $survival_s[4] == true if $survival_v[9] > 0 if Graphics.frame_count % $survival_v[9] == 0 if $survival_v[4] < RESTEXC $survival_v[4] += RESTMOD if $survival_v[4] > 0 end end # if Graphics.frame_count % $survival_v[9] == 0 end # if $survival_v[9] > 0 end # if $survival_s[4] == true if $survival_s[5] == true if $survival_v[10] > 0 if Graphics.frame_count % $survival_v[10] == 0 if $survival_v[5] < TOXINMAX $survival_v[5] += TOXINMOD if $survival_v[5] > 0 end end # if Graphics.frame_count % $survival_v[10] == 0 end # if $survival_v[10] > 0 end # if $survival_s[5] == true $survival_v[1] = 0 if $survival_v[1] < 0 $survival_v[2] = 0 if $survival_v[2] < 0 $survival_v[3] = 0 if $survival_v[3] < 0 $survival_v[4] = 0 if $survival_v[4] < 0 $survival_v[5] = 0 if $survival_v[5] < 0 $survival_v[1] = LIFEEXC if $survival_v[1] > LIFEEXC $survival_v[2] = FOODEXC if $survival_v[2] > FOODEXC $survival_v[3] = WATEREXC if $survival_v[3] > WATEREXC $survival_v[4] = RESTEXC if $survival_v[4] > RESTEXC $survival_v[5] = TOXINMAX if $survival_v[5] > TOXINMAX if $survival_v[1] <= 0 SceneManager.call(Scene_Gameover) if DEATHATZERO end # if $survival_v[1] <= 0 if $survival_v[5] >= TOXINMAX SceneManager.call(Scene_Gameover) if DEATHFULLTOXIN end # if $survival_v[5] >= TOXINMAX end # if $game_switches[SURVIVALSWITCH] == true end # def update def self.life_update if $survival_s[2] == true food_25 = FOODMAX / 4 food_26 = food_25 + 0.001 food_50 = food_25 * 2 food_51 = food_50 + 0.001 food_75 = food_25 * 3 food_76 = food_75 + 0.001 food_mod = -0.3 if 0 >= $survival_v[2] food_mod = -0.2 if (1..food_25) === $survival_v[2] food_mod = -0.1 if (food_26..food_50) === $survival_v[2] food_mod = 0.0 if (food_51..food_75) === $survival_v[2] food_mod = 0.1 if (food_76..FOODMAX) === $survival_v[2] food_mod = 0.2 if FOODMAX < $survival_v[2] else food_mod = 0 end # if $survival_s[2] == true if $survival_s[3] == true water_25 = WATERMAX / 4 water_26 = water_25 + 0.001 water_50 = water_25 * 2 water_51 = water_50 + 0.001 water_75 = water_25 * 3 water_76 = water_75 + 0.001 water_mod = -0.3 if 0 >= $survival_v[3] water_mod = -0.2 if (1..water_25) === $survival_v[3] water_mod = -0.1 if (water_26..water_50) === $survival_v[3] water_mod = 0.0 if (water_51..water_75) === $survival_v[3] water_mod = 0.1 if (water_76..WATERMAX) === $survival_v[3] water_mod = 0.2 if WATERMAX < $survival_v[3] else water_mod = 0 end # if $survival_s[4] == true if $survival_s[4] == true rest_25 = RESTMAX / 4 rest_26 = rest_25 + 0.001 rest_50 = rest_25 * 2 rest_51 = rest_50 + 0.001 rest_75 = rest_25 * 3 rest_76 = rest_75 + 0.001 rest_mod = -0.3 if 0 >= $survival_v[4] rest_mod = -0.2 if (1..rest_25) === $survival_v[4] rest_mod = -0.1 if (rest_26..rest_50) === $survival_v[4] rest_mod = 0.0 if (rest_51..rest_75) === $survival_v[4] rest_mod = 0.1 if (rest_76..RESTMAX) === $survival_v[4] rest_mod = 0.2 if RESTMAX < $survival_v[4] else rest_mod = 0 end # if $survival_s[4] == true if $survival_s[5] == true toxin_25 = TOXINMAX / 4 toxin_26 = toxin_25 + 0.001 toxin_50 = toxin_25 * 2 toxin_51 = toxin_50 + 0.001 toxin_75 = toxin_25 * 3 toxin_76 = toxin_75 + 0.001 toxin_99 = TOXINMAX - 0.001 toxin_mod = 0.1 if 0 >= $survival_v[5] toxin_mod = 0.0 if (1..toxin_25) === $survival_v[5] toxin_mod = -0.2 if (toxin_26..toxin_50) === $survival_v[5] toxin_mod = -0.4 if (toxin_51..toxin_75) === $survival_v[5] toxin_mod = -0.6 if (toxin_76..toxin_99) === $survival_v[5] toxin_mod = -0.8 if TOXINMAX <= $survival_v[5] else toxin_mod = 0.0 end # if $survival_s[5] == true life_mod = food_mod + water_mod + rest_mod + toxin_mod $survival_v[1] += life_mod.round.to_i end # def life_update() end # module Anyx class Scene_Title alias survival_new_game command_new_game def command_new_game Anyx.create_survival_commands survival_new_game end # def command_new_game end # class Scene_Title class Scene_Map < Scene_Base alias survival_map_update update def update Anyx.update survival_map_update end # def update end # class Scene_Base class Scene_Battle < Scene_Base alias survival_battle_update update def update if Anyx::ONINBATTLE == true Anyx.update survival_battle_update end # if Anyx::ONINBATTLE == true end # def update end # class Scene_Base class Scene_Menu < Scene_MenuBase alias survival_menu_start start def start create_survival_window survival_menu_start end # def start def create_survival_window barcount = 0 if $survival_s[1] == true barcount += 1 if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL end # if $survival_s[1] == true if $survival_s[2] == true barcount += 1 if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL end # if $survival_s[2] == true if $survival_s[3] == true barcount += 1 if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL end # if $survival_s[3] == true if $survival_s[4] == true barcount += 1 if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL end # if $survival_s[4] == true if $survival_s[5] == true barcount += 1 if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL end # if $survival_s[5] == true @survival_window = Window_Survival.new @survival_window.contents.draw_text(0, 0, 500, 24, " Survival System") if barcount == 0 barcount -= 1 if barcount >= 1 survivalwinypos = Anyx::WINYPOS - (24 * barcount) @survival_window.x = Anyx::WINXPOS @survival_window.y = survivalwinypos @survival_window.opacity = Anyx::WINOPACITY end # def create_survival_window end # class Scene_Menu < Scene_MenuBase class Window_Survival < Window_Base def initialize winheight = 0 if $survival_s[1] == true winheight += 1 if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL end # if $survival_s[1] == true if $survival_s[2] == true winheight += 1 if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL end # if $survival_s[2] == true if $survival_s[3] == true winheight += 1 if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL end # if $survival_s[3] == true if $survival_s[4] == true winheight += 1 if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL end # if $survival_s[4] == true if $survival_s[5] == true winheight += 1 if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL end # if $survival_s[5] == true if winheight == 0 winheight = 1 end # if winheight == 0 super(0, 0, Anyx::WINWIDTH, fitting_height(winheight)) self.opacity = Anyx::WINOPACITY refresh end # def initialize def exc_color text_color(Anyx::EXCCOLOR) end # def exc_color def sat_color text_color(Anyx::SATCOLOR) end # def sat_color def ave_color text_color(Anyx::AVECOLOR) end # def ave_color def low_color text_color(Anyx::LOWCOLOR) end # def low_color def dan_color text_color(Anyx::DANCOLOR) end # def dan_color def dep_color text_color(Anyx::DEPCOLOR) end # def dep_color def refresh contents.clear contents.font.size = Anyx::WINTEXT lineheight = 0 if $survival_s[1] == true if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL draw_life(0,0,lineheight) lineheight += 24 end # if $survival_s[6] == false || $survival_v[1] < Anyx::LIFEHIDEVAL end # if $survival_s[1] == true if $survival_s[2] == true if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL draw_food(0,0,lineheight) lineheight += 24 end # if $survival_s[7] == false || $survival_v[2] < Anyx::FOODHIDEVAL end # if $survival_s[2] == true if $survival_s[3] == true if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL draw_water(0,0,lineheight) lineheight += 24 end # if $survival_s[8] == false || $survival_v[3] < Anyx::WATERHIDEVAL end # if $survival_s[3] == true if $survival_s[4] == true if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL draw_rest(0,0,lineheight) lineheight += 24 end # if $survival_s[9] == false || $survival_v[4] < Anyx::RESTHIDEVAL end # if $survival_s[4] == true if $survival_s[5] == true if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL draw_toxin(0,0,lineheight) lineheight += 24 end # if $survival_s[10] == false || $survival_v[5] > Anyx::TOXINHIDEVAL end # if $survival_s[5] == true end # def refresh def draw_life(actor, x, y, width = Anyx::WINWIDTH - 22) life_25 = Anyx::LIFEMAX / 4 life_26 = life_25 + 0.001 life_50 = life_25 * 2 life_51 = life_50 + 0.001 life_75 = life_25 * 3 life_76 = life_75 + 0.001 life_99 = Anyx::LIFEMAX - 0.001 life_color = dep_color if 1 > $survival_v[1] life_color = dan_color if (1..life_25) === $survival_v[1] life_color = low_color if (life_26..life_50) === $survival_v[1] life_color = ave_color if (life_51..life_75) === $survival_v[1] life_color = sat_color if (life_76..life_99) === $survival_v[1] life_color = exc_color if Anyx::LIFEMAX <= $survival_v[1] life_rate = $survival_v[1] / Anyx::LIFEMAX.to_f draw_gauge(x, y, width, life_rate, text_color(Anyx::LIFECOLORL), text_color(Anyx::LIFECOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::LIFEVOCAB) draw_current_and_max_values(x, y, width, $survival_v[1].round.to_i, Anyx::LIFEMAX, life_color, life_color) end # def draw_life(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_food(actor, x, y, width = Anyx::WINWIDTH - 22) food_25 = Anyx::FOODMAX / 4 food_26 = food_25 + 0.001 food_50 = food_25 * 2 food_51 = food_50 + 0.001 food_75 = food_25 * 3 food_76 = food_75 + 0.001 food_99 = Anyx::FOODMAX - 0.001 food_color = dep_color if 1 > $survival_v[2] food_color = dan_color if (1..food_25) === $survival_v[2] food_color = low_color if (food_26..food_50) === $survival_v[2] food_color = ave_color if (food_51..food_75) === $survival_v[2] food_color = sat_color if (food_76..food_99) === $survival_v[2] food_color = exc_color if Anyx::FOODMAX <= $survival_v[2] food_rate = $survival_v[2] / Anyx::FOODMAX.to_f draw_gauge(x, y, width, food_rate, text_color(Anyx::FOODCOLORL), text_color(Anyx::FOODCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::FOODVOCAB) draw_current_and_max_values(x, y, width, $survival_v[2].round.to_i, Anyx::FOODMAX, food_color, food_color) end # def draw_food(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_water(actor, x, y, width = Anyx::WINWIDTH - 22) water_25 = Anyx::WATERMAX / 4 water_26 = water_25 + 0.001 water_50 = water_25 * 2 water_51 = water_50 + 0.001 water_75 = water_25 * 3 water_76 = water_75 + 0.001 water_99 = Anyx::WATERMAX - 0.001 water_color = dep_color if 1 > $survival_v[3] water_color = dan_color if (1..water_25) === $survival_v[3] water_color = low_color if (water_26..water_50) === $survival_v[3] water_color = ave_color if (water_51..water_75) === $survival_v[3] water_color = sat_color if (water_76..water_99) === $survival_v[3] water_color = exc_color if Anyx::WATERMAX <= $survival_v[3] water_rate = $survival_v[3] / Anyx::WATERMAX.to_f draw_gauge(x, y, width, water_rate, text_color(Anyx::WATERCOLORL), text_color(Anyx::WATERCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::WATERVOCAB) draw_current_and_max_values(x, y, width, $survival_v[3].round.to_i, Anyx::WATERMAX, water_color, water_color) end # def draw_water(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_rest(actor, x, y, width = Anyx::WINWIDTH - 22) rest_25 = Anyx::WATERMAX / 4 rest_26 = rest_25 + 0.001 rest_50 = rest_25 * 2 rest_51 = rest_50 + 0.001 rest_75 = rest_25 * 3 rest_76 = rest_75 + 0.001 rest_99 = Anyx::RESTMAX - 0.001 rest_color = dep_color if 1 > $survival_v[4] rest_color = dan_color if (1..rest_25) === $survival_v[4] rest_color = low_color if (rest_26..rest_50) === $survival_v[4] rest_color = ave_color if (rest_51..rest_75) === $survival_v[4] rest_color = sat_color if (rest_76..rest_99) === $survival_v[4] rest_color = exc_color if Anyx::RESTMAX <= $survival_v[4] rest_rate = $survival_v[4] / Anyx::RESTMAX.to_f draw_gauge(x, y, width, rest_rate, text_color(Anyx::RESTCOLORL), text_color(Anyx::RESTCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::RESTVOCAB) draw_current_and_max_values(x, y, width, $survival_v[4].round.to_i, Anyx::RESTMAX, rest_color, rest_color) end # def draw_rest(actor, x, y, width = Anyx::WINWIDTH - 22) def draw_toxin(actor, x, y, width = Anyx::WINWIDTH - 22) toxin_25 = Anyx::TOXINMAX / 4 toxin_26 = toxin_25 + 0.001 toxin_50 = toxin_25 * 2 toxin_51 = toxin_50 + 0.001 toxin_75 = toxin_25 * 3 toxin_76 = toxin_75 + 0.001 toxin_99 = Anyx::TOXINMAX - 0.001 toxin_color = exc_color if 1 > $survival_v[5] toxin_color = sat_color if (1..toxin_25) === $survival_v[5] toxin_color = ave_color if (toxin_26..toxin_50) === $survival_v[5] toxin_color = low_color if (toxin_51..toxin_75) === $survival_v[5] toxin_color = dan_color if (toxin_76..toxin_99) === $survival_v[5] toxin_color = dep_color if Anyx::TOXINMAX <= $survival_v[5] toxin_rate = $survival_v[5] / Anyx::TOXINMAX.to_f draw_gauge(x, y, width, toxin_rate, text_color(Anyx::TOXINCOLORL), text_color(Anyx::TOXINCOLORR)) change_color(system_color) draw_text(x, y, 100, line_height, Anyx::TOXINVOCAB) draw_current_and_max_values(x, y, width, $survival_v[5].round.to_i, Anyx::TOXINMAX, toxin_color, toxin_color) end # def draw_toxin(actor, x, y, width = Anyx::WINWIDTH - 22) end # class module DataManager def self.make_save_contents contents = {} contents[:system] = $game_system contents[:timer] = $game_timer contents[:message] = $game_message contents[:switches] = $game_switches contents[:variables] = $game_variables contents[:self_switches] = $game_self_switches contents[:actors] = $game_actors contents[:party] = $game_party contents[:troop] = $game_troop contents[:map] = $game_map contents[:player] = $game_player contents[:anyx_ss] = $survival_s contents[:anyx_sv] = $survival_v contents end # self.make_save_contents def self.extract_save_contents(contents) $game_system = contents[:system] $game_timer = contents[:timer] $game_message = contents[:message] $game_switches = contents[:switches] $game_variables = contents[:variables] $game_self_switches = contents[:self_switches] $game_actors = contents[:actors] $game_party = contents[:party] $game_troop = contents[:troop] $game_map = contents[:map] $game_player = contents[:player] $survival_s = contents[:anyx_ss] $survival_v = contents[:anyx_sv] end # self.extract_save_contents(contents) end # module DataManager  
    • By Tentauren_
      Tentauren

      presenta

      La storia del manichino che per sbaglio conobbe la vita v. 3.0


      1. Introduzione
      Forse qualcuno di voi si ricorderà delle varie iterazioni di questo progetto, che da un decennio emerge e riaffonda nelle pieghe delle mie fantasie pre-sonno. Il manichino è stato tante cose: una sfida, con una demo non giocabile nel 2011 fatta con RPGMaker 2003 in un solo pomeriggio (potete trovare il topic qui, ma il link di download è sicuramente rotto); un omaggio a Planescape in un periodo di ossessione fortissima, con la stessa storia, ma ambientata a Sigil, brevissima demo giocabile e grafica rippata dai capolavori dell'Infinity Engine (qui; per qualche giorno è stato un romanzo fantasy (se siete interessati posto la bozza del primo capitolo, è decisamente sporco ma ne vado particolarmente fiero), poi è ricaduto nell'oblio appesantito da una lore molto più espansa e un mucchio di idee lasciate a metà. Da un mesetto è ritornato a tormentarmi, in una veste tutta nuova. Probabilmente la colpa è da imputare a Jimmy and the Pulsating Mass, un gioco fatto con l'engine basico di MV e nonostante questo venduto a prezzo profumato su Steam, una perla che punta sull'atmosfera e sulla narrazione più che su feature mirabolanti e vale (quasi) la spesa. 

      2. Storia *
      La storia, ad oggi, è più o meno la stessa di sempre, ma in un universo più ampio.
      La Scala è un multiverso privo di limiti conosciuti, che si espande verso l'alto e verso il basso in infiniti Gradini di infinita diversità. Le teorie sulla sua origine, la sua natura e le sue motivazioni sono, come è tipico di ogni cosmologia, tante, disparate e in violento conflitto: c'è chi afferma che i Gradini siano disposti secondo un ordine di merito, e chi li considera le vertebre della schiena di un dio-mostro cosmico. Nessuna è più vera delle altre, ma qualcosa su cui tutti -o quasi- concordano è che la forma di energia più potente della Scala è la Vita: essa si espande e si srotola in ogni immensità e in ogni anfratto, mette radici e vince anche dove le sarebbe impossibile. Non c'è un angolo della Scala che non sia sotto il dominio della Vita, che muta se stessa per esprimersi nei più disparati fenomeni: da qualche parte, non troppo distante da dove ci troviamo, un Gradino appena nato vede macchine terraformanti spegnersi definitivamente, per lasciare spazio al futuro; nella direzione opposta quello che su quel Gradino verrebbe definito un uomo accende per la prima volta la sua piccola creatura di intelligenza artificiale. La Vita continua, inesorabile, a trovare nuove forme. 

      Su un Gradino intermedio, di non troppa importanza, Azith Presbe, stregone proprietario del Magiemporio Presbe nella città di Urth, ha appena ricevuto una consegna speciale: una rarissima Pozione della Vita. Ma Yoke, il maldestro commesso, nel portarla al sicuro nei magazzini del negozio, la rompe addosso a un manichino da esposizione. Per sfuggire alle grinfie del vendicativo stregone, i due dovranno attraversare gli intricati cunicoli dei magazzini nella speranza di trovare un'altra uscita o, quantomeno, di prepararsi all'inevitabile scontro. È una storia piccola ambientata in piccoli spazi rispetto all'immensità della Scala, ma il magazzino di uno stregone archetipico può contenere i frammenti dei mondi più distanti, come una planimetria dell'intero cosmo. Quello che Yoke e il Manichino incontreranno cambierà per sempre le loro vite e, forse, quelle di molti altri.


      3. Personaggi

      Manichino



      Ehi capo, non mi manca qualche frame?
      Oh sì, te ne mancano una marea.

      Ex manichino per armature da esposizione, polveroso e abbandonato al primo piano dei sotterranei del Magiemporio Presbe. Dopo essere stato imbrattato dalla Pozione della Vita si ritrova, confuso e un po' infastidito, con una coscienza; ma non ha alcuna intenzione di lasciarsela togliere: seguirà Yoke per gli intricati cunicoli dei magazzini, per sfuggire alle grinfie di Azith.
      E' scanzonato e ribelle, un Pinocchio senza naso. 
      Il manichino è di legno, di altezza e misure standard (esattamente per essere abbigliato con armature da esposizione). Ha vaghi tratti facciali, solo abbozzati. All'inizio del gioco è nudo (per questo è in magazzino) e, cosa molto importante, non ha le dita delle mani definite.

      Yoke 

       
      Mago scadente, poco ambizioso, svogliato. Lavora come commesso al Magiemporio Presbe semplicemente perché non ha più aspettative e, se le ha mai avute, le ha messe da parte da tempo. Come ciliegina sulla torta, l'ha fatta veramente grossa: ha rotto una fiala di importanza prioritaria e adesso la sua unica possibilità è scappare, sperando che la via per i magazzini sia più sicura di quella per l'ingresso principale. Ha una fidanzata ma le cose non vanno benissimo. E' appassionato di insetti, parla l'insettese comune (che nerd) e ne porta sempre tre con sè: Zig, una Mosca Angelica (Musca domestica, ma con ali d'angelo e l'abilità di sdoppiarsi virtualmente all'infinito), Zag, una Zanzara Behemoth (uguale a una zanzara normale ma leggermente più grossa, più o meno quanto un polpastrello) e... Roll, un insetto metafisico senza un aspetto preciso e dalle intenzioni incomprensibili.
      Yoke è alto e magrissimo, ha i capelli rossi e la pelle leggermente scura (ma non troppo). Indossa la Divisa da Commesso del Magiemporio Presbe: una tuta da mago standard (grigia), coi pantaloni rigonfi verso il basso (che lasciano le caviglie scoperte) e un colletto che arriva fino al naso, aperto a v nel centro e, davanti, un grembiule verde coi bordi delle tasche gialle. Indossa un cappello da mago dello stesso colore della tuta. Ha una cintura con la fondina per il Catalizzatore e tre confezioni di mangime per insetti: uno contiene feci di ratto, un altro sangue di mucca e il terzo è completamente vuoto.

      Azith 
      "Io sono Azith Presbe, Stregone Anziano del Circolo dei Vedenti. Sono Azith Presbe, Colui che Parla coi Morti. Tessitore di Astri. Ponte-Tra-Le-Potenze. Drago Onorario. Mago Archetipico su duecento livelli. Sovrano di venti di essi. ". Insomma, Azith è uno a cui piace tanto parlare di sè. Non del tutto a torto: è effettivamente potente come dice di essere e, per via della sua ambizione, continua a diventarlo sempre di più. A Urth, sul suo piano di base, ha aperto una catena di negozi di magia, i Magiempori Presbe, i più richiesti del livello. Ha fatto un acquisto importante da un'entità importante, destinato a un'entità ancora più importante: l'unica fiala di Pozione della Vita, un oggetto di estrema rarità, probabilmente illegale se solo si sapesse della sua esistenza in giro. La sfortuna e qualche errore di calcolo l'hanno portato ad affidarlo al più inetto dei suoi dipendenti, Yoke. 
      Azith è esperto in un'ampia varietà di stili di magia, ma predilige tutto ciò che ha a che fare con gli occhi. Una delle sue tecniche-firma ha a che fare con l'espansione della vista attraverso la fuoriuscita dei bulbi oculari dalle orbite (su due antenne di vene), che gli consente tra le altre cose di vedere ciò che normalmente non è fatto per essere visto. 
      Azith è un uomo dall'altezza imponenete, ben nutrito ma non grasso. Ha capelli bianchi e, ovviamente, una barba lunga fino al petto, ma ben curata. 

      Thshtths
      Un Coverto, un membro di una razza di inferiori (o, più semplicemente demoni) abitanti di un livello detto il Buio Guardaroba. Quando si muovono, hanno l'aspetto di un uomo completamente coperto da un mantello nero. Pochi sanno che non c'è niente sotto al mantello. Hanno la capacità di dominare lo spazio, ma non è chiaro se si tratti di una potente capacità di illusione o di un effettivo controllo. Non hanno corde vocali, di conseguenza non sono in grado di parlare in una lingua diversa dalla loro, composta esclusivamente di sussuri, fruscii e singulti. Quando sono costretti a comunicare con esterni, i Coverti utilizzano bastoni su cui infilano tessere di legno con sopra impresse le lettere dell'alfabeto in questione. I Coverti sono stati di recente sottomessi dall'entità che ha venduto la Pozione della Vita ad Azith e Thshtths è stato incaricato di consegnargliela. Thshtths era un tempo un rivoltoso, ma è stato schiacciato come tutti i suoi fratelli.

      La Poltrona Rosa
      E' semplicemente una grossa poltrona con la tappezzeria rosa e le gambe di legno. Dai cuscini vengono fuori grosse zanne e una lingua eccessivamente lunga. Azith deve averla comprata su qualche livello inferiore o forse l'ha costruita lui stessa imprigionandoci uno spirito. La usa come segugio per i piani più alti del magazzino.
       
       
       
      4. Disegni/Fan Art
      (purtroppo per il momento ho soltanto i concept mostrati più in alto, quindi qui aggiungerò qualche disegno preparatorio; aggiornerò il topic abbastanza di frequente)

      5. Caratteristiche Tecniche/Gameplay *
      Purtroppo non ho grandi capacità di programmazione, quindi il BS sarà standard (laterale se riesco a recuperare qualche script), ma cercherò di renderlo interessante attraverso qualche piccolo accorgimento. Il Manichino, per esempio, combatterà per la prima parte del gioco interamente a mani nude, fino a quando non si sarà sbloccata la possibilità di intagliarlo e modificarlo per fargli tenere in mano un'arma. Il sistema di summon avrà una particolarità dovuta alla lore: non essendoci, sulla Scala, un piano che sia "più materiale" degli altri
      Se dovessi immaginare un sistema di combattimento custom, se un giorno qualcuno con capacità di programmazione avanzata decidesse di darmi una mano, manterrebbe le stesse features ma con il sistema della 3.5 di Dungeons &amp; Dragons (o una sua versione ridotta). Il mio ideale è il BS del Tempio del Male Elementale: so che è veramente troppo, ma sognare non è illegale.
      La grafica del gioco sarà interamente da 0. In origine, proprio per questo, pensavo di lavorare su 2000 o 2003. Poi però mi è capitato sotto mano il bellissimo CrownTrick e ho sognato un mondo in alta risoluzione. La mia pixel art è ancora di livello basso, quindi proprio per questo motivo ci metterò un po' di tempo in più, ma devo dire che i risultati mi rendono abbastanza fiero di me nonostante ci sia ancora molto da migliorare. 

      6. Screenshot * 
      N\A


      7. Demo/Link alla versione giocabile * 
      N\A


      8. Crediti Vari *
      Ringrazio Daniele Giampaolo per il character design dei personaggi principali (vedrete gli altri a breve). E qui colgo l'occasione per parlare del perché di questo topic: il mio gioco è un sogno e questo thread è una promessa. Ho approcciato in passato questo progetto nelle maniere più sbagliate, pretendendo tanto da me in poco tempo e finendo per pretendere dagli altri. Questa volta non avrò scadenze: non voglio fare in fretta, preferisco fare bene. Ho però una schedule, una demo di un paio di ore al massimo con due bossfight principali e una opzionale, che arrivi a un 10% della trama complessiva. Questo è quanto intendo fare per adesso, per testare le mie capacità e capire quanto in là posso spingermi. Qualsiasi aiuto, sia come partecipazione attiva al progetto (in qualsiasi ruolo: per quanto mi stia occupando io della grafica un altro paio di mani mi farebbero comodo) che come consiglio, critica, correzione, distruzione totale è più che ben accetto. Proprio per questo spero di mantenere attivo e in continuo aggiornamento questo topic e, soprattutto, spero che vi partecipiate in molti, anche solo come osservatori. 
    • By Folround
      Folround Corporation
      presenta
      Fantasmi da Marte (Demo)
      Titolo: Fantasmi da Marte (Demo)
       
      Versione: 0.4
       
      Genere: Horror/Fantascientifico
       
      Tool di sviluppo: RPG Maker 2000
       
      Data di uscita versione completa: Tra Marzo e Aprile 2020
       
      Introduzione: Fantasmi da Marte è un gioco sparatutto dall'alto ispirato all'omonimo film del 2001 "Ghosts of Mars". La storia è ripresa dal film con qualche piccola variazione.
       
      Storia: Anno 2176. Il pianeta Marte è stato quasi totalmente terraformato, permettendo agli umani di camminare sulla superficie senza dover indossare tute pressurizzate. L'agente di polizia Melanie Ballard è il comandante in seconda di una piccola squadra inviata per recuperare e trasportare un prigioniero chiamato Desolation Williams. Giunta alla vecchia miniera dove Williams viene tenuto, Ballard scopre che gli abitanti sono quasi tutti scomparsi, eccezion fatta per alcuni cadaveri senza testa e i detenuti. Investigando, scopre che gli occupanti di un'altra miniera avevano trovato una porta sotterranea che era stata creata da un'antica civiltà marziana. Quando la porta è stata aperta hanno fatto uscire degli spettri, spiriti rimasti per anni sottoterra e risvegliati dai minatori, i quali vengono impossessati da queste presenze e iniziano a dare la caccia agli invasori umani di Marte per ucciderli.
       
      Personaggi:
      Melanie Ballard: è un agente di polizia ed è il personaggio giocante del gioco, immune dalla possessione degli spettri. Il suo scopo principale è di prelevare i pochi sopravvissuti e di fuggire da Marte.
      Desolation Williams: è un criminale detenuto nella zona mineraria. Aiuterà Melanie a fuggire una volta liberato.
       
       
      Gameplay: Il gameplay è quello di uno sparatutto dall'alto in tempo reale. Avrete a disposizione due armi diverse durante il corso della demo, ed è possibile portare un'arma per volta.  L'arma con cui inizierete è una pistola con 15 colpi del caricatore, dovrete premere Invio per sparare ed Esc per ricaricare l'arma. I nemici sono umani impossessati dagli spettri che si muovono lentamente ma hanno molti hp e procurano abbastanza danni, oppure esseri mutanti come cani idrofobi, uomini-ragno o agglomerati di vari esseri.
       
      Credits: "Red Fox" , "DHD"  e "Dragon Editor" per vari charsets fantascientifici presi da charas-project.net
       
      Screenshots: in allegato 5 screenshots del gioco
       
      Demo: download
       
       
       





×