diff --git a/code/__HELPERS/globalaccess.dm b/code/__HELPERS/globalaccess.dm
index 9bc41a47fab..7cd7167d33b 100644
--- a/code/__HELPERS/globalaccess.dm
+++ b/code/__HELPERS/globalaccess.dm
@@ -941,8 +941,10 @@
return global.blob_resources;
if("blob_overminds")
return global.blob_overminds;
- if("blob_looks")
- return global.blob_looks;
+ if("blob_looks_player")
+ return global.blob_looks_player;
+ if("blob_looks_admin")
+ return global.blob_looks_admin;
if("possible_changeling_IDs")
return global.possible_changeling_IDs;
if("hivemind_bank")
@@ -2684,8 +2686,10 @@
global.blob_resources=newval;
if("blob_overminds")
global.blob_overminds=newval;
- if("blob_looks")
- global.blob_looks=newval;
+ if("blob_looks_player")
+ global.blob_looks_player=newval;
+ if("blob_looks_admin")
+ global.blob_looks_admin=newval;
if("possible_changeling_IDs")
global.possible_changeling_IDs=newval;
if("hivemind_bank")
@@ -3485,4 +3489,4 @@
if("sc_safecode5")
global.sc_safecode5=newval;
-/var/list/_all_globals=list("map","masterdatumPool","pooledvariables","prox_sensor_ignored_types","ability_verbs","sent_aliens_to_station","account_hack_attempted","spacevines_spawned","sent_spiders_to_station","lighting_update_lights","lighting_update_corners","lighting_update_overlays","exclude","asset_cache","error_last_seen","error_cooldown","html_interfaces","all_lighting_corners","LIGHTING_CORNER_DIAGONAL","all_lighting_overlays","cargo_telepads","chatResources","bicon_cache","dview_mob","tick_start","meteor_wave_delay","meteors_in_wave","meteor_wave_active","max_meteor_size","chosen_dir","create_mob_html","create_object_html","create_turf_html","any","asset_cache_populated","total_runtimes","total_runtimes_skipped","error_cache","security_level","iconCache","round_end_info","deadmins","lockedvars","type_instances","data_core","plmaster","slmaster","account_DBs","global_map","universe","paper_tag_whitelist","paper_blacklist","BLINDBLOCK","DEAFBLOCK","HULKBLOCK","TELEBLOCK","FIREBLOCK","XRAYBLOCK","CLUMSYBLOCK","FAKEBLOCK","COUGHBLOCK","GLASSESBLOCK","EPILEPSYBLOCK","TWITCHBLOCK","NERVOUSBLOCK","MONKEYBLOCK","BLOCKADD","DIFFMUT","HEADACHEBLOCK","NOBREATHBLOCK","REMOTEVIEWBLOCK","REGENERATEBLOCK","INCREASERUNBLOCK","REMOTETALKBLOCK","MORPHBLOCK","COLDBLOCK","HALLUCINATIONBLOCK","NOPRINTSBLOCK","SHOCKIMMUNITYBLOCK","SMALLSIZEBLOCK","LISPBLOCK","MUTEBLOCK","RADBLOCK","FATBLOCK","CHAVBLOCK","SWEDEBLOCK","SCRAMBLEBLOCK","TOXICFARTBLOCK","STRONGBLOCK","HORNSBLOCK","SMILEBLOCK","ELVISBLOCK","SOBERBLOCK","PSYRESISTBLOCK","FARSIGHTBLOCK","CHAMELEONBLOCK","CRYOBLOCK","EATBLOCK","JUMPBLOCK","MELTBLOCK","EMPATHBLOCK","SUPERFARTBLOCK","IMMOLATEBLOCK","POLYMORPHBLOCK","LOUDBLOCK","WHISPERBLOCK","DIZZYBLOCK","SANSBLOCK","NOIRBLOCK","skipupdate","eventchance","event","hadevent","blobevent","starticon","midicon","endicon","diary","diaryofmeanpeople","admin_diary","href_logfile","station_name","game_version","changelog_hash","game_year","going","master_mode","secret_force_mode","host","aliens_allowed","ooc_allowed","dooc_allowed","traitor_scaling","dna_ident","abandon_allowed","enter_allowed","guests_allowed","shuttle_frozen","shuttle_left","tinted_weldhelh","jobMax","bombers","admin_log","lastsignalers","lawchanges","shuttles","reg_dna","CELLRATE","CHARGELEVEL","WORLD_X_OFFSET","WORLD_Y_OFFSET","shuttle_z","airtunnel_start","airtunnel_stop","airtunnel_bottom","monkeystart","wizardstart","newplayer_start","latejoin","assistant_latejoin","prisonwarp","holdingfacility","xeno_spawn","endgame_safespawns","endgame_exits","tdome1","tdome2","tdomeobserve","tdomeadmin","prisonsecuritywarp","prisonwarped","blobstart","ninjastart","cardinal","diagonal","alldirs","universal_cult_chat","start_state","config","combatlog","IClog","OOClog","adminlog","suspend_alert","Debug","Debug2","debugobj","mods","wavesecret","gravity_is_on","shuttlecoming","join_motd","forceblob","polarstar","nanomanager","sqladdress","sqlport","sqldb","sqllogin","sqlpass","sqlfdbkdb","sqlfdbklogin","sqlfdbkpass","sqllogging","forumsqladdress","forumsqlport","forumsqldb","forumsqllogin","forumsqlpass","forum_activated_group","forum_authenticated_group","fileaccess_timer","custom_event_msg","dbcon","dbcon_old","recall_time_limit","score","trash_items","decals","on_login","on_ban","on_unban","plugins","space_gas","announcement_intercom","sortedAreas","bomberman_mode","bomberman_hurt","bomberman_destroy","volunteer_gladiators","ready_gladiators","never_gladiators","achievements","end_icons","arena_leaderboard","arena_rounds","arena_top_score","endgame_info_logged","explosion_newmethod","snake_station_highscores","snake_best_players","minesweeper_station_highscores","minesweeper_best_players","nanocoins_rates","nanocoins_lastchange","speciesinit","minimapinit","stat_collection","hardcore_mode","mineral_turfs","static_list","grayscale","adminblob_icon","adminblob_size","adminblob_beat","parallax_initialized","space_color","parallax_icon","ai_names","wizard_first","wizard_second","ninja_titles","ninja_names","commando_names","first_names_male","first_names_female","last_names","clown_names","verbs","adjectives","vox_name_syllables","golem_names","borer_names","disable_scrubbers","disable_vents","Space_Tile","MAX_EXPLOSION_RANGE","BODY_PARTS","BODY_COVER_VALUE_LIST","NOIRMATRIX","bad_changing_colour_ckeys","global_mutations","scarySounds","tachycardics","bradycardics","heartstopper","cheartstopper","RESTRICTED_CAMERA_NETWORKS","default_colour_matrix","panicfile","failed_db_connections","failed_old_db_connections","cmp_field","DummyCache","genders","clients","admins","directory","mixed_modes","player_list","mob_list","living_mob_list","dead_mob_list","observers","areas","turfs","chemical_reactions_list","chemical_reagents_list","landmarks_list","surgery_steps","mechas_list","poster_designs","underwear_m","underwear_f","backbaglist","hit_appends","table_recipes","med_hud_users","sec_hud_users","escape_list","church_name","command_name","religion_name","syndicate_name","syndicate_code_phrase","syndicate_code_response","watt_suffixes","number_digits","number_tens","number_units","existing_typesof_cache","common_tools","WALLITEMS","sortInstance","hooks","ventcrawl_machinery","catcher","parallax_on_clients","unstackable_pipes","bent_dirs","pipeID2State","nlist","straight_pipes","bent_pipes","manifold_pipes","heat_pipes","failsafe","garbageCollector","soft_dels","master_controller","last_tick_duration","air_processing_killed","pipe_processing_killed","machine_profiling","emergency_shuttle","active_diseases","events","fast_machines","html_machines","machines","object_profiling","processing_objects","pipe_networks","atmos_machines","on_pipenet_tick","power_machinery_profiling","power_machines","powernets","cable_list","tickerProcess","__btime__lastTimeOfHour","__btime__callCount","__btime__lastTick","processScheduler","randomize_laws","base_law_type","mommi_base_law_type","diseases","map_elements","modules","sun","all_supply_groups","uplink_items","archive_diseases","advance_cures","list_symptoms","dictionary_symptoms","animal_butchering_products","revdata","same_wires","wireColours","PDA_Manifest","vox_sounds","vox_wordlen","outbreak_level_words","spawned_surprises","max_secret_rooms","del_profiling","gdel_profiling","ghdel_profiling","current_centcomm_order_id","all_radios","radiochannels","radiochannelsreverse","CENT_FREQS","radio_controller","pointers","response_team_members","send_emergency_team","ert_base_chance","can_call_ert","nextDecTalkDelay","lastDecTalkUse","freqtospan","freqtoname","ghostimg","resethearers","smoothable_unsims","socket_talk","shatter_sound","explosion_sound","small_explosion_sound","spark_sound","rustle_sound","punch_sound","clown_sound","swing_hit_sound","hiss_sound","page_sound","mechstep_sound","gib_sound","mommicomment_sound","polaroid_sound","male_scream_sound","female_scream_sound","male_cough_sound","female_cough_sound","lightning_sound","soulstone_sound","supply_shuttle","mechtoys","ignored_keys","moved_landmarks","transparent_icons","teleportlocs","ghostteleportlocs","adminbusteleportlocs","centcom_areas","the_station_areas","dna_activity_bounds","assigned_gene_blocks","assigned_blocks","dna_genes","good_blocks","bad_blocks","skin_styles_female_list","hair_styles_list","hair_styles_male_list","hair_styles_female_list","facial_hair_styles_list","facial_hair_styles_male_list","facial_hair_styles_female_list","noir_master","ticker","potential_theft_objectives","blobs","blob_cores","blob_nodes","blob_resources","blob_overminds","blob_looks","possible_changeling_IDs","hivemind_bank","powers","powerinstances","narsie_behaviour","narsie_cometh","narsie_list","mr_clean_targets","cultwords","runedec","engwords","rnwords","rune_list","snow_recipes","Holiday","blob_candidates","mixed_allowed","bomb_set","hsboxspawn","hrefs","banned_sandbox_types","all_jobs","job_master","assistant_occupations","command_positions","engineering_positions","medical_positions","science_positions","civilian_positions","cargo_positions","security_positions","nonhuman_positions","misc_positions","whitelist","alien_whitelist","firealarms","cryo_health_indicator","doppler_arrays","flashers","holosigns","igniters","multitool_var_whitelist","mass_drivers","news_network","allCasters","req_console_assistance","req_console_supplies","req_console_information","allConsoles","status_displays","ai_emotions","status_display_images","num_vending_terminals","floorbot_targets","mulebot_count","camera_names","tv_monitors","shuttle_calls","prison_shuttle_moving_to_station","prison_shuttle_moving_to_prison","prison_shuttle_at_station","prison_shuttle_can_send","prison_shuttle_time","prison_shuttle_timeleft","specops_shuttle_moving_to_station","specops_shuttle_moving_to_centcom","specops_shuttle_at_station","specops_shuttle_can_send","specops_shuttle_time","specops_shuttle_timeleft","syndicate_elite_shuttle_moving_to_station","syndicate_elite_shuttle_moving_to_mothership","syndicate_elite_shuttle_at_station","syndicate_elite_shuttle_can_send","syndicate_elite_shuttle_time","syndicate_elite_shuttle_timeleft","taxi_computers","all_doors","alert_overlays_global","poddoors","recentmessages","message_delay","telecomms_list","word_to_uristrune_table","uristrune_cache","explosion_shake_message_cooldown","explosion_turfs","explosion_in_progress","blood_overlays","reagents_to_log","BUMP_TELEPORTERS","portal_cache","splatter_cache","blood_list","fluidtrack_cache","beacons","all_graffitis","deskbell_default_frequencies","deskbell_freq_cargo","deskbell_freq_hop","deskbell_freq_medbay","deskbell_freq_brig","deskbell_freq_rnd","camera_bugs","pda_app_menus","chatrooms","PDAs","available_paintings","cable_recipes","metal_recipes","plasteel_recipes","wood_recipes","cardboard_recipes","sandstone_recipes","diamond_recipes","uranium_recipes","plasma_recipes","plastic_recipes","gold_recipes","phazon_recipes","silver_recipes","clown_recipes","charcoal_recipes","lightfloor_colors","moneytypes","cached_icons","tracking_implants","bottle_colour_choices","hidden_doors","all_docking_ports","ladders","cargo_shuttle","escape_shuttle","mining_shuttle","arrival_shuttle","transport_shuttle","admin_shuttle","research_shuttle","salvage_shuttle","syndicate_shuttle","taxi_a","taxi_b","trade_shuttle","vox_shuttle","voxresearch_shuttle","icons_to_ignore_at_floor_init","plating_icons","wood_icons","w_overlays","_flatIcons","directional","exception","directional_turfs","BSACooldown","floorIsLava","admin_shuttle_location","alien_ship_location","investigations","admin_ranks","admin_verbs_default","admin_verbs_admin","admin_verbs_ban","admin_verbs_sounds","admin_verbs_fun","admin_verbs_spawn","admin_verbs_server","admin_verbs_debug","admin_verbs_possess","admin_verbs_permissions","admin_verbs_rejuv","admin_verbs_hideable","admin_verbs_mod","appearanceban_runonce","appearance_keylist","jobban_runonce","jobban_keylist","oocban_keylist","admin_datums","CMinutes","Banlist","Banlistjob","adminhelp_ignored_words","checked_for_inactives","inactive_keys","blood_virus_spreading_disabled","camera_range_display_status","intercom_range_display_status","prevent_airgroup_regroup","say_disabled","movement_disabled","movement_disabled_exception","forbidden_varedit_object_types","PROFILING_VERBS","sent_strike_team","sent_syndicate_strike_team","vox_tick","assembly_short_name_to_type","comparison_circuit_operations","math_circuit_operations_list","automation_types","gas_labels","existing_away_missions","awaydestinations","away_mission_subtypes","gateways","maploader","_preloader","swapmaps_iconcache","swapmaps_mode","swapmaps_compiled_maxx","swapmaps_compiled_maxy","swapmaps_compiled_maxz","swapmaps_initialized","swapmaps_loaded","swapmaps_byname","bombermangear","arenas","arena_spawnpoints","preferences_datums","special_roles","antag_roles","nonantag_roles","role_wiki","current_date_string","num_financial_terminals","num_financial_database","num_vending_machines","num_pda_terminals","num_merch_computers","station_account","department_accounts","next_account_number","centcomm_account_db","vendor_account","all_money_accounts","setup_economy","weighted_randomevent_locations","weighted_mundaneevent_locations","station_departments","current_pos_id","pos_sales","wages_enabled","roundstart_enable_wages","event_last_fired","allEvents","potentialRandomEvents","eventTimeLower","eventTimeUpper","scheduledEvent","vox_kills","vox_sent","raiders","thing_storm_types","watchdog","non_fakeattack_weapons","deepFriedEverything","deepFriedNutriment","foodNesting","recursiveFood","ingredientLimit","wizard_cards_rare","wizard_cards_normal","adv_camera","crewmonitor","vote","plant_controller","seed_types","gene_tag_masks","library_catalog","library_section_names","liquid_delay","puddles","global_playlists","loopModeNames","media_receivers","media_transmitters","migration_controller_mysql","migration_controller_sqlite","valid_abandoned_crate_types","material_list","initial_materials","name_to_mineral","mining_surprises","FUCK","slot_equipment_priority","intents","boo_phrases","boo_phrases_drugs","boo_phrases_silicon","virtualhearers","stationary_hearers","coldwarning_light","coldwarning_hard","department_radio_keys","language_keys","all_languages","all_species","whitelisted_species","unconscious_overlays","oxyloss_overlays","brutefireloss_overlays","organ_damage_overlays","damage_icon_parts","cover_protection_value_list","ai_list","announcing_vox","vox_digits","vox_tens","vox_units","cameranet","paiController","borer_chem_types_head","borer_chem_types_chest","borer_chem_types_arm","borer_chem_types_leg","borer_unlock_types_head","borer_unlock_types_chest","borer_unlock_types_arm","borer_unlock_types_leg","animal_count","nest_locations","crate_mimic_disguises","item_mimic_disguises","protected_objects","spider_types","photocollector_list","prism_list","mirror_list","paper_folding_results","paperwork","paperwork_library","battery_charge","battery_charging","battery_online","alllights","powernets_broke","solars_list","rad_collectors","field_gen_list","bullet_master","impact_master","available_staff_transforms","beam_master","existing_vaults","disposalpipeID2State","paint_variants","chifir_doesnt_remove","tonio_doesnt_remove","LOGGED_SPLASH_REAGENTS","valid_random_food_types","cockroach_egg_amount","charcoal_doesnt_remove","message_servers","blackbox","rnd_machines","design_list","tech_list","hidden_tech","responsive_carriers","finds_as_strings","authenticators","maint_all_access","spells","centcomm_store","GPS_list","SPS_list","secure_GPS_count","nukedisk","telesci_warnings","ANTIGENS","disease2_list","virusDB","compatible_mobs","buildmodeholders","newscaster_standard_feeds","announced_news_types","allfaxes","alldepartments","atmos_controllers","ul_FastRoot","sharing_lookup_table","air_master","tick_multiplier","assigned","created","merged","invalid_zone","air_blocked","zone_blocked","blocked","mark","zas_settings","contamination_overlay","accessable_z_levels","sc_safecode1","sc_safecode2","sc_safecode3","sc_safecode4","sc_safecode5")
+/var/list/_all_globals=list("map","masterdatumPool","pooledvariables","prox_sensor_ignored_types","ability_verbs","sent_aliens_to_station","account_hack_attempted","spacevines_spawned","sent_spiders_to_station","lighting_update_lights","lighting_update_corners","lighting_update_overlays","exclude","asset_cache","error_last_seen","error_cooldown","html_interfaces","all_lighting_corners","LIGHTING_CORNER_DIAGONAL","all_lighting_overlays","cargo_telepads","chatResources","bicon_cache","dview_mob","tick_start","meteor_wave_delay","meteors_in_wave","meteor_wave_active","max_meteor_size","chosen_dir","create_mob_html","create_object_html","create_turf_html","any","asset_cache_populated","total_runtimes","total_runtimes_skipped","error_cache","security_level","iconCache","round_end_info","deadmins","lockedvars","type_instances","data_core","plmaster","slmaster","account_DBs","global_map","universe","paper_tag_whitelist","paper_blacklist","BLINDBLOCK","DEAFBLOCK","HULKBLOCK","TELEBLOCK","FIREBLOCK","XRAYBLOCK","CLUMSYBLOCK","FAKEBLOCK","COUGHBLOCK","GLASSESBLOCK","EPILEPSYBLOCK","TWITCHBLOCK","NERVOUSBLOCK","MONKEYBLOCK","BLOCKADD","DIFFMUT","HEADACHEBLOCK","NOBREATHBLOCK","REMOTEVIEWBLOCK","REGENERATEBLOCK","INCREASERUNBLOCK","REMOTETALKBLOCK","MORPHBLOCK","COLDBLOCK","HALLUCINATIONBLOCK","NOPRINTSBLOCK","SHOCKIMMUNITYBLOCK","SMALLSIZEBLOCK","LISPBLOCK","MUTEBLOCK","RADBLOCK","FATBLOCK","CHAVBLOCK","SWEDEBLOCK","SCRAMBLEBLOCK","TOXICFARTBLOCK","STRONGBLOCK","HORNSBLOCK","SMILEBLOCK","ELVISBLOCK","SOBERBLOCK","PSYRESISTBLOCK","FARSIGHTBLOCK","CHAMELEONBLOCK","CRYOBLOCK","EATBLOCK","JUMPBLOCK","MELTBLOCK","EMPATHBLOCK","SUPERFARTBLOCK","IMMOLATEBLOCK","POLYMORPHBLOCK","LOUDBLOCK","WHISPERBLOCK","DIZZYBLOCK","SANSBLOCK","NOIRBLOCK","skipupdate","eventchance","event","hadevent","blobevent","starticon","midicon","endicon","diary","diaryofmeanpeople","admin_diary","href_logfile","station_name","game_version","changelog_hash","game_year","going","master_mode","secret_force_mode","host","aliens_allowed","ooc_allowed","dooc_allowed","traitor_scaling","dna_ident","abandon_allowed","enter_allowed","guests_allowed","shuttle_frozen","shuttle_left","tinted_weldhelh","jobMax","bombers","admin_log","lastsignalers","lawchanges","shuttles","reg_dna","CELLRATE","CHARGELEVEL","WORLD_X_OFFSET","WORLD_Y_OFFSET","shuttle_z","airtunnel_start","airtunnel_stop","airtunnel_bottom","monkeystart","wizardstart","newplayer_start","latejoin","assistant_latejoin","prisonwarp","holdingfacility","xeno_spawn","endgame_safespawns","endgame_exits","tdome1","tdome2","tdomeobserve","tdomeadmin","prisonsecuritywarp","prisonwarped","blobstart","ninjastart","cardinal","diagonal","alldirs","universal_cult_chat","start_state","config","combatlog","IClog","OOClog","adminlog","suspend_alert","Debug","Debug2","debugobj","mods","wavesecret","gravity_is_on","shuttlecoming","join_motd","forceblob","polarstar","nanomanager","sqladdress","sqlport","sqldb","sqllogin","sqlpass","sqlfdbkdb","sqlfdbklogin","sqlfdbkpass","sqllogging","forumsqladdress","forumsqlport","forumsqldb","forumsqllogin","forumsqlpass","forum_activated_group","forum_authenticated_group","fileaccess_timer","custom_event_msg","dbcon","dbcon_old","recall_time_limit","score","trash_items","decals","on_login","on_ban","on_unban","plugins","space_gas","announcement_intercom","sortedAreas","bomberman_mode","bomberman_hurt","bomberman_destroy","volunteer_gladiators","ready_gladiators","never_gladiators","achievements","end_icons","arena_leaderboard","arena_rounds","arena_top_score","endgame_info_logged","explosion_newmethod","snake_station_highscores","snake_best_players","minesweeper_station_highscores","minesweeper_best_players","nanocoins_rates","nanocoins_lastchange","speciesinit","minimapinit","stat_collection","hardcore_mode","mineral_turfs","static_list","grayscale","adminblob_icon","adminblob_size","adminblob_beat","parallax_initialized","space_color","parallax_icon","ai_names","wizard_first","wizard_second","ninja_titles","ninja_names","commando_names","first_names_male","first_names_female","last_names","clown_names","verbs","adjectives","vox_name_syllables","golem_names","borer_names","disable_scrubbers","disable_vents","Space_Tile","MAX_EXPLOSION_RANGE","BODY_PARTS","BODY_COVER_VALUE_LIST","NOIRMATRIX","bad_changing_colour_ckeys","global_mutations","scarySounds","tachycardics","bradycardics","heartstopper","cheartstopper","RESTRICTED_CAMERA_NETWORKS","default_colour_matrix","panicfile","failed_db_connections","failed_old_db_connections","cmp_field","DummyCache","genders","clients","admins","directory","mixed_modes","player_list","mob_list","living_mob_list","dead_mob_list","observers","areas","turfs","chemical_reactions_list","chemical_reagents_list","landmarks_list","surgery_steps","mechas_list","poster_designs","underwear_m","underwear_f","backbaglist","hit_appends","table_recipes","med_hud_users","sec_hud_users","escape_list","church_name","command_name","religion_name","syndicate_name","syndicate_code_phrase","syndicate_code_response","watt_suffixes","number_digits","number_tens","number_units","existing_typesof_cache","common_tools","WALLITEMS","sortInstance","hooks","ventcrawl_machinery","catcher","parallax_on_clients","unstackable_pipes","bent_dirs","pipeID2State","nlist","straight_pipes","bent_pipes","manifold_pipes","heat_pipes","failsafe","garbageCollector","soft_dels","master_controller","last_tick_duration","air_processing_killed","pipe_processing_killed","machine_profiling","emergency_shuttle","active_diseases","events","fast_machines","html_machines","machines","object_profiling","processing_objects","pipe_networks","atmos_machines","on_pipenet_tick","power_machinery_profiling","power_machines","powernets","cable_list","tickerProcess","__btime__lastTimeOfHour","__btime__callCount","__btime__lastTick","processScheduler","randomize_laws","base_law_type","mommi_base_law_type","diseases","map_elements","modules","sun","all_supply_groups","uplink_items","archive_diseases","advance_cures","list_symptoms","dictionary_symptoms","animal_butchering_products","revdata","same_wires","wireColours","PDA_Manifest","vox_sounds","vox_wordlen","outbreak_level_words","spawned_surprises","max_secret_rooms","del_profiling","gdel_profiling","ghdel_profiling","current_centcomm_order_id","all_radios","radiochannels","radiochannelsreverse","CENT_FREQS","radio_controller","pointers","response_team_members","send_emergency_team","ert_base_chance","can_call_ert","nextDecTalkDelay","lastDecTalkUse","freqtospan","freqtoname","ghostimg","resethearers","smoothable_unsims","socket_talk","shatter_sound","explosion_sound","small_explosion_sound","spark_sound","rustle_sound","punch_sound","clown_sound","swing_hit_sound","hiss_sound","page_sound","mechstep_sound","gib_sound","mommicomment_sound","polaroid_sound","male_scream_sound","female_scream_sound","male_cough_sound","female_cough_sound","lightning_sound","soulstone_sound","supply_shuttle","mechtoys","ignored_keys","moved_landmarks","transparent_icons","teleportlocs","ghostteleportlocs","adminbusteleportlocs","centcom_areas","the_station_areas","dna_activity_bounds","assigned_gene_blocks","assigned_blocks","dna_genes","good_blocks","bad_blocks","skin_styles_female_list","hair_styles_list","hair_styles_male_list","hair_styles_female_list","facial_hair_styles_list","facial_hair_styles_male_list","facial_hair_styles_female_list","noir_master","ticker","potential_theft_objectives","blobs","blob_cores","blob_nodes","blob_resources","blob_overminds","blob_looks_player","blob_looks_admin","possible_changeling_IDs","hivemind_bank","powers","powerinstances","narsie_behaviour","narsie_cometh","narsie_list","mr_clean_targets","cultwords","runedec","engwords","rnwords","rune_list","snow_recipes","Holiday","blob_candidates","mixed_allowed","bomb_set","hsboxspawn","hrefs","banned_sandbox_types","all_jobs","job_master","assistant_occupations","command_positions","engineering_positions","medical_positions","science_positions","civilian_positions","cargo_positions","security_positions","nonhuman_positions","misc_positions","whitelist","alien_whitelist","firealarms","cryo_health_indicator","doppler_arrays","flashers","holosigns","igniters","multitool_var_whitelist","mass_drivers","news_network","allCasters","req_console_assistance","req_console_supplies","req_console_information","allConsoles","status_displays","ai_emotions","status_display_images","num_vending_terminals","floorbot_targets","mulebot_count","camera_names","tv_monitors","shuttle_calls","prison_shuttle_moving_to_station","prison_shuttle_moving_to_prison","prison_shuttle_at_station","prison_shuttle_can_send","prison_shuttle_time","prison_shuttle_timeleft","specops_shuttle_moving_to_station","specops_shuttle_moving_to_centcom","specops_shuttle_at_station","specops_shuttle_can_send","specops_shuttle_time","specops_shuttle_timeleft","syndicate_elite_shuttle_moving_to_station","syndicate_elite_shuttle_moving_to_mothership","syndicate_elite_shuttle_at_station","syndicate_elite_shuttle_can_send","syndicate_elite_shuttle_time","syndicate_elite_shuttle_timeleft","taxi_computers","all_doors","alert_overlays_global","poddoors","recentmessages","message_delay","telecomms_list","word_to_uristrune_table","uristrune_cache","explosion_shake_message_cooldown","explosion_turfs","explosion_in_progress","blood_overlays","reagents_to_log","BUMP_TELEPORTERS","portal_cache","splatter_cache","blood_list","fluidtrack_cache","beacons","all_graffitis","deskbell_default_frequencies","deskbell_freq_cargo","deskbell_freq_hop","deskbell_freq_medbay","deskbell_freq_brig","deskbell_freq_rnd","camera_bugs","pda_app_menus","chatrooms","PDAs","available_paintings","cable_recipes","metal_recipes","plasteel_recipes","wood_recipes","cardboard_recipes","sandstone_recipes","diamond_recipes","uranium_recipes","plasma_recipes","plastic_recipes","gold_recipes","phazon_recipes","silver_recipes","clown_recipes","charcoal_recipes","lightfloor_colors","moneytypes","cached_icons","tracking_implants","bottle_colour_choices","hidden_doors","all_docking_ports","ladders","cargo_shuttle","escape_shuttle","mining_shuttle","arrival_shuttle","transport_shuttle","admin_shuttle","research_shuttle","salvage_shuttle","syndicate_shuttle","taxi_a","taxi_b","trade_shuttle","vox_shuttle","voxresearch_shuttle","icons_to_ignore_at_floor_init","plating_icons","wood_icons","w_overlays","_flatIcons","directional","exception","directional_turfs","BSACooldown","floorIsLava","admin_shuttle_location","alien_ship_location","investigations","admin_ranks","admin_verbs_default","admin_verbs_admin","admin_verbs_ban","admin_verbs_sounds","admin_verbs_fun","admin_verbs_spawn","admin_verbs_server","admin_verbs_debug","admin_verbs_possess","admin_verbs_permissions","admin_verbs_rejuv","admin_verbs_hideable","admin_verbs_mod","appearanceban_runonce","appearance_keylist","jobban_runonce","jobban_keylist","oocban_keylist","admin_datums","CMinutes","Banlist","Banlistjob","adminhelp_ignored_words","checked_for_inactives","inactive_keys","blood_virus_spreading_disabled","camera_range_display_status","intercom_range_display_status","prevent_airgroup_regroup","say_disabled","movement_disabled","movement_disabled_exception","forbidden_varedit_object_types","PROFILING_VERBS","sent_strike_team","sent_syndicate_strike_team","vox_tick","assembly_short_name_to_type","comparison_circuit_operations","math_circuit_operations_list","automation_types","gas_labels","existing_away_missions","awaydestinations","away_mission_subtypes","gateways","maploader","_preloader","swapmaps_iconcache","swapmaps_mode","swapmaps_compiled_maxx","swapmaps_compiled_maxy","swapmaps_compiled_maxz","swapmaps_initialized","swapmaps_loaded","swapmaps_byname","bombermangear","arenas","arena_spawnpoints","preferences_datums","special_roles","antag_roles","nonantag_roles","role_wiki","current_date_string","num_financial_terminals","num_financial_database","num_vending_machines","num_pda_terminals","num_merch_computers","station_account","department_accounts","next_account_number","centcomm_account_db","vendor_account","all_money_accounts","setup_economy","weighted_randomevent_locations","weighted_mundaneevent_locations","station_departments","current_pos_id","pos_sales","wages_enabled","roundstart_enable_wages","event_last_fired","allEvents","potentialRandomEvents","eventTimeLower","eventTimeUpper","scheduledEvent","vox_kills","vox_sent","raiders","thing_storm_types","watchdog","non_fakeattack_weapons","deepFriedEverything","deepFriedNutriment","foodNesting","recursiveFood","ingredientLimit","wizard_cards_rare","wizard_cards_normal","adv_camera","crewmonitor","vote","plant_controller","seed_types","gene_tag_masks","library_catalog","library_section_names","liquid_delay","puddles","global_playlists","loopModeNames","media_receivers","media_transmitters","migration_controller_mysql","migration_controller_sqlite","valid_abandoned_crate_types","material_list","initial_materials","name_to_mineral","mining_surprises","FUCK","slot_equipment_priority","intents","boo_phrases","boo_phrases_drugs","boo_phrases_silicon","virtualhearers","stationary_hearers","coldwarning_light","coldwarning_hard","department_radio_keys","language_keys","all_languages","all_species","whitelisted_species","unconscious_overlays","oxyloss_overlays","brutefireloss_overlays","organ_damage_overlays","damage_icon_parts","cover_protection_value_list","ai_list","announcing_vox","vox_digits","vox_tens","vox_units","cameranet","paiController","borer_chem_types_head","borer_chem_types_chest","borer_chem_types_arm","borer_chem_types_leg","borer_unlock_types_head","borer_unlock_types_chest","borer_unlock_types_arm","borer_unlock_types_leg","animal_count","nest_locations","crate_mimic_disguises","item_mimic_disguises","protected_objects","spider_types","photocollector_list","prism_list","mirror_list","paper_folding_results","paperwork","paperwork_library","battery_charge","battery_charging","battery_online","alllights","powernets_broke","solars_list","rad_collectors","field_gen_list","bullet_master","impact_master","available_staff_transforms","beam_master","existing_vaults","disposalpipeID2State","paint_variants","chifir_doesnt_remove","tonio_doesnt_remove","LOGGED_SPLASH_REAGENTS","valid_random_food_types","cockroach_egg_amount","charcoal_doesnt_remove","message_servers","blackbox","rnd_machines","design_list","tech_list","hidden_tech","responsive_carriers","finds_as_strings","authenticators","maint_all_access","spells","centcomm_store","GPS_list","SPS_list","secure_GPS_count","nukedisk","telesci_warnings","ANTIGENS","disease2_list","virusDB","compatible_mobs","buildmodeholders","newscaster_standard_feeds","announced_news_types","allfaxes","alldepartments","atmos_controllers","ul_FastRoot","sharing_lookup_table","air_master","tick_multiplier","assigned","created","merged","invalid_zone","air_blocked","zone_blocked","blocked","mark","zas_settings","contamination_overlay","accessable_z_levels","sc_safecode1","sc_safecode2","sc_safecode3","sc_safecode4","sc_safecode5")
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index aabce29c8cc..d26d07462f8 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -719,50 +719,32 @@
A.toggle_lights(usr,2)
/obj/screen/specialblob/Click()
- switch(name)
- if("Spawn Blob")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if(isovermind(usr))
+ var/mob/camera/blob/overmind = usr
+ switch(name)
+ if("Spawn Blob")
overmind.expand_blob_power()
- if("Spawn Strong Blob")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Spawn Strong Blob")
overmind.create_shield_power()
- if("Spawn Resource Blob")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Spawn Resource Blob")
overmind.create_resource()
- if("Spawn Factory Blob")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Spawn Factory Blob")
overmind.create_factory()
- if("Spawn Node Blob")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Spawn Node Blob")
overmind.create_node()
- if("Spawn Blob Core")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Spawn Blob Core")
overmind.create_core()
- if("Call Overminds")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Call Overminds")
overmind.callblobs()
- if("Rally Spores")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Rally Spores")
overmind.rally_spores_power()
- if("Psionic Message")
- if(isovermind(usr))
- var/mob/camera/blob/overmind = usr
+ if("Psionic Message")
var/message = input(overmind,"Send a message to the crew.","Psionic Message") as null|text
if(message)
overmind.telepathy(message)
- if("Jump to Blob")
- if(isovermind(usr) && linked_blob)
- var/mob/camera/blob/overmind = usr
+ if("Jump to Blob")
overmind.forceMove(linked_blob.loc)
- return 1
+ return 1
/obj/screen/inventory/Click()
// At this point in client Click() code we have passed the 1/10 sec check and little else
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index b84454be847..d69b3350645 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -432,7 +432,7 @@ its easier to just keep the beam vertical.
//DEBUG to_chat(pick(player_list),"blob_act() on [src] ([src.type])")
if(flags & INVULNERABLE)
return
- anim(target = loc, a_icon = 'icons/mob/blob.dmi', flick_anim = "blob_act", sleeptime = 15, lay = 12)
+ anim(target = loc, a_icon = 'icons/mob/blob/blob.dmi', flick_anim = "blob_act", sleeptime = 15, lay = 12)
return
/*
diff --git a/code/game/gamemodes/blob/_blob_defines.dm b/code/game/gamemodes/blob/_blob_defines.dm
new file mode 100644
index 00000000000..d28daafe516
--- /dev/null
+++ b/code/game/gamemodes/blob/_blob_defines.dm
@@ -0,0 +1,11 @@
+#define BLOBCORECOSTINC 50
+#define BLOBCOREBASECOST 100
+#define BLOBSHICOST 10
+#define BLOBRESCOST 40
+#define BLOBFACCOST 60
+#define BLOBNODCOST 60
+#define BLOBATTCOST 5
+#define BLOBRALCOST 5
+#define BLOBTAUNTCOST 15
+
+#define BLOBNDPOINTINC 10
\ No newline at end of file
diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm
index 0c7a23b3df2..e77c6643e89 100644
--- a/code/game/gamemodes/blob/blob_finish.dm
+++ b/code/game/gamemodes/blob/blob_finish.dm
@@ -44,7 +44,7 @@ datum/game_mode/proc/auto_declare_completion_blob()
if(blob_mode.infected_crew.len)
text += "The blob[(blob_mode.infected_crew.len > 1 ? "s were" : " was")]:"
- var/icon/logo = icon('icons/mob/blob.dmi', "blob_core")
+ var/icon/logo = icon('icons/mob/blob/blob.dmi', "blob_core")
end_icons += logo
var/tempstate = end_icons.len
for(var/datum/mind/blob in blob_mode.infected_crew)
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index 515df234003..3387ac6019a 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -25,7 +25,7 @@
blob_cores += src
processing_objects.Add(src)
creator = C
- if((blob_looks[looks] == 64) && !no_morph)
+ if((icon_size == 64) && !no_morph)
if(new_overmind)
flick("core_spawn",src)
else
@@ -86,8 +86,8 @@
if(!spawning)//no expanding on the first Life() tick
- if(blob_looks[looks] == 64)
- anim(target = loc, a_icon = icon, flick_anim = "corepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 200)
+ if(icon_size == 64)
+ // anim(target = loc, a_icon = icon, flick_anim = "corepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 200)
for(var/mob/M in viewers(src))
M.playsound_local(loc, adminblob_beat, 50, 0, null, FALLOFF_SOUNDS, 0)
@@ -157,8 +157,8 @@
B.verbs += /mob/camera/blob/proc/create_core
spawn()
- var/can_choose_from = blob_looks - "adminbus"
- var/chosen = input(B,"Select a blob looks", "Blob Looks", blob_looks[1]) as null|anything in can_choose_from
+ var/can_choose_from = blob_looks_player
+ var/chosen = input(B,"Select a blob looks", "Blob Looks", blob_looks_player[1]) as null|anything in can_choose_from
if(chosen)
for(var/obj/effect/blob/nearby_blob in range(src,5))
nearby_blob.looks = chosen
@@ -184,7 +184,7 @@
return 0
/obj/effect/blob/core/update_icon(var/spawnend = 0)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm
index fe59ed145e6..3d70ed1ff8d 100644
--- a/code/game/gamemodes/blob/blobs/factory.dm
+++ b/code/game/gamemodes/blob/blobs/factory.dm
@@ -17,7 +17,7 @@
/obj/effect/blob/factory/New(loc,newlook = "new")
..()
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
flick("morph_factory",src)
spore_delay = world.time + (2 SECONDS)
@@ -28,7 +28,7 @@
return 0
spore_delay = world.time + (40 SECONDS) // 30 seconds
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
flick("factorypulse",src)
anim(target = loc, a_icon = icon, flick_anim = "sporepulse", sleeptime = 15, lay = 7.2, offX = -16, offY = -16, alph = 220)
spawn(10)
@@ -51,7 +51,7 @@
..()
/obj/effect/blob/factory/update_icon(var/spawnend = 0)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
@@ -72,7 +72,7 @@
/mob/living/simple_animal/hostile/blobspore
name = "Blob Spore"
desc = "A form of blob antibodies that attack foreign entities."
- icon = 'icons/mob/blob.dmi'
+ icon = 'icons/mob/blob/blob.dmi'
icon_state = "blobpod"
icon_living = "blobpod"
pass_flags = PASSBLOB
@@ -97,6 +97,7 @@
if(istype(linked_node))
factory = linked_node
factory.spores += src
+ icon = factory.icon
..()
/mob/living/simple_animal/hostile/blobspore/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
diff --git a/code/game/gamemodes/blob/blobs/node.dm b/code/game/gamemodes/blob/blobs/node.dm
index 38dff3e32be..16be2c08521 100644
--- a/code/game/gamemodes/blob/blobs/node.dm
+++ b/code/game/gamemodes/blob/blobs/node.dm
@@ -18,7 +18,7 @@
processing_objects.Add(src)
..(loc, newlook)
- if((blob_looks[looks] == 64) && !no_morph)
+ if((icon_size == 64) && !no_morph)
flick("morph_node",src)
/obj/effect/blob/node/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
@@ -30,6 +30,7 @@
to_chat(overmind,"A node blob that you had created has been destroyed. (JUMP)")
overmind.special_blobs -= src
overmind.update_specialblobs()
+ overmind.max_blob_points -= BLOBNDPOINTINC
processing_objects.Remove(src)
..()
@@ -37,8 +38,8 @@
if(timestopped)
return 0 //under effects of time magick
- if(blob_looks[looks] == 64)
- anim(target = loc, a_icon = icon, flick_anim = "nodepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 150)
+ if(icon_size == 64)
+ // anim(target = loc, a_icon = icon, flick_anim = "nodepulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 150)
for(var/mob/M in viewers(src))
M.playsound_local(loc, adminblob_beat, 50, 0, null, FALLOFF_SOUNDS, 0)
@@ -53,7 +54,7 @@
return 0
/obj/effect/blob/node/update_icon(var/spawnend = 0)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
diff --git a/code/game/gamemodes/blob/blobs/resource.dm b/code/game/gamemodes/blob/blobs/resource.dm
index 9752cd99195..c0e8ee1ad00 100644
--- a/code/game/gamemodes/blob/blobs/resource.dm
+++ b/code/game/gamemodes/blob/blobs/resource.dm
@@ -17,7 +17,7 @@
..()
blob_resources += src
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
flick("morph_resource",src)
/obj/effect/blob/resource/Destroy()
@@ -46,8 +46,8 @@
resource_delay = world.time + (4 SECONDS)
if(overmind)
- if(blob_looks[looks] == 64)
- anim(target = loc, a_icon = icon, flick_anim = "resourcepulse", sleeptime = 15, lay = 7.2, offX = -16, offY = -16, alph = 220)
+ /* if(blob_looks[looks] == 64)
+ anim(target = loc, a_icon = icon, flick_anim = "resourcepulse", sleeptime = 15, lay = 7.2, offX = -16, offY = -16, alph = 220)*/
overmind.add_points(1)
return 1
@@ -59,7 +59,7 @@
else
color = "#888888"
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
diff --git a/code/game/gamemodes/blob/blobs/shield.dm b/code/game/gamemodes/blob/blobs/shield.dm
index 44d3ea573ca..89865857e02 100644
--- a/code/game/gamemodes/blob/blobs/shield.dm
+++ b/code/game/gamemodes/blob/blobs/shield.dm
@@ -32,14 +32,14 @@
health += 10
return 1
-
+/*
/obj/effect/blob/shield/Pulse(var/pulse = 0, var/origin_dir = 0)
..()
if(blob_looks[looks] == 64)
anim(target = loc, a_icon = 'icons/mob/blob_64x64.dmi', flick_anim = "strongpulse", sleeptime = 15, lay = 12, offX = -16, offY = -16, alph = 51)
-
+*/
/obj/effect/blob/shield/update_icon(var/spawnend = 0)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm
index fd37142b360..24161386421 100644
--- a/code/game/gamemodes/blob/overmind.dm
+++ b/code/game/gamemodes/blob/overmind.dm
@@ -1,7 +1,7 @@
/mob/camera/blob
name = "Blob Overmind"
real_name = "Blob Overmind"
- icon = 'icons/mob/blob.dmi'
+ icon = 'icons/mob/blob/blob.dmi'
icon_state = "marker"
see_in_dark = 8
@@ -112,7 +112,7 @@
if(points != 0)
blob_points = Clamp(blob_points + points, 0, max_blob_points)
stat_collection.blobblob.res_generated += points
-
+ var/number_of_cores = blob_cores.len
//Updating the HUD
if(hud_used)
var/matrix/M = matrix()
@@ -134,19 +134,19 @@
hud_used.mymob.gui_icons.blob_rally.color = grayscale
hud_used.mymob.gui_icons.blob_taunt.color = grayscale
- if(blob_points >= 5)
+ if(blob_points >= BLOBATTCOST)
hud_used.mymob.gui_icons.blob_spawnblob.color = null
hud_used.mymob.gui_icons.blob_rally.color = null
- if(blob_points >= 10)
+ if(blob_points >= BLOBSHICOST)
hud_used.mymob.gui_icons.blob_spawnstrong.color = null
- if(blob_points >= 15)
+ if(blob_points >= BLOBTAUNTCOST)
hud_used.mymob.gui_icons.blob_taunt.color = null
- if(blob_points >= 40)
+ if(blob_points >= BLOBRESCOST)
hud_used.mymob.gui_icons.blob_spawnresource.color = null
- if(blob_points >= 60)
+ if(blob_points >= BLOBFACCOST)
hud_used.mymob.gui_icons.blob_spawnfactory.color = null
hud_used.mymob.gui_icons.blob_spawnnode.color = null
- if(blob_points >= 100)
+ if(blob_points >= BLOBCOREBASECOST+(BLOBCORECOSTINC*(number_of_cores-1)))
hud_used.mymob.gui_icons.blob_spawncore.color = null
/mob/camera/blob/say(var/message)
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index faf5d6bf35b..bd72794b3e9 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -33,7 +33,7 @@
/mob/camera/blob/verb/create_shield_power()
set category = "Blob"
- set name = "Create Shield Blob (10)"
+ set name = "Create Shield Blob"
set desc = "Create a shield blob."
var/turf/T = get_turf(src)
@@ -52,7 +52,7 @@
to_chat(src, "Unable to use this blob, find a normal one.")
return
- if(!can_buy(10))
+ if(!can_buy(BLOBSHICOST))
return
@@ -63,7 +63,7 @@
/mob/camera/blob/verb/create_resource()
set category = "Blob"
- set name = "Create Resource Blob (40)"
+ set name = "Create Resource Blob"
set desc = "Create a resource tower which will generate points for you."
@@ -86,7 +86,7 @@
to_chat(src, "There is a resource blob nearby, move more than 4 tiles away from it!")
return
- if(!can_buy(40))
+ if(!can_buy(BLOBRESCOST))
return
@@ -100,7 +100,7 @@
/mob/camera/blob/proc/create_core()
set category = "Blob"
- set name = "Create Core Blob (100)"
+ set name = "Create Core Blob"
set desc = "Create another Core Blob to aid in the station takeover"
@@ -122,8 +122,11 @@
for(var/obj/effect/blob/core/blob in orange(15))
to_chat(src, "There is another core blob nearby, move more than 15 tiles away from it!")
return
+ var/number_of_cores = blob_cores.len
+ var/cost = BLOBCOREBASECOST+(BLOBCORECOSTINC*(number_of_cores-1))
- if(!can_buy(100))
+ if(!can_buy(cost))
+ to_chat(src, "Current cost of a blob core is [cost]!")
return
@@ -133,7 +136,7 @@
/mob/camera/blob/verb/create_node()
set category = "Blob"
- set name = "Create Node Blob (60)"
+ set name = "Create Node Blob"
set desc = "Create a Node."
@@ -156,7 +159,7 @@
to_chat(src, "There is another node nearby, move more than 5 tiles away from it!")
return
- if(!can_buy(60))
+ if(!can_buy(BLOBNODCOST))
return
@@ -166,12 +169,13 @@
N.overmind = src
special_blobs += N
update_specialblobs()
+ max_blob_points += BLOBNDPOINTINC
return
/mob/camera/blob/verb/create_factory()
set category = "Blob"
- set name = "Create Factory Blob (60)"
+ set name = "Create Factory Blob"
set desc = "Create a Spore producing blob."
@@ -193,7 +197,7 @@
to_chat(src, "There is a factory blob nearby, move more than 7 tiles away from it!")
return
- if(!can_buy(60))
+ if(!can_buy(BLOBFACCOST))
return
B.change_to(/obj/effect/blob/factory)
@@ -254,7 +258,7 @@
/mob/camera/blob/verb/expand_blob_power()
set category = "Blob"
- set name = "Expand/Attack Blob (5)"
+ set name = "Expand/Attack Blob"
set desc = "Attempts to create a new blob in this tile. If the tile isn't clear we will attack it, which might clear it."
var/turf/T = get_turf(src)
@@ -274,7 +278,7 @@
to_chat(src, "There is no blob adjacent to you.")
return
- if(!can_buy(5))
+ if(!can_buy(BLOBATTCOST))
return
OB.expand(T, 0)
return
@@ -282,7 +286,7 @@
/mob/camera/blob/verb/rally_spores_power()
set category = "Blob"
- set name = "Rally Spores (5)"
+ set name = "Rally Spores"
set desc = "Rally the spores to move to your location."
var/turf/T = get_turf(src)
@@ -291,7 +295,7 @@
/mob/camera/blob/proc/rally_spores(var/turf/T)
- if(!can_buy(5))
+ if(!can_buy(BLOBRALCOST))
return
to_chat(src, "You rally your spores.")
@@ -306,12 +310,20 @@
BS.Goto(pick(surrounding_turfs), BS.move_to_delay)
return
-/mob/camera/blob/verb/telepathy(message as text)
+/mob/camera/blob/verb/telepathy_power()
set category = "Blob"
- set name = "Psionic Message (15)"
+ set name = "Psionic Message"
set desc = "Give a psionic message to all creatures on and around the station."
+ telepathy()
+
+/mob/camera/blob/proc/telepathy(message as text)
+
+ if(!can_buy(BLOBTAUNTCOST))
+ return
+
to_chat(world, "Your vision becomes cloudy, and your mind becomes clear.")
spawn(5)
to_chat(world, "[message]")
+ add_gamelogs(src, "used blob telepathy to convey \"[message]\"", tp_link = TRUE)
log_blobtelepathy("[key_name(usr)]: [message]")
diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm
index a22298dada2..fcae83241e7 100644
--- a/code/game/gamemodes/blob/theblob.dm
+++ b/code/game/gamemodes/blob/theblob.dm
@@ -38,7 +38,7 @@ var/list/blob_looks
/obj/effect/blob
name = "blob"
- icon = 'icons/mob/blob_64x64.dmi'
+ icon = 'icons/mob/blob/blob_64x64.dmi'
icon_state = "center"
luminosity = 2
desc = "Some blob creature thingy"
@@ -70,6 +70,7 @@ var/list/blob_looks
var/icon_classic = "blob"
var/manual_remove = 0
+ var/icon_size = 64
/obj/effect/blob/blob_act()
return
@@ -87,7 +88,7 @@ var/list/blob_looks
src.dir = pick(cardinal)
time_since_last_pulse = world.time
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
if(spawning && !no_morph)
icon_state = initial(icon_state) + "_spawn"
spawn(10)
@@ -110,7 +111,7 @@ var/list/blob_looks
dying = 1
blobs -= src
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
for(var/atom/movable/overlay/O in loc)
returnToPool(O)
@@ -230,7 +231,7 @@ var/list/blob_looks
return
/obj/effect/blob/update_icon(var/spawnend = 0)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
if(health < maxhealth)
var/hurt_percentage = round((health * 100) / maxhealth)
var/hurt_icon
@@ -246,9 +247,10 @@ var/list/blob_looks
overlays += image(icon,hurt_icon)
/obj/effect/blob/proc/update_looks(var/right_now = 0)
- switch(blob_looks[looks])
+ switch(blob_looks_admin[looks]) //blob_looks_admin should have every possible blob skin
if(64)
icon_state = icon_new
+ icon_size = 64
pixel_x = -WORLD_ICON_SIZE/2
pixel_y = -WORLD_ICON_SIZE/2
layer = initial(layer)
@@ -256,6 +258,7 @@ var/list/blob_looks
spawning = 0
if(32)
icon_state = icon_classic
+ icon_size = 32
pixel_x = 0
pixel_y = 0
layer = OBJ_LAYER
@@ -263,11 +266,15 @@ var/list/blob_looks
switch(looks)
if("new")
- icon = 'icons/mob/blob_64x64.dmi'
+ icon = 'icons/mob/blob/blob_64x64.dmi'
if("classic")
- icon = 'icons/mob/blob.dmi'
+ icon = 'icons/mob/blob/blob.dmi'
if("adminbus")
icon = adminblob_icon
+ if("clownscape")
+ icon = 'icons/mob/blob/blob_honkscape.dmi'
+ if("AME")
+ icon = 'icons/mob/blob/blob_AME.dmi'
//<----------------------------------------------------------------------------DEAR SPRITERS, THIS IS WHERE YOU ADD YOUR NEW BLOB DMIs
/*EXAMPLES
if("fleshy")
@@ -279,10 +286,17 @@ var/list/blob_looks
if(right_now)
update_icon()
-var/list/blob_looks = list(
+var/list/blob_looks_admin = list(//Options available to admins
"new" = 64,
"classic" = 32,
"adminbus" = adminblob_size,
+ "clownscape" = 32,
+ "AME" = 32,
+ )
+
+var/list/blob_looks_player = list(//Options available to players
+ "new" = 64,
+ "classic" = 32,
)
//<---------------------------------------ALSO ADD THE NAME OF YOUR BLOB LOOKS HERE, AS WELL AS THE RESOLUTION OF THE DMIS (64 or 32)
@@ -358,7 +372,7 @@ var/list/blob_looks = list(
var/obj/effect/blob/normal/B = new(src.loc, newlook = looks)
B.density = 1
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
if(istype(src,/obj/effect/blob/normal))
var/num = rand(1,100)
num /= 10000
@@ -366,7 +380,7 @@ var/list/blob_looks = list(
if(T.Enter(B,src))//Attempt to move into the tile
B.density = initial(B.density)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
B.forceMove(T)
B.aftermove()
@@ -413,14 +427,14 @@ var/list/blob_looks = list(
/obj/effect/blob/normal/Delete()
..()
-
+/*
/obj/effect/blob/normal/Pulse(var/pulse = 0, var/origin_dir = 0)
..()
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
anim(target = loc, a_icon = icon, flick_anim = "pulse", sleeptime = 15, direction = dir, lay = 12, offX = -16, offY = -16, alph = 51)
-
+*/
/obj/effect/blob/normal/update_icon(var/spawnend = 0)
- if(blob_looks[looks] == 64)
+ if(icon_size == 64)
spawn(1)
overlays.len = 0
underlays.len = 0
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 89ecd9a9c6f..dde232cb4a5 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -191,6 +191,7 @@ var/global/floorIsLava = 0
Ian |
Crab |
Coffee
+ BLOB
\[ Silicon: AI, |
Cyborg \]
\[ Alien: Drone,
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index abeae52d753..13b5ffd3e1f 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -1060,8 +1060,8 @@ var/list/admin_verbs_mod = list(
set category = "Fun"
var/to_choose_from = list("ADMINBUS (custom DMI upload)")
- to_choose_from += blob_looks - "adminbus"
- var/chosen = input("This will change the looks of every blob currently in the world.", "Blob Looks", blob_looks[1]) as null|anything in to_choose_from
+ to_choose_from += blob_looks_admin
+ var/chosen = input("This will change the looks of every blob currently in the world.", "Blob Looks", blob_looks_admin[1]) as null|anything in to_choose_from
if(!chosen)
return
@@ -1077,7 +1077,7 @@ var/list/admin_verbs_mod = list(
else
adminblob_beat = 'sound/effects/blob_pulse.ogg'
- blob_looks["adminbus"] = adminblob_size
+ blob_looks_admin["adminbus"] = adminblob_size
chosen = "adminbus"
else
adminblob_icon = null
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index ef7bfde703d..4af28b1481e 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -421,6 +421,11 @@
new_mob = M.change_mob_type( /mob/living/simple_animal/construct/wraith , null, null, delmob )
if("shade")
new_mob = M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob )
+ if("blob")
+ var/obj/effect/blob/core/core = new(loc = get_turf(M), new_overmind = M.client)
+ new_mob = core.overmind
+ if(delmob)
+ qdel(M)
if("ai")
new_mob = M.AIize(spawn_here = 1, del_mob = delmob)
// to_chat(world, "Made a [new_mob] [usr ? "usr still exists" : "usr does not exist"]")
diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm
index e4fed60a7d5..d48612ce0d0 100644
--- a/code/modules/supermatter/supermatter.dm
+++ b/code/modules/supermatter/supermatter.dm
@@ -438,3 +438,7 @@
l.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2)
var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) )
l.apply_effect(rads, IRRADIATE, 0) // Permit blocking
+
+
+/obj/machinery/power/supermatter/blob_act()
+ explode()
diff --git a/icons/mob/blob.dmi b/icons/mob/blob/blob.dmi
similarity index 100%
rename from icons/mob/blob.dmi
rename to icons/mob/blob/blob.dmi
diff --git a/icons/mob/blob/blob_64x64.dmi b/icons/mob/blob/blob_64x64.dmi
new file mode 100644
index 00000000000..0576d77af9a
Binary files /dev/null and b/icons/mob/blob/blob_64x64.dmi differ
diff --git a/icons/mob/blob/blob_AME.dmi b/icons/mob/blob/blob_AME.dmi
new file mode 100644
index 00000000000..d1a9c064bfb
Binary files /dev/null and b/icons/mob/blob/blob_AME.dmi differ
diff --git a/icons/mob/blob/blob_honkscape.dmi b/icons/mob/blob/blob_honkscape.dmi
new file mode 100644
index 00000000000..d381b743a9d
Binary files /dev/null and b/icons/mob/blob/blob_honkscape.dmi differ
diff --git a/icons/mob/blob_64x64.dmi b/icons/mob/blob_64x64.dmi
deleted file mode 100644
index b9dbf6cff9e..00000000000
Binary files a/icons/mob/blob_64x64.dmi and /dev/null differ
diff --git a/vgstation13.dme b/vgstation13.dme
index 50c3f433eed..4646a85fbff 100644
--- a/vgstation13.dme
+++ b/vgstation13.dme
@@ -300,6 +300,7 @@
#include "code\game\gamemodes\setupgame.dm"
#include "code\game\gamemodes\steal_items.dm"
#include "code\game\gamemodes\autotraitor\autotraitor.dm"
+#include "code\game\gamemodes\blob\_blob_defines.dm"
#include "code\game\gamemodes\blob\blob.dm"
#include "code\game\gamemodes\blob\blob_finish.dm"
#include "code\game\gamemodes\blob\blob_report.dm"