Skip to content

Commit

Permalink
Merge pull request #132 from Very-Soft/art
Browse files Browse the repository at this point in the history
Mawful
  • Loading branch information
Very-Soft authored Feb 4, 2024
2 parents a1bbe05 + d8015f8 commit c936c62
Show file tree
Hide file tree
Showing 10 changed files with 200 additions and 57 deletions.
9 changes: 9 additions & 0 deletions code/controllers/configuration.dm
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ var/list/gamemode_cache = list()
var/static/drone_build_time = 1200 //A drone will become available every X ticks since last drone spawn. Default is 2 minutes.

var/static/disable_player_mice = 0
var/static/allow_ghost_mob_spawn = 1 //RS ADD - Allows players to spawn as mobs
var/static/ghost_mob_count = 5 //RS ADD - How many mobs are allowed to spawn from ghosts

var/static/uneducated_mice = 0 //Set to 1 to prevent newly-spawned mice from understanding human speech

var/static/usealienwhitelist = 0
Expand Down Expand Up @@ -767,6 +770,12 @@ var/list/gamemode_cache = list()
if("disable_player_mice")
config.disable_player_mice = 1

if("disable_ghost_mob_spawn") //RS ADD START
config.allow_ghost_mob_spawn = FALSE

if("ghost_mob_count")
config.ghost_mob_count = value //RS ADD END

if("uneducated_mice")
config.uneducated_mice = 1

Expand Down
51 changes: 2 additions & 49 deletions code/game/objects/structures/ghost_pods/event_vr.dm
Original file line number Diff line number Diff line change
Expand Up @@ -15,53 +15,6 @@
invisibility = INVISIBILITY_OBSERVER
spawn_active = TRUE
var/announce_prob = 35
var/list/possible_mobs = list("Rabbit" = /mob/living/simple_mob/vore/rabbit,
"Red Panda" = /mob/living/simple_mob/vore/redpanda,
"Fennec" = /mob/living/simple_mob/vore/fennec,
"Fennix" = /mob/living/simple_mob/vore/fennix,
"Space Bumblebee" = /mob/living/simple_mob/vore/bee,
"Space Bear" = /mob/living/simple_mob/animal/space/bear,
"Voracious Lizard" = /mob/living/simple_mob/vore/aggressive/dino,
"Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog,
"Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat,
"Jelly Blob" = /mob/living/simple_mob/vore/jelly,
"Wolf" = /mob/living/simple_mob/vore/wolf,
"Juvenile Solargrub" = /mob/living/simple_mob/vore/solargrub,
"Sect Queen" = /mob/living/simple_mob/vore/sect_queen,
"Sect Drone" = /mob/living/simple_mob/vore/sect_drone,
"Defanged Xenomorph" = /mob/living/simple_mob/vore/xeno_defanged,
"Panther" = /mob/living/simple_mob/vore/aggressive/panther,
"Giant Snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
"Deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw,
"Otie" = /mob/living/simple_mob/vore/otie,
"Mutated Otie" =/mob/living/simple_mob/vore/otie/feral,
"Red Otie" = /mob/living/simple_mob/vore/otie/red,
"Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound,
"Corrupt Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi,
"Hunter Giant Spider" = /mob/living/simple_mob/animal/giant_spider/hunter,
"Lurker Giant Spider" = /mob/living/simple_mob/animal/giant_spider/lurker,
"Pepper Giant Spider" = /mob/living/simple_mob/animal/giant_spider/pepper,
"Thermic Giant Spider" = /mob/living/simple_mob/animal/giant_spider/thermic,
"Webslinger Giant Spider" = /mob/living/simple_mob/animal/giant_spider/webslinger,
"Frost Giant Spider" = /mob/living/simple_mob/animal/giant_spider/frost,
"Nurse Giant Spider" = /mob/living/simple_mob/animal/giant_spider/nurse/eggless,
"Giant Spider Queen" = /mob/living/simple_mob/animal/giant_spider/nurse/queen/eggless,
"Weretiger" = /mob/living/simple_mob/vore/weretiger,
"Catslug" = /mob/living/simple_mob/vore/alienanimals/catslug,
"Squirrel" = /mob/living/simple_mob/vore/squirrel/big,
"Pakkun" =/mob/living/simple_mob/vore/pakkun,
"Snapdragon" =/mob/living/simple_mob/vore/pakkun/snapdragon,
"Sand pakkun" = /mob/living/simple_mob/vore/pakkun/sand,
"Fire pakkun" = /mob/living/simple_mob/vore/pakkun/fire,
"Amethyst pakkun" = /mob/living/simple_mob/vore/pakkun/purple,
"Raptor" = /mob/living/simple_mob/vore/raptor,
"Giant Bat" = /mob/living/simple_mob/vore/bat,
"Scel (Orange)" = /mob/living/simple_mob/vore/scel/orange,
"Scel (Blue)" = /mob/living/simple_mob/vore/scel/blue,
"Scel (Purple)" = /mob/living/simple_mob/vore/scel/purple,
"Scel (Red)" = /mob/living/simple_mob/vore/scel/red,
"Scel (Green)" = /mob/living/simple_mob/vore/scel/green
)

