Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #===============================================================================
- #
- # Shanghai Simple Script - Friendly Monsters
- # Last Date Updated: 2010.06.17
- # Level: Normal
- #
- # This script sets certain monsters to be designated as friendly monsters. These
- # monsters will attack other monsters while those monsters will attack them in
- # return (almost always so long as they're alive). If the friendly monsters are
- # alive when all other monsters are killed, the player gets extra rewards.
- #===============================================================================
- # Instructions
- # -----------------------------------------------------------------------------
- # To install this script, open up your script editor and copy/paste this script
- # to an open slot below ▼ Materials but above ▼ Main. Remember to save.
- #
- # <friendly>
- # Place this tag into the enemy's notebox to designate that monster type as a
- # friendly monster.
- #
- # <friendly exp: x>
- # Place this tag into the enemy's notebox. If the enemy is left alive when the
- # battle ends, you gain this much exp from this enemy.
- #
- # <friendly gold: x>
- # Place this tag into the enemy's notebox. If the enemy is left alive when the
- # battle ends, you gain this much gold from this enemy.
- #
- # <friendly i: x>
- # <friendly w: x>
- # <friendly a: x>
- # Place this tag into the enemy's notebox. If the enemy is left alive when the
- # battle ends, you gain this item from this enemy. Place multiple if needed.
- # Use "i" for item. Use "w" for weapon. Use "a" for armor.
- #===============================================================================
- $imported = {} if $imported == nil
- $imported["FriendlyMonsters"] = true
- #==============================================================================
- # RPG::Enemy
- #==============================================================================
- class RPG::Enemy
- #--------------------------------------------------------------------------
- # * Friendly Monster
- #--------------------------------------------------------------------------
- def friendly_monster
- return @friendly_monster if @friendly_monster != nil
- @friendly_monster = false
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:FRIENDLY|friendly monster)>/i
- @friendly_monster = true
- end
- }
- return @friendly_monster
- end
- #--------------------------------------------------------------------------
- # * Friendly EXP
- #--------------------------------------------------------------------------
- def friendly_exp
- return @friendly_exp if @friendly_exp != nil
- @friendly_exp = @exp * 2
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:FRIENDLY_EXP|friendly exp):[ ](\d+)>/i
- @friendly_exp = $1.to_i
- end
- }
- return @friendly_exp
- end
- #--------------------------------------------------------------------------
- # * Friendly Gold
- #--------------------------------------------------------------------------
- def friendly_gold
- return @friendly_gold if @friendly_gold != nil
- @friendly_gold = @gold * 2
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:FRIENDLY_GOLD|friendly gold):[ ](\d+)>/i
- @friendly_gold = $1.to_i
- end
- }
- return @friendly_gold
- end
- #--------------------------------------------------------------------------
- # * Friendly Drops
- #--------------------------------------------------------------------------
- def friendly_drops
- return @friendly_drops if @friendly_drops != nil
- @friendly_drops = []
- self.note.split(/[\r\n]+/).each { |line|
- case line
- when /<(?:FRIENDLY_ITEM|friendly item|friendly i):[ ]*(\d+)>/i
- @friendly_drops.push($data_items[$1.to_i])
- when /<(?:FRIENDLY_WEP|friendly wep|friendly w):[ ]*(\d+)>/i
- @friendly_drops.push($data_weapons[$1.to_i])
- when /<(?:FRIENDLY_ARM|friendly arm|friendly a):[ ]*(\d+)>/i
- @friendly_drops.push($data_armors[$1.to_i])
- end
- }
- return @friendly_drops.compact
- end
- end
- #==============================================================================
- # ** Game_Temp
- #==============================================================================
- class Game_Temp
- #--------------------------------------------------------------------------
- # * Public Instance Variables
- #--------------------------------------------------------------------------
- attr_accessor :friendly_monster
- end
- #==============================================================================
- # ** Game_Enemy
- #==============================================================================
- class Game_Enemy < Game_Battler
- #--------------------------------------------------------------------------
- # * states
- #--------------------------------------------------------------------------
- def friendly?
- return enemy.friendly_monster
- end
- #--------------------------------------------------------------------------
- # * Create Battle Action
- #--------------------------------------------------------------------------
- alias make_action_sss_friendly_monsters make_action unless $@
- def make_action
- $game_temp.friendly_monster = true
- make_action_sss_friendly_monsters
- $game_temp.friendly_monster = false
- end
- end
- #==============================================================================
- # ** Game_BattleAction
- #==============================================================================
- class Game_BattleAction
- #--------------------------------------------------------------------------
- # * Get Allied Units
- #--------------------------------------------------------------------------
- alias friends_unit_sss_friendly_monsters friends_unit unless $@
- def friends_unit
- if !battler.actor? and battler.friendly?
- return $game_party
- else
- return friends_unit_sss_friendly_monsters
- end
- end
- #--------------------------------------------------------------------------
- # * Get Enemy Units
- #--------------------------------------------------------------------------
- alias opponents_unit_sss_friendly_monsters opponents_unit unless $@
- def opponents_unit
- if !battler.actor? and battler.friendly?
- return $game_troop
- else
- return opponents_unit_sss_friendly_monsters
- end
- end
- #--------------------------------------------------------------------------
- # * Create Normal Attack Targets
- #--------------------------------------------------------------------------
- alias make_attack_targets_sss_friendly_monsters make_attack_targets unless $@
- def make_attack_targets
- $game_temp.friendly_monster = true if !battler.actor?
- result = make_attack_targets_sss_friendly_monsters
- $game_temp.friendly_monster = false
- return result
- end
- #--------------------------------------------------------------------------
- # * Create Normal Attack Targets
- #--------------------------------------------------------------------------
- alias make_obj_targets_sss_friendly_monsters make_obj_targets unless $@
- def make_obj_targets(obj)
- $game_temp.friendly_monster = true if !battler.actor?
- result = make_obj_targets_sss_friendly_monsters(obj)
- $game_temp.friendly_monster = false
- return result
- end
- end
- #==============================================================================
- # ** Game_Troop
- #==============================================================================
- class Game_Troop < Game_Unit
- #--------------------------------------------------------------------------
- # * Members
- #--------------------------------------------------------------------------
- alias members_troop_sss_friendly_monsters members unless $@
- def members
- result = members_troop_sss_friendly_monsters
- result -= $game_troop.friendlies if $game_temp.friendly_monster
- return result
- end
- #--------------------------------------------------------------------------
- # * Friendlies
- #--------------------------------------------------------------------------
- def friendlies
- result = []
- for member in members_troop_sss_friendly_monsters
- result.push(member) if member.friendly?
- end
- return result.compact
- end
- #--------------------------------------------------------------------------
- # * Friendlies Alive?
- #--------------------------------------------------------------------------
- def friendlies_alive?
- for member in friendlies
- return true unless member.dead?
- end
- return false
- end
- #--------------------------------------------------------------------------
- # * Determine Everyone is Dead
- #--------------------------------------------------------------------------
- def all_dead?
- n = existing_members
- n -= $game_troop.friendlies
- return n.empty?
- end
- #--------------------------------------------------------------------------
- # * Calculate Total Experience
- #--------------------------------------------------------------------------
- alias exp_total_sss_friendly_monsters exp_total unless $@
- def exp_total
- n = exp_total_sss_friendly_monsters
- for member in $game_troop.friendlies
- next if member.dead?
- n += member.enemy.friendly_exp
- end
- return n
- end
- #--------------------------------------------------------------------------
- # * Calculate Total Gold
- #--------------------------------------------------------------------------
- alias gold_total_sss_friendly_monsters gold_total unless $@
- def gold_total
- n = gold_total_sss_friendly_monsters
- for member in $game_troop.friendlies
- next if member.dead?
- n += member.enemy.friendly_exp
- end
- return n
- end
- #--------------------------------------------------------------------------
- # * Create Array of Dropped Items
- #--------------------------------------------------------------------------
- alias make_drop_items_sss_friendly_monsters make_drop_items unless $@
- def make_drop_items
- n = make_drop_items_sss_friendly_monsters
- for member in $game_troop.friendlies
- next if member.dead?
- n += member.enemy.friendly_drops
- end
- return n
- end
- end
- #==============================================================================
- # ** Game_Party
- #==============================================================================
- class Game_Party < Game_Unit
- #--------------------------------------------------------------------------
- # * Members
- #--------------------------------------------------------------------------
- alias members_party_sss_friendly_monsters members unless $@
- def members
- result = members_party_sss_friendly_monsters
- if $game_temp.friendly_monster and $game_troop.friendlies_alive?
- return $game_troop.friendlies
- end
- return result
- end
- end
- #===============================================================================
- #
- # END OF FILE
- #
- #===============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement