diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index fb88bab5cd88..34ac3379663f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,5 @@ # If this is your first PR, or not, take the time to read our CONTRIBUTING.md file! You can see it here: https://github.com/yogstation13/Yogstation/blob/master/.github/CONTRIBUTING.md - +You can remove all headers (Document the changes and Wiki documentation) if there is no wiki documentation required # Document the changes in your pull request diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 3f7c1d0d88b8..885ba74810e7 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -38,11 +38,11 @@ #define R_SPAWN (1<<12) #define R_AUTOLOGIN (1<<13) #define R_DBRANKS (1<<14) +#define R_DEV (1<<15) // Stuff NOONE should be touching except for head-dev/maints, I guess council too.. +#define R_EVERYTHING (1<<16)-1 //the sum of all other rank permissions, used for +EVERYTHING #define R_DEFAULT R_AUTOLOGIN -#define R_EVERYTHING (1<<15)-1 //the sum of all other rank permissions, used for +EVERYTHING - #define ADMIN_QUE(user) "(?)" #define ADMIN_FLW(user) "(FLW)" #define ADMIN_PP(user) "(PP)" diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index e6c4f9a29436..f7153ea82f5a 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -225,6 +225,8 @@ . += "[seperator]AUTOLOGIN" if(rights & R_DBRANKS) . += "[seperator]DBRANKS" + if(rights & R_DEV) + . += "[seperator]DEV" if(!.) . = "NONE" return . diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 3c9e05a00849..88b5379df2f1 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -68,7 +68,8 @@ GLOBAL_LIST_INIT(bitfields, list( "SOUNDS" = R_SOUNDS, "SPAWN" = R_SPAWN, "AUTOLOGIN" = R_AUTOLOGIN, - "DBRANKS" = R_DBRANKS + "DBRANKS" = R_DBRANKS, + "DEV" = R_DEV ), "interaction_flags_atom" = list( "INTERACT_ATOM_REQUIRES_ANCHORED" = INTERACT_ATOM_REQUIRES_ANCHORED, diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 6dc3ae2bcf4f..693998aa3a2c 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -105,6 +105,10 @@ #define ui_internal "EAST-1:28,CENTER:17" #define ui_mood "EAST-1:28,CENTER-3:10" +//living +#define ui_living_pull "EAST-1:28,CENTER-2:15" +#define ui_living_health "EAST-1:28,CENTER:15" + //borgs #define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. @@ -115,10 +119,10 @@ //constructs #define ui_construct_pull "EAST,CENTER-2:15" -#define ui_construct_health "EAST,CENTER:15" //same as borgs and humans +#define ui_construct_health "EAST,CENTER:15" //same as humans and slimes //slimes -#define ui_slime_health "EAST,CENTER:15" //same as borgs, constructs and humans +#define ui_slime_health "EAST,CENTER:15" //same as humans and constructs // AI diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm index 19bcd4e1f67d..299ee2ca532c 100644 --- a/code/_onclick/hud/guardian.dm +++ b/code/_onclick/hud/guardian.dm @@ -1,8 +1,17 @@ +/datum/hud/guardian + ui_style = 'icons/mob/guardian.dmi' /datum/hud/guardian/New(mob/living/simple_animal/hostile/guardian/owner) ..() var/obj/screen/using + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + healths = new /obj/screen/healths/guardian() infodisplay += healths @@ -34,6 +43,7 @@ name = "Manifest" desc = "Spring forth into battle!" + /obj/screen/guardian/Manifest/Click() if(isguardian(usr)) var/mob/living/simple_animal/hostile/guardian/G = usr diff --git a/code/_onclick/hud/lavaland_elite.dm b/code/_onclick/hud/lavaland_elite.dm index 480e0e398e0b..dfcfb8f3ac67 100644 --- a/code/_onclick/hud/lavaland_elite.dm +++ b/code/_onclick/hud/lavaland_elite.dm @@ -1,7 +1,15 @@ /datum/hud/lavaland_elite - ui_style = 'icons/mob/screen_slime.dmi' + ui_style = 'icons/mob/screen_elite.dmi' /datum/hud/lavaland_elite/New(mob/living/simple_animal/hostile/asteroid/elite) ..() + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + healths = new /obj/screen/healths/lavaland_elite() + healths.hud = src infodisplay += healths diff --git a/code/_onclick/hud/living.dm b/code/_onclick/hud/living.dm new file mode 100644 index 000000000000..b22cddd5613f --- /dev/null +++ b/code/_onclick/hud/living.dm @@ -0,0 +1,17 @@ +/datum/hud/living + ui_style = 'icons/mob/screen_gen.dmi' + +/datum/hud/living/New(mob/living/owner) + ..() + + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + + healths = new /obj/screen/healths/living() + healths.hud = src + infodisplay += healths + diff --git a/code/_onclick/hud/revenanthud.dm b/code/_onclick/hud/revenanthud.dm index bc8a2bde7d0d..65467d3bf6fe 100644 --- a/code/_onclick/hud/revenanthud.dm +++ b/code/_onclick/hud/revenanthud.dm @@ -1,6 +1,15 @@ +/datum/hud/revenant + ui_style = 'icons/mob/screen_gen.dmi' /datum/hud/revenant/New(mob/owner) ..() + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + healths = new /obj/screen/healths/revenant() infodisplay += healths diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 67ebde9d2bb0..c0b5dc89dd6d 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -593,6 +593,10 @@ icon_state = "health0" screen_loc = ui_health +/obj/screen/healths/living + screen_loc = ui_living_health + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + /obj/screen/healths/alien icon = 'icons/mob/screen_alien.dmi' screen_loc = ui_alien_health @@ -627,7 +631,7 @@ /obj/screen/healths/clock icon = 'icons/mob/actions.dmi' icon_state = "bg_clock" - screen_loc = ui_health + screen_loc = ui_living_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT /obj/screen/healths/clock/gear @@ -657,7 +661,7 @@ /obj/screen/healths/lavaland_elite icon = 'icons/mob/screen_elite.dmi' icon_state = "elite_health0" - screen_loc = ui_health + screen_loc = ui_living_health mouse_opacity = MOUSE_OPACITY_TRANSPARENT /obj/screen/healthdoll diff --git a/code/_onclick/hud/slime.dm b/code/_onclick/hud/slime.dm index 4258c0a89d88..e83d38b5f630 100644 --- a/code/_onclick/hud/slime.dm +++ b/code/_onclick/hud/slime.dm @@ -3,5 +3,14 @@ /datum/hud/slime/New(mob/living/simple_animal/slime/owner) ..() + + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon() + pull_icon.screen_loc = ui_living_pull + pull_icon.hud = src + static_inventory += pull_icon + + healths = new /obj/screen/healths/slime() infodisplay += healths diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 6d158598bc42..d21816293e57 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -442,3 +442,10 @@ crafting_recipe_types = list(/datum/crafting_recipe/baseball_bat, /datum/crafting_recipe/lance, /datum/crafting_recipe/knifeboxing, /datum/crafting_recipe/flamethrower, /datum/crafting_recipe/pipebomb, /datum/crafting_recipe/makeshiftpistol, /datum/crafting_recipe/makeshiftmagazine, /datum/crafting_recipe/makeshiftsuppressor, /datum/crafting_recipe/makeshiftcrowbar, /datum/crafting_recipe/makeshiftwrench, /datum/crafting_recipe/makeshiftwirecutters, /datum/crafting_recipe/makeshiftweldingtool, /datum/crafting_recipe/makeshiftmultitool, /datum/crafting_recipe/makeshiftscrewdriver, /datum/crafting_recipe/makeshiftknife, /datum/crafting_recipe/makeshiftpickaxe, /datum/crafting_recipe/makeshiftradio) icon_state = "bookCrafting" oneuse = TRUE + +/obj/item/book/granter/crafting_recipe/roburgers + name = "roburger crafting recipe" + desc = "A book containing knowledge how to make roburgers." + crafting_recipe_types = list(/datum/crafting_recipe/food/roburger) + icon_state = "bookCrafting" + oneuse = FALSE \ No newline at end of file diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 50c6130c73e2..3489c03c5372 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -79,6 +79,8 @@ GLOBAL_PROTECT(protected_ranks) flag = R_AUTOLOGIN if("dbranks") flag = R_DBRANKS + if("dev") + flag = R_DEV if("@","prev") flag = previous_rights return flag diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 099d75f957a1..f8c2072c28f5 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -157,7 +157,7 @@ GLOBAL_PROTECT(admin_verbs_server) /client/proc/panicbunker, /client/proc/toggle_hub, /client/proc/mentor_memo, // YOGS - something stupid about "Mentor memos" - ///client/proc/dump_memory_usage, + /client/proc/dump_memory_usage, /client/proc/release_queue, // Yogs -- Adds some queue-manipulation verbs /client/proc/toggle_cdn ) @@ -769,13 +769,15 @@ GLOBAL_PROTECT(admin_verbs_hideable) log_admin("[key_name(usr)] has [AI_Interact ? "activated" : "deactivated"] Admin AI Interact") message_admins("[key_name_admin(usr)] has [AI_Interact ? "activated" : "deactivated"] their AI interaction") -/*/client/proc/dump_memory_usage() +/client/proc/dump_memory_usage() set name = "Dump Server Memory Usage" set category = "Server" - if(!check_rights(R_SERVER)) + if(!check_rights(R_DEV)) + return + if(GLOB.enable_memdump == 0) + to_chat(world, span_userdanger("You should not be touching this without contacting developers!")) return - if(alert(usr, "This will dump memory usage and potentially lag the server. Proceed?", "Alert", "Yes", "No") != "Yes") return @@ -794,7 +796,7 @@ GLOBAL_PROTECT(admin_verbs_hideable) if(!fexists("data/logs/memory/[fname]")) to_chat(usr, span_warning("File creation failed. Please check to see if the data/logs/memory folder actually exists.")) else - to_chat(usr, span_notice("Memory dump completed."))*/ + to_chat(usr, span_notice("Memory dump completed.")) /client/proc/debugstatpanel() diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index cbd28060c210..8e59e5cd9b48 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -779,6 +779,11 @@ structure_check() searches for nearby cultist structures required for the invoca fail_invoke() log_game("Summon Cultist rune failed - target in away mission") return + if(is_centcom_level(cultist_to_summon.z)) + to_chat(user, "[cultist_to_summon] is too far from the station!") + fail_invoke() + log_game("Summon Cultist rune failed - target in centcom Z") + return if(istype(cultist_to_summon, /mob/living/simple_animal/shade) && (cultist_to_summon.status_flags & GODMODE))//yogs: fixes shades from being invincible after being summoned cultist_to_summon.status_flags &= ~GODMODE //yogs end cultist_to_summon.visible_message(span_warning("[cultist_to_summon] suddenly disappears in a flash of red light!"), \ diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 734781067d22..164ef62ff4a7 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -205,6 +205,7 @@ name = "Bind Soul" spell_type = /obj/effect/proc_holder/spell/targeted/lichdom category = "Defensive" + cost = 4 /datum/spellbook_entry/teslablast name = "Tesla Blast" diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm index 7774b7bfad18..56081bf06bf2 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_burger.dm @@ -313,4 +313,15 @@ ) result = /obj/item/reagent_containers/food/snacks/hotdog subcategory = CAT_BURGER - + +/datum/crafting_recipe/food/roburger + name = "Roburger" + reqs = list( + /obj/item/bodypart/head/robot = 1, + /obj/item/reagent_containers/food/snacks/bun = 1, + /obj/item/stack/cable_coil = 10, + ) + result = /obj/item/reagent_containers/food/snacks/burger/roburger + subcategory = CAT_MISCFOOD + always_availible = FALSE + diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 797830684853..c2c8b3f3b361 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -501,6 +501,37 @@ update_stat() med_hud_set_health() med_hud_set_status() + update_health_hud() + +/mob/living/update_health_hud() + if(hud_used?.healths) + var/severity = 0 + var/healthpercent = (health/maxHealth) * 100 + switch(healthpercent) + if(100 to INFINITY) + hud_used.healths.icon_state = "health0" + if(80 to 100) + hud_used.healths.icon_state = "health1" + severity = 1 + if(60 to 80) + hud_used.healths.icon_state = "health2" + severity = 2 + if(40 to 60) + hud_used.healths.icon_state = "health3" + severity = 3 + if(20 to 40) + hud_used.healths.icon_state = "health4" + severity = 4 + if(1 to 20) + hud_used.healths.icon_state = "health5" + severity = 5 + else + hud_used.healths.icon_state = "health7" + severity = 6 + if(severity > 0) + overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) + else + clear_fullscreen("brute") //proc used to ressuscitate a mob /mob/living/proc/revive(full_heal = 0, admin_revive = 0) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 3a0efc8fa7b0..2cb9153bed39 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -5,6 +5,8 @@ hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD,NANITE_HUD,DIAG_NANITE_FULL_HUD) pressure_resistance = 10 + hud_type = /datum/hud/living + var/resize = 1 //Badminnery resize var/lastattacker = null var/lastattackerckey = null diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm index 2dfa4c2645b8..a0fcad4f8568 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -51,14 +51,14 @@ if(ishuman(host_mob)) var/mob/living/carbon/human/H = host_mob H.physiology.armor.laser += 30 - H.physiology.armor.energy += 25 + H.physiology.armor.energy += 15 /datum/nanite_program/refractive/disable_passive_effect() . = ..() if(ishuman(host_mob)) var/mob/living/carbon/human/H = host_mob H.physiology.armor.laser -= 30 - H.physiology.armor.energy -= 25 + H.physiology.armor.energy -= 15 /datum/nanite_program/coagulating name = "Vein Repressurization" diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index b560e7790915..d8896ad88966 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -5,6 +5,10 @@ /mob/living/carbon/get_bodypart(zone) if(!zone) zone = BODY_ZONE_CHEST + if(zone == BODY_ZONE_PRECISE_MOUTH || zone == BODY_ZONE_PRECISE_EYES) //yes this is required. + zone = BODY_ZONE_HEAD + if(zone == BODY_ZONE_PRECISE_GROIN) + zone = BODY_ZONE_CHEST for(var/X in bodyparts) var/obj/item/bodypart/L = X if(L.body_zone == zone) diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 5ce9f887dd0c..7cdbb26e01d1 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -52,7 +52,8 @@ /datum/surgery_step/clamp_bleeders/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(locate(/datum/surgery_step/saw) in surgery.steps) - target.apply_damage(-20, BRUTE, "[target_zone]") + var/obj/item/bodypart/affecting = target.get_bodypart(target_zone) + affecting?.heal_damage(20,0) if (ishuman(target)) var/mob/living/carbon/human/H = target var/obj/item/bodypart/BP = H.get_bodypart(target_zone) @@ -94,7 +95,8 @@ /datum/surgery_step/close/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(locate(/datum/surgery_step/saw) in surgery.steps) - target.apply_damage(-45, BRUTE, "[target_zone]") + var/obj/item/bodypart/affecting = target.get_bodypart(target_zone) + affecting?.heal_damage(45,0) if (ishuman(target)) var/mob/living/carbon/human/H = target var/obj/item/bodypart/BP = H.get_bodypart(target_zone) diff --git a/code/modules/surgery/organs/tails.dm b/code/modules/surgery/organs/tails.dm index 782947f9936b..7d8ab3609926 100644 --- a/code/modules/surgery/organs/tails.dm +++ b/code/modules/surgery/organs/tails.dm @@ -29,7 +29,6 @@ /obj/item/organ/tail/cat/Remove(mob/living/carbon/human/H, special = 0) ..() if(istype(H)) - H.dna.features["tail_human"] = "None" H.dna.species.mutant_bodyparts -= "tail_human" color = H.hair_color H.update_body() diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index 026446730e1a..e8554be7f799 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -174,6 +174,7 @@ user.visible_message(detailed_message, self_message, vision_distance = 1, ignored_mobs = target_detailed ? null : target) user.visible_message(vague_message, "", ignored_mobs = detailed_mobs) +///Attempts to deal damage if the patient isn't sedated or under painkillers /datum/surgery_step/proc/cause_ouchie(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, success) var/ouchie_mod = 1 for(var/datum/reagent/R in ouchie_modifying_chems) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 649270234850..aa3f8c1d490c 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -1537,6 +1537,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) include_objectives = list(/datum/objective/hijack, /datum/objective/martyr, /datum/objective/nuclear) //yogs exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration +/datum/uplink_item/device_tools/roburger_recipe + name = "Roburger crafting recipe" + desc = "This book contains legendary knowledge about how to make roburgers. \ + Roburgers turn people into cyborgs after a short while when eaten. \ + This book doesn't dissaper after use, so consider hiding it somewhere." + item = /obj/item/book/granter/crafting_recipe/roburgers + cost = 14 + include_objectives = list(/datum/objective/hijack, /datum/objective/martyr, /datum/objective/nuclear) + exclude_modes = list(/datum/game_mode/infiltration) + /datum/uplink_item/device_tools/supermatter_delaminator name = "Antinoblium Shard" desc = "A special variant of supermatter crystal reverse engineered by syndicate scientists using samples retrieved by agents. \ diff --git a/config/admin_ranks.txt b/config/admin_ranks.txt index 82b2898f9c46..46ea5245f847 100644 --- a/config/admin_ranks.txt +++ b/config/admin_ranks.txt @@ -31,6 +31,7 @@ # +AUTOLOGIN = admin gains powers upon connect. This defaults to on, you can use -AUTOLOGIN to make a role require using the readmin verb to gain powers. (this does not effect the admin's ability to walk past bans or other on-connect limitations like panic bunker or pop limit.) # +DBRANKS = when sql-based admin loading is enabled, allows for non-temporary changes in the permissions panel to be saved (requires DB) # +EVERYTHING (or +HOST or +ALL) = Simply gives you everything without having to type every flag +# +DEV = For potentially server ending procs # END_KEYWORDS @@ -42,27 +43,25 @@ Head Developer = +EVERYTHING *EVERYTHING SysOp = +EVERYTHING *EVERYTHING -#Senior Admin = +EVERYTHING *EVERYTHING +#Senior Admin = +EVERYTHING *EVERYTHING -DEV -#Community Manager = +EVERYTHING *EVERYTHING +#Community Manager = +EVERYTHING *EVERYTHING -DEV #Primary Admin = +STEALTH +ADMIN +BASIC +BAN +SPAWN +VAREDIT +DEBUG +SERVER +FUN +POSSESS +BUILD +TICKET +SOUND -#Administrator-Mainterino = +STEALTH +ADMIN +BASIC +BAN +SPAWN +VAREDIT +DEBUG +SERVER +FUN +TICKET +BUILD +POLL +#Administrator-Mainterino = +STEALTH +ADMIN +BASIC +BAN +SPAWN +VAREDIT +DEBUG +SERVER +FUN +TICKET +BUILD +POLL +DEV #Administrator = +STEALTH +ADMIN +BASIC +BAN +SPAWN +VAREDIT +DEBUG +SERVER +FUN +TICKET +BUILD -#Moderator-Mainterino = +STEALTH +ADMIN +VAREDIT +DEBUG +SERVER +BASIC +SPAWN +POLL +BAN +#Moderator-Mainterino = +STEALTH +ADMIN +VAREDIT +DEBUG +SERVER +BASIC +SPAWN +POLL +BAN +DEV #Moderator = +STEALTH +ADMIN +BASIC +BAN +TICKET #Retired Admin = +ADMIN +STEALTH +BASIC +SERVER +BAN +TICKET +VAREDIT #Admin Observer = +STEALTH - -#RetCoder = +EVERYTHING - -#Maintainer = +STEALTH +ADMIN +VAREDIT +DEBUG +SERVER +BASIC +SPAWN +POLL -AUTOLOGIN + +#Maintainer = +STEALTH +ADMIN +VAREDIT +DEBUG +SERVER +BASIC +SPAWN +POLL -AUTOLOGIN +DEV #LogDiver = diff --git a/config/game_options.txt b/config/game_options.txt index 3d1817a2ef79..b0eafa7b0e22 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -444,7 +444,7 @@ LAW_WEIGHT robocop,0 ION_LAW_WEIGHT robocop,2 LAW_WEIGHT corporate,0 ION_LAW_WEIGHT corporate,0 -LAW_WEIGHT ceo,5 +LAW_WEIGHT ceo,4 ION_LAW_WEIGHT ceo,1 ## Quirky laws. Shouldn't cause too much harm diff --git a/html/changelog.html b/html/changelog.html index ef1dc9702933..aca2e498d91c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -58,6 +58,93 @@ -->