/obj/structure/ghost_pod/ghost_activated/maintpred/create_occupant(var/mob/M)
..()
Expand All @@ -74,7 +27,7 @@
return

while(finalized == "No" && M.client)
choice = tgui_input_list(M, "What type of predator do you want to play as?", "Maintpred Choice", possible_mobs)
choice = tgui_input_list(M, "What type of predator do you want to play as?", "Maintpred Choice", GLOB.ghost_spawnable_mobs) //RS EDIT
if(!choice) //We probably pushed the cancel button on the mob selection. Let's just put the ghost pod back in the list.
to_chat(M, "<span class='notice'>No mob selected, cancelling.</span>")
reset_ghostpod()
Expand All @@ -87,7 +40,7 @@
reset_ghostpod()
return

var/mobtype = possible_mobs[choice]
var/mobtype = GLOB.ghost_spawnable_mobs[choice]
var/mob/living/simple_mob/newPred = new mobtype(get_turf(src))
qdel(newPred.ai_holder)
newPred.ai_holder = null
Expand Down
1 change: 1 addition & 0 deletions code/modules/admin/admin_verb_lists_vr.dm
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ var/list/admin_verbs_admin = list(
/client/proc/fixatmos,
/datum/admins/proc/quick_nif, //VOREStation Add,
/datum/admins/proc/set_uplink, //VOREStation Add,
/datum/admins/proc/add_ghost_mob_spawns, //RS ADD,
/datum/admins/proc/sendFax,
/client/proc/despawn_player,
/datum/admins/proc/view_feedback,
Expand Down
138 changes: 138 additions & 0 deletions code/modules/mob/ghost_simplemob_spawn.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
GLOBAL_VAR_INIT(ghost_mob_spawn_count, 0)
GLOBAL_LIST_INIT(ghost_spawnable_mobs,list(
"Rabbit" = /mob/living/simple_mob/vore/rabbit,
"Red Panda" = /mob/living/simple_mob/vore/redpanda,
"Fennec" = /mob/living/simple_mob/vore/fennec,
"Fennix" = /mob/living/simple_mob/vore/fennix,
"Space Bumblebee" = /mob/living/simple_mob/vore/bee,
"Space Bear" = /mob/living/simple_mob/animal/space/bear,
"Voracious Lizard" = /mob/living/simple_mob/vore/aggressive/dino,
"Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog,
"Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat,
"Jelly Blob" = /mob/living/simple_mob/vore/jelly,
"Wolf" = /mob/living/simple_mob/vore/wolf,
"Juvenile Solargrub" = /mob/living/simple_mob/vore/solargrub,
"Sect Queen" = /mob/living/simple_mob/vore/sect_queen,
"Sect Drone" = /mob/living/simple_mob/vore/sect_drone,
"Defanged Xenomorph" = /mob/living/simple_mob/vore/xeno_defanged,
"Panther" = /mob/living/simple_mob/vore/aggressive/panther,
"Giant Snake" = /mob/living/simple_mob/vore/aggressive/giant_snake,
"Deathclaw" = /mob/living/simple_mob/vore/aggressive/deathclaw,
"Otie" = /mob/living/simple_mob/vore/otie,
"Mutated Otie" =/mob/living/simple_mob/vore/otie/feral,
"Red Otie" = /mob/living/simple_mob/vore/otie/red,
"Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound,
"Corrupt Corrupt Hound" = /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi,
"Hunter Giant Spider" = /mob/living/simple_mob/animal/giant_spider/hunter,
"Lurker Giant Spider" = /mob/living/simple_mob/animal/giant_spider/lurker,
"Pepper Giant Spider" = /mob/living/simple_mob/animal/giant_spider/pepper,
"Thermic Giant Spider" = /mob/living/simple_mob/animal/giant_spider/thermic,
"Webslinger Giant Spider" = /mob/living/simple_mob/animal/giant_spider/webslinger,
"Frost Giant Spider" = /mob/living/simple_mob/animal/giant_spider/frost,
"Nurse Giant Spider" = /mob/living/simple_mob/animal/giant_spider/nurse/eggless,
"Giant Spider Queen" = /mob/living/simple_mob/animal/giant_spider/nurse/queen/eggless,
"Weretiger" = /mob/living/simple_mob/vore/weretiger,
"Catslug" = /mob/living/simple_mob/vore/alienanimals/catslug,
"Squirrel" = /mob/living/simple_mob/vore/squirrel/big,
"Pakkun" =/mob/living/simple_mob/vore/pakkun,
"Snapdragon" =/mob/living/simple_mob/vore/pakkun/snapdragon,
"Sand pakkun" = /mob/living/simple_mob/vore/pakkun/sand,
"Fire pakkun" = /mob/living/simple_mob/vore/pakkun/fire,
"Amethyst pakkun" = /mob/living/simple_mob/vore/pakkun/purple,
"Raptor" = /mob/living/simple_mob/vore/raptor,
"Giant Bat" = /mob/living/simple_mob/vore/bat,
"Scel (Orange)" = /mob/living/simple_mob/vore/scel/orange,
"Scel (Blue)" = /mob/living/simple_mob/vore/scel/blue,
"Scel (Purple)" = /mob/living/simple_mob/vore/scel/purple,
"Scel (Red)" = /mob/living/simple_mob/vore/scel/red,
"Scel (Green)" = /mob/living/simple_mob/vore/scel/green
))

/mob/observer/dead/verb/join_as_simplemob() //Copypasta from join_as_drone()
set category = "Ghost"
set name = "Join As Mob"
set desc = "Join as a simple mob if conditions are right!"

if(ticker.current_state < GAME_STATE_PLAYING)
to_chat(src, "<span class='danger'>The game hasn't started yet!</span>")
return

if(!(config.allow_ghost_mob_spawn))
to_chat(src, "<span class='danger'>That verb is not currently permitted.</span>")
return

if (!src.stat)
return

if (usr != src)
return 0 //something is terribly wrong

if(jobban_isbanned(src, "GhostRoles"))
to_chat(usr, "<span class='danger'>You are banned from playing as ghost roles, and so can not spawn as a mob.</span>")
return

if(GLOB.ghost_mob_spawn_count >= config.ghost_mob_count)
to_chat(src, "<span class='danger'>Too many mobs have already been spawned, you can not spawn as a mob at this time.</span>")
return

if(!MayRespawn(1))
return

var/deathtime = world.time - src.timeofdeath
var/deathtimeminutes = round(deathtime / (1 MINUTE))
var/pluralcheck = "minute"
if(deathtimeminutes == 0)
pluralcheck = ""
else if(deathtimeminutes == 1)
pluralcheck = " [deathtimeminutes] minute and"
else if(deathtimeminutes > 1)
pluralcheck = " [deathtimeminutes] minutes and"
var/deathtimeseconds = round((deathtime - deathtimeminutes * 1 MINUTE) / 10,1)

if (deathtime < 5 MINUTES)
to_chat(usr, "You have been dead for[pluralcheck] [deathtimeseconds] seconds.")
to_chat(usr, "You must wait 5 minutes to spawn as a mob!")
return

var/choice = tgui_input_list(src, "What type of mob do you want to spawn as?", "Mob Choice", GLOB.ghost_spawnable_mobs)
if(!choice)
return

for(var/mob/living/sus in viewers(get_turf(src))) //We can spawn the mob literally anywhere,
if(!isliving(sus)) //but let's make sure that people playing in the round can't see us when we spawn
continue
if(sus.ckey)
to_chat(src, "<span class='danger'>\The [sus] can see you here, try somewhere more discreet!</span>")
return

var/mobtype = GLOB.ghost_spawnable_mobs[choice]
var/mob/living/simple_mob/newPred = new mobtype(get_turf(src))
qdel(newPred.ai_holder)
newPred.ai_holder = null
if(mind)
mind.transfer_to(newPred)
to_chat(src, "<span class='notice'>You are <b>[newPred]</b>, somehow having gotten aboard the station in search of food. \
You are wary of environment around you, but you do feel rather peckish. Stick around dark, secluded places to avoid danger or, \
if you are cute enough, try to make friends with this place's inhabitants.</span>")
to_chat(src, "<span class='critical'>Please be advised, this role is NOT AN ANTAGONIST.</span>")
to_chat(src, "<span class='warning'>You may be a spooky space monster, but your role is to facilitate spooky space monster roleplay, not to fight the station and kill people. You can of course eat and/or digest people as you like if OOC prefs align, but this should be done as part of roleplay. If you intend to fight the station and kill people and such, you need permission from the staff team. GENERALLY, this role should avoid well populated areas. You’re a weird spooky space monster, so the bar is probably not where you’d want to go if you intend to survive. Of course, you’re welcome to try to make friends and roleplay how you will in this regard, but something to keep in mind.</span>")

log_and_message_admins("[newPred.ckey] used Join As Mob to become a [newPred].")
GLOB.ghost_mob_spawn_count ++

newPred.ckey = src.ckey
newPred.visible_message("<span class='warning'>[newPred] emerges from somewhere!</span>")

/datum/admins/proc/add_ghost_mob_spawns()
set category = "Fun"
set name = "Adjust total ghost mob spawns"
set desc = "Lets you adjust how many mobs ghosts can spawn as."

if(!check_rights(R_ADMIN))
return

var/amount = tgui_input_number(usr, "How many mobs should ghosts be able to spawn as?", "How many mobs", config.ghost_mob_count)
if(amount)
config.ghost_mob_count = amount
else
to_chat(usr, "<span class='warning'>Cancelled. The value was not updated.</span>")
Binary file modified icons/mob/screen_full_colorized_vore.dmi
Binary file not shown.
Binary file modified icons/mob/screen_full_colorized_vore_overlays.dmi
Binary file not shown.
Binary file modified icons/mob/screen_full_vore.dmi
Binary file not shown.
22 changes: 19 additions & 3 deletions maps/groundbase/rp-z1.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -3994,6 +3994,14 @@
},
/turf/simulated/floor,
/area/groundbase/cargo/mining)
"egk" = (
/obj/effect/landmark{
name = "maint_pred"
},
/turf/simulated/floor/outdoors/newdirt{
outdoors = 0
},
/area/groundbase/level1/ne)
"egG" = (
/turf/simulated/floor/outdoors/grass/seasonal/dark,
/area/groundbase/level1/nw)
Expand Down Expand Up @@ -9352,6 +9360,14 @@
/obj/structure/sign/department/telecoms,
/turf/simulated/wall/r_wall,
/area/groundbase/command/tcomms/foyer)
"jNJ" = (
/obj/effect/landmark{
name = "maint_pred"
},
/turf/simulated/floor/outdoors/newdirt{
outdoors = 0
},
/area/groundbase/level1/nw)
"jNK" = (
/obj/machinery/optable,
/turf/simulated/floor/tiled/white,
Expand Down Expand Up @@ -25644,7 +25660,7 @@ eHS
eHS
eHS
eHS
eHS
jNJ
iuY
kyu
oeu
Expand Down Expand Up @@ -28735,7 +28751,7 @@ awx
kyu
kyu
eHS
eHS
jNJ
tpV
wNr
tpV
Expand Down Expand Up @@ -37965,7 +37981,7 @@ awx
awx
awx
awx
irP
egk
khe
kBO
kkl
Expand Down
33 changes: 29 additions & 4 deletions maps/groundbase/rp-z2.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,14 @@
"cc" = (
/turf/simulated/wall/r_wall,
/area/groundbase/dorms/bathroom)
"ce" = (
/obj/effect/landmark{
name = "maint_pred"
},
/turf/simulated/floor/outdoors/newdirt{
outdoors = 0
},
/area/groundbase/level2/nw)
"cg" = (
/obj/effect/floor_decal/chapel,
/obj/structure/disposalpipe/segment,
Expand Down Expand Up @@ -5252,6 +5260,14 @@
},
/turf/simulated/floor/tiled/white,
/area/groundbase/medical/Chemistry)
"tu" = (
/obj/effect/landmark{
name = "maint_pred"
},
/turf/simulated/floor/outdoors/newdirt{
outdoors = 0
},
/area/groundbase/level2/se)
"tv" = (
/obj/structure/sign/directions/cryo{
dir = 8;
Expand Down Expand Up @@ -9390,6 +9406,9 @@
/area/groundbase/civilian/library)
"Jb" = (
/obj/machinery/hologram/holopad,
/obj/effect/landmark{
name = "maint_pred"
},
/turf/simulated/floor/tiled{
edge_blending_priority = -1;
outdoors = 0
Expand Down Expand Up @@ -13253,6 +13272,12 @@
},
/turf/simulated/floor/tiled,
/area/rnd/xenobiology)
"Wk" = (
/obj/effect/landmark{
name = "maint_pred"
},
/turf/simulated/floor/outdoors/newdirt,
/area/groundbase/level2/ne)
"Wl" = (
/obj/structure/cable/yellow{
icon_state = "1-4"
Expand Down Expand Up @@ -16426,7 +16451,7 @@ rh
bG
bG
bG
bG
ce
rh
rh
rh
Expand Down Expand Up @@ -24252,7 +24277,7 @@ Gy
Gy
Tb
Tb
Tb
Wk
Tb
Ng
Gy
Expand Down Expand Up @@ -25388,7 +25413,7 @@ Gy
Tb
Gy
Gy
Tb
Wk
Tb
Ng
Tb
Expand Down Expand Up @@ -30707,7 +30732,7 @@ rh
rh
kp
kp
si
tu
si
si
kp
Expand Down
Loading

0 comments on commit c936c62

Please sign in to comment